- このページのポイント
- 本記事の概要
- 回答がズレてしまう原因
- じゃあどうしたらよいか?
- 本ケースのユースケース
- 終わり
このページのポイント
- Webサーチでも、まずは「プロンプトだけ」を読んで「解釈」される
- 「前提として見てほしいページのURL」を送っても、その内容が「プロンプトから解釈した内容」と乖離している場合、無視される
- ページ内容を前提にして回答させたいなら、プロンプトに「URLではなく文章」として含める必要がある
本記事の概要
例えば「OpenAI API」の「Webサーチ」モードで、以下のようにプロンプトを送ったとします。
- ドーベルマンは強いですか?
- https://noname-one.com/?masterID=288を前提条件として回答してください
この「https://noname-one.com/?masterID=288」というページには「アークナイツのドーベルマンというキャラクター」について書かれています。
なので、二つを組み合わせれば「アークナイツのドーベルマンは強いですか?」という趣旨の質問であることは分かるのですが、実際には「アークナイツのドーベルマン」ではなく「犬のドーベルマン」として回答されてしまいます。
回答がズレてしまう原因
以下のような流れで回答しているようです(あくまで予想です)。
- まずは「Webサーチ」を使わず、単純にプロンプトを読み取る
- 「ドーベルマン」という単語から、「犬」や「警察犬」というワードを類推する
- 「犬あるいは警察犬のドーベルマンについての質問だ」と解釈する
- 「Webサーチ」を実行する
- 「https://noname-one.com/?masterID=288」には「犬のドーベルマン」の情報は無いので無視する
- 自分で類推解釈した「ドーベルマン 犬 警察犬」などと言ったワードでWeb検索する
- 「犬のドーベルマン」として調べた内容を回答する
つまり、Webサーチを利用して前提条件を補完しようとしても、「前提条件として渡したページの中身」が「AIがプロンプトから勝手に解釈した内容」と乖離していれば無視されてしまうようです。
じゃあどうしたらよいか?
対策は単純で、プロンプト内に直接「参照してほしいページの文」を入れるしかないと思います。
こうすればそのページの文を含めて解釈が行われるので、回答ズレが防げます。
ただこの対策は対策でプロンプトが長くなってしまうので、「トークンをやたら消費する」という問題が発生してしまいます。
なのでボクはその中間で、ページのタイトルのみをプロンプトに含めて送るようにしています。
もちろん理想はページの中身全部プロンプトに含めるのが良いと思いますが、今のところこの対策で回答ズレは起きていないようです。
対策案まとめ
- 前提にさせたいページの本文をすべてプロンプトに含める
→トークンの消費量が大きい。 - 前提にさせたいページのタイトル・要約だけ含める
→トークンの消費量を抑えつつ回答ズレを防げる。 - 前提にさせたいページのURLだけ送る
→ダメ。NG。意味ない。
本ケースのユースケース
どんなときにこんなことをするのかという話ですが、本サイト上では「VRoidナビゲーター」(多分このページの一番下に表示されています)という機能でサイト訪問者が質問をできるようになっています。
この質問への回答でまさにここで書かれている対策を行っています。
つまり、「サイト訪問者がどんなページを見て、している質問なのか?」をAI側に教えて、回答してもらうときに使える方法です。
終わり
もしかしたらもっと賢いやり方があるかもしれませんが、もし似たようなことをやりたいと考えている人がいたら参考にしてください。