曖昧なプロンプトから一歩進むために調べたこと
はじめに
前記事で曖昧なプロンプトを作らないことがコンテキスト削減に繋がると書きました。
でも実際のところこの文自体説明が少ないので私自身がどうするかをちょっと調査しました。
ただ調べていく内にこれは膨大な話な上、新しい技術がすぐに出るため私のこれから気をつけるという情報は既に陳腐化しているかもしれません。
単純に初心者が曖昧すぎるプロンプトからもう少しレベルを上げるならという視点で書きます。
プロンプト、コンテキスト、ハーネス、ループみたいな話を期待している方はブラウザバック推奨です。
前提
- 対象はプロンプト単体の技術。コンテキストやハーネスには触れません。
- 曖昧なプロンプトは会話の往復を増やしトークンを浪費します。
- 最初から作り込むほど、結果的にトークン消費は減ります。
役割を与えるのは精度に直結しない
「あなたはプロのエンジニアです」のようなロール付与は実際のところ文体や視点、語彙の調整程度にしか寄与しておらず、推論の精度そのものを底上げする効果は限定的という見方がでています。
特に拡張思考を持つモデルは内部で勝手にタスクに応じた思考プロセスを組み立てるので、曖昧なペルソナの影響を受けにくくなっているというのが実情らしいです。
そのため「役割単体」を書いても効果は薄く、役割と目的、制約をセットで書く方が実感として精度が上がります。
- BAD「あなたはプロのエンジニアです」
- GOOD「本番環境へのデプロイ前レビューをしています。セキュリティを最優先して指摘してください」
長さより密度を上げる
「プロンプトは短く」は、私の中で正解の対応と思っていましたが半分正解で半分間違いでした。
ロングコンテキスト対応やプロンプトキャッシュが一般化したため短いよりも無駄がないことが大事そうです。
曖昧な短文より、手順や例を含む多少長めのプロンプトの方が精度が高くなるケースの方が多い印象です。
削るべきは長さではなく、重複や曖昧な修飾だと考えると分かりやすいです。
トークン節約は精度の話ではない
トークン節約を良いプロンプトのコツとして語られることがありますが、これは半分ミスリードだと思っています。
トークン削減は基本的にコスト・レイテンシの最適化の話であって、プロンプトの質とはむしろトレードオフになりがちです。
節約を意識しすぎて文脈を削ると、結局曖昧なプロンプトに逆戻りして往復が増えて逆にトークンを消費するという本末転倒が起きます。
制約は今も王道
ここは調べても評価が変わらなかった項目です。
どのような出力を期待するかで精度もコンテキスト量もいい感じに変わっているためinputよりもむしろoutputを意識したほうが多分いいです。
おわりに
まずは出力を意識しつつ、密度を上げることが恐らく一番効いてくると思うので、たとえ短いタスクだとしてもそのあたりを意識したいです。