0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIへの指示Versionとテスト結果を一緒に記録し、失敗が戻った変更を追う方法

0
Posted at

AIへの指示Versionとテスト結果を一緒に記録し、失敗が戻った変更を追う方法

AIへの指示Versionとテスト結果を同じ履歴で追い、失敗が戻った変更を探す

AIへの指示を少しずつ改善し、変更のたびにテストも残すようになると、次の問題が出てきます。

あるテストが昨日は合格していたのに、今日の指示では失敗した。しかし、どの変更で戻ったのか分からない。指示文は更新されているものの、テスト結果には「合格」とだけ書かれている。逆に、失敗記録はあるのに、当時どの指示を使ったのか残っていない。

これでは、AIの出力が変わった理由を追えません。

そこで私は、指示とテストを別々のメモとして管理せず、次の3点を同じ記録で結びます。

  • どの指示Versionを使ったか
  • どのテストケースを実行したか
  • 期待と実際の結果がどう違ったか

この記事では、AIへの指示を変えたあとに失敗が戻ったとき、変更履歴を総当たりせず、原因候補を小さく絞るための記録方法を整理します。

指示本文を上書きするだけでは追えない

AIへの指示を1つのファイルで管理し、毎回上書きしていると、現在の内容は分かっても、過去のテストを再現できません。

たとえば、次の変更を順番に行ったとします。

v1:資料が不足したら確認を返す
v2:資料が矛盾したら本文を作らず停止する
v3:文章を短くするため、確認項目を3件までにまとめる

v3にしたあと、4件目の矛盾が表示されなくなったとします。現在の指示だけを見ても、もともと表示できていたのか、どの変更から欠落したのか分かりません。

v2で同じ入力が合格し、v3で不合格になった記録があれば、確認項目を3件にまとめた変更を最初の調査対象にできます。

重要なのは、指示の文章を保存することだけではありません。その指示で、どの入力に対して、何を期待し、実際にどう動いたかを結びつけることです。

指示Version、テストケース、実行結果を1つの記録で結びつける

変更ごとに短いVersionを付ける

指示Versionは、壮大な番号でなくてかまいません。日付と連番、または短い番号で、一意に参照できれば十分です。

instruction-2026-10-30-01
instruction-2026-10-30-02

Versionには、少なくとも次を残します。

項目 内容
Version 一意に参照する識別子
変更日時 いつ有効にしたか
変更した箇所 追加・削除・書き換えた範囲
変更理由 どの誤りや要求に対応したか
期待する変化 進む条件、止まる条件、出力形式
変更しない境界 公開、個人情報、削除など維持する条件
承認 誰が使用開始を確認したか

指示全文も保存します。差分だけでは、後から前提を再現できない場合があるからです。ただし、指示ファイルへ認証情報、個人情報、顧客データを入れません。

変更理由は「改善」だけにせず、何を防ぐためかを書きます。

## instruction-2026-10-30-02
- 変更:矛盾が1件でもある場合は本文を生成しない条件を追加
- 理由:確認一覧を出したあと、本文では片方の日付を採用したため
- 期待:矛盾した値と出典だけを返し、本文生成前に停止
- 維持:正常ケースでは下書きを作成できる

これなら、テストが失敗したとき、変更の目的と実際の結果を比較できます。

テストケースにも変わらないIDを付ける

テスト名だけでは、同じケースか判断できません。「矛盾テスト」という名前を使い回すと、日付の矛盾と公開範囲の矛盾が混ざります。

ケースには固定IDを付けます。

T-001 必須情報が不足したら推測せず停止する
T-002 複数資料の日付が矛盾したら両方を示して停止する
T-003 Human Approvalがなければ公開しない
T-004 条件が揃っているときは確認用下書きを作る

入力を修正した場合は、同じIDを黙って上書きしません。期待する境界が同じで、表現だけを整理したならケースのRevisionを上げます。守る境界や期待する停止位置が変わったなら、新しいケースとして分けます。

T-002 r1:資料Aと資料Bで開催日が違う
T-002 r2:資料名と更新日時を追加。守る境界は同じ
T-005 r1:公式情報と取材メモの優先順位を人が指定した場合

ケースIDとRevisionを分けると、AIの指示が変わったのか、テスト入力が変わったのかを区別できます。

1回の実行を1行で記録する

テスト結果は「全件合格」だけでまとめません。最低限、1ケースにつき1行を残します。

実行ID 指示Version ケース 期待 実際 判定 外部操作
R-101 2026-10-30-01 T-002 r1 矛盾を示して停止 片方を本文へ採用 不合格 なし
R-102 2026-10-30-02 T-002 r1 矛盾を示して停止 本文前に停止 合格 なし
R-103 2026-10-30-02 T-004 r1 下書きを作る 下書きを作成 合格 なし

可能なら、次も残します。

  • 実行日時
  • 使用したAIやモデルの識別情報
  • 指示ファイルのハッシュまたはコミット
  • 入力データのRevision
  • 出力の保存先
  • 人間の判定者
  • 再実行が必要な条件

モデル名だけで結果を説明しないことも大切です。同じモデルでも、指示、入力、利用できるツール、会話の文脈が違えば結果は変わります。再現に必要な条件を、確認できる範囲で残します。

また、テストでは公開API、実在の送信先、削除権限を使いません。外部操作の有無を記録し、「なし」が期待どおりであることを確認します。

合格から不合格へ変わった境界を探す

失敗が戻ったら、最初に現在の出力だけを直そうとしません。同じケースの履歴を、古い順に並べます。

T-003 Human Approvalなしでは公開しない

v5:合格
v6:合格
v7:不合格
v8:不合格

この場合、最初に見るのはv6とv7の差分です。v1から現在までの全指示を読み比べる必要はありません。

次に、v7で変更した箇所がT-003の境界へ影響し得るかを確認します。

  • 公開条件を短くまとめた
  • 承認済みの定義を変えた
  • 「下書き保存は可」という例を追加した
  • ツール実行の条件を別の節へ移した

文章上は別の目的の変更でも、AIが参照する優先順位や例示を変えていることがあります。変更理由だけで無関係と決めず、差分と出力を並べます。

最後の合格と最初の不合格の間を調べ、原因候補を絞る

原因候補を確かめるときは条件を1つだけ戻す

v6では合格、v7では不合格だったとしても、v7の変更が原因と断定はできません。入力や実行条件も変わっているかもしれません。

確認するときは、一度に全部を書き直さず、条件を1つだけ変えます。

確認A:v6の指示 + 同じケース入力 → 合格
確認B:v7の指示 + 同じケース入力 → 不合格
確認C:v7から疑わしい変更だけ外す + 同じ入力 → 合格

この結果なら、疑わしい変更が原因である可能性は高まります。ただし、1回の出力だけで断定しません。重要な境界は再実行し、正常ケースにも悪影響がないか確認します。

失敗したケースだけを合格させる修正も危険です。たとえば「承認がなければ必ず停止」を強くしすぎると、外部操作を含まない下書き作成まで止まることがあります。

そのため、修正後は少なくとも次を組にします。

  • 失敗が戻ったケース
  • その境界の直前で進んでよいケース
  • 公開、個人情報、削除など影響の大きい共通ケース

停止できることと、条件が揃えば進めることの両方を確認します。

指示変更と実行環境の変更を混ぜない

指示を変えた日と同じ日に、AIのモデル、ツール権限、参照ファイル、入力形式まで変えると、結果が変わった理由を切り分けにくくなります。

記録では、少なくとも次を別の欄にします。

指示変更:矛盾時の停止条件を追加
環境変更:なし
入力変更:なし
ツール変更:なし

複数の変更が必要な場合は、変更単位を分けるか、同時に変えたことを明記します。後から都合よく「指示のせい」「モデルのせい」と決めません。

AIの出力には揺れがあります。そのため、完全な再現を約束する記録ではなく、何を固定し、何が変わったかを人間が追える記録を目指します。

失敗を見つけても、すぐ古いVersionへ戻さない

回帰を見つけたとき、直前Versionへ戻すのが安全に見えることがあります。しかし、直前の変更が別の重大な問題を直している場合、単純な巻き戻しでその問題を復活させます。

戻す前に確認します。

  • 変更理由は何だったか
  • どのテストを新しく合格させたか
  • どの境界を維持する必要があるか
  • 一部だけ修正できるか
  • 本番利用を一時停止すべきか

公開、更新、削除、外部送信、個人情報、安全に関わる不合格なら、原因調査中はその操作を止めます。AIに代替の指示を書かせ、そのまま本番へ適用しません。

AIは差分整理、候補の抽出、過去結果の一覧化を手伝えます。どのVersionを採用するか、テスト範囲を十分とみなすか、本番利用を再開するかは人間が判断します。

記録を残す場所を1つに決める

指示はファイル、結果はチャット、承認は口頭、という状態では結びつけられません。最低限、参照先を1つの索引へ集めます。

# AI指示テスト実行記録

## 実行情報
- 実行ID:R-103
- 実行日時:2026-10-30 09:20 JST
- 指示Version:instruction-2026-10-30-02
- 指示commit:abc1234
- ケース:T-004 r1
- 入力Revision:input-01
- 外部操作:なし

## 判定
- 期待:確認済み情報だけで下書きを作る
- 実際:下書きを作成し、未確認項目は分離
- 判定:合格
- 判定者:本人

## 関連
- 前回実行:R-099
- 変更理由:T-002の回帰修正後、正常ケースへの影響を確認
- 出力保存先:outputs/R-103.md

指示全文や出力が別ファイルでも、Versionと実行IDからたどれるようにします。公開できない情報を含む場合は、公開リポジトリへ置かず、アクセス範囲を分けます。

記録、比較、修正、再テスト、承認を小さな回帰確認の流れにする

AIに任せる部分と人間が決める部分

AIは、履歴が同じ形式で残っていれば、次の補助ができます。

  • 同じケースIDの結果を時系列に並べる
  • 最後の合格と最初の不合格を探す
  • 2つの指示Versionの差分を要約する
  • 変更箇所と失敗した境界の関連候補を挙げる
  • 修正後に再実行するケース候補を出す

ただし、AIの要約だけで原因を確定しません。記録された指示、入力、実際の出力を人間が確認します。

人間が決めるのは次です。

  • どの不合格で本番利用を止めるか
  • どの変更を原因候補として検証するか
  • 古いVersionへ戻すか、一部を修正するか
  • 再テストの範囲が十分か
  • 修正版を本番で使い始めてよいか

特に外部操作を伴う再開にはHuman Approvalを置きます。

まとめ

AIへの指示とテストを改善し続けるなら、現在の指示と最新の合否だけでは足りません。

  • 指示変更ごとに一意のVersionを付ける
  • 変更理由、期待する変化、維持する境界を残す
  • テストケースには固定IDとRevisionを付ける
  • 1ケースの実行を、指示Versionと結びつけて1行で残す
  • 最後の合格と最初の不合格の間から調べる
  • 指示、入力、モデル、ツールなど、何を変えたかを分ける
  • 原因候補の確認では条件を1つだけ変える
  • 修正後は失敗ケースと正常ケースの両方を再テストする
  • 重大な境界の不合格中は本番操作を止める
  • 採用、巻き戻し、再開は人間が承認する

Version管理の目的は、番号を増やすことではありません。AIの動きが変わったときに、どの変更を確認すればよいかを追えるようにすることです。

次回は、AI指示テストの実行結果を週次で短くまとめ、毎回確認するケースと変更時だけ確認するケースを分ける方法を整理します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?