Faceted Prompting: プロンプトを5つの部品に分けて、エージェントの指示を組み立てる
プロンプトを Persona(誰として)、Policy(守るルール)、Instruction(今回やること)、Knowledge(前提知識)、Output Contract(出力の形)の5つに分け、別々のファイルにして組み合わせる。部品を使い回せるので、複数のエージェントを動かす時に指示がぶれにくい。
どんな時に使う?
- 役割の違うエージェント(実装、レビュー、テスト)を並べていて、プロンプトの重複や食い違いが増えた
- 同じルール(コーディング規約など)を何か所にもコピペしている
組み立て方
- 部品ごとにフォルダを分ける
personas/ policies/ knowledge/ instructions/ output-contracts/ - Persona はシステムプロンプトに入れる
- ユーザーメッセージは Knowledge → Instruction → Output Contract → Policy の順に並べる。Policy を最後にするのは、後ろにある指示ほど守られやすい(新近効果)ため
- どの部品を組み合わせるかは、宣言的に(設定ファイルで)書く
注意点
- 作者の @nrslib が自作のオーケストレーションツール TAKT で使っている方法。どのツールでも、ファイルを結合してプロンプトにすれば試せる
- 部品を細かくしすぎると、どこに何を書いたか分からなくなる。まず Policy と Output Contract を切り出すところから始めるとよい