Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

AIに「読んで」と言っても「読まない」問題の本質と対策

(AIが95%書いた・描いた記事です)

「指示したファイルを読んでくれない問題」は、AIの理解力の問題というより、

AIにどのファイルを渡すかという仕組み(Retrieval)と、人間の指示の出し方の問題です。

AIは渡された情報しか読めません。

そのため、

  • 必要なファイルがAIに渡されていない
  • AIがどのファイルを優先すべきか判断できていない
  • 読み込み確認をしていない

といった状況で作業してしまうことがあります。

なぜ起きるのか?

原因1:AIは渡されていないファイルを読めない

AIは入力されたテキストだけを処理します。

たとえば先生から、

教科書10ページまで読んできなさい

と言われても、

実際に渡されたのが1〜3ページだけなら、4〜10ページは読めません。

AIも同じです。

多くの開発環境では、

  • 現在開いているファイル
  • 最近使ったファイル
  • 関連性が高そうなファイル

だけがAIへ渡されています。

そのため、例えば

skill.md以外も読んで

と書いてあっても、

そのファイルの内容自体が渡されていなければ読むことはできません。


原因2:「全部読んで」は具体的な指示になっていない

人間なら、

このフォルダ全部読んで

と言われれば、

  1. フォルダを開く
  2. 中身を確認する
  3. 必要なものを読む

という行動を想像できます。

しかしAIは、

フォルダを開く

という行動を自動で行うわけではありません。

AIは基本的に、

与えられた文字列から次の文字列を予測する

仕組みです。

そのため、

全部読んでね

という指示は理解できても、

実際に追加ファイルを読み込むとは限りません。


原因3:ごく一部のファイルだけが目立っている

多くのプロジェクトでは、

  • skill.md
  • README.md

のような説明ファイルが最初に読まれます。

一方で、

  • schema.json
  • handlers.rb
  • config.yml

などは、

役割が分かりにくかったり、 別フォルダにあったりして、 AIの優先順位が下がることがあります。

結果として、

skill.md → 読む
その他 → 読まない

という偏りが起きやすくなります。


どうすれば防げるのか?

対策1:読むフェーズと実装フェーズを分ける

最も効果的な方法です。

フェーズ1:必要ファイルを特定する

まずコードを書かせず、

1. プロジェクト内のファイル一覧を確認してください
2. 各ファイルの役割を推定してください
3. 今回の作業に必要なファイルを
   「必須」
   「参考」
   に分類してください
4. まだコードは書かないでください

と指示します。

するとAIは、

今回の作業には何が必要か

を整理します。


フェーズ2:必要ファイルを読ませる

次に、

AIが「必須」と判断したファイルをまとめて渡します。

その後で、

これらのファイルを理解した上で実装してください

と指示します。

こうすると、 目立つファイル以外の情報も確実にAIの入力へ入ります。


対策2:目立つファイルを「目次」にする

目立つファイルは説明書ではなく、

プロジェクトなどの地図

として使う方が効果的です。

例:

# ファイル構成

- skill.md
  - 全体説明

- schema.json
  - データ構造

- handlers.rb
  - 実装ロジック

- config.yml
  - 設定情報

# 推奨読書順

1. skill.md
2. schema.json
3. handlers.rb

こうしておくと、

AIも人間も、

次に何を読むべきか

を判断しやすくなります。


対策3:読んだ証拠を提出させる

「読んだつもり」を防ぐ方法です。

たとえば、

以下を完了してください。

- [ ] skill.md の要約
- [ ] schema.json の主要フィールド一覧
- [ ] handlers.rb の主要関数一覧

まだコードは書かないでください。

と指示します。

すると、

AIは各ファイルに注意を向ける必要があります。

また、人間側も

本当に読んだのか

を確認できます。


対策4:ファイル構成を分かりやすくする

AIは人間と同じように、

名前から役割を推測します。

たとえば、

docs/
 ├─ skill.md
 ├─ schema.md

src/
 ├─ handlers.rb

config/
 ├─ config.yml

tests/
 ├─ test_xxx.rb

のように整理すると、

AIも重要ファイルを見つけやすくなります。


まとめ

「読んで」と言っても「読まない」問題の本質は、

AIの理解能力ではなく、情報の供給方法にあります。

そのため有効な対策は次の3つです。

  1. 読むフェーズと実装フェーズを分離する
  2. 目立つファイルを目次・地図として使う
  3. 要約やチェックリストで読了確認を行う

つまり、

「全部読んで」と頼むよりも、「何を読むべきかを整理させ、その内容を確認してから作業させる」

方が、はるかに安定して動作します。

(注:筆者は検証中です。悪しからず)