手法とは、単純な指示では解決できない問題を解くために、プロンプト、またはプロンプトの連なりを意図的に構成する方法です。どの手法にも、トークン、遅延、複雑さのいずれかのコストがあります。大切なのは、機能する中で最も軽いものを使うことです。
手法の一覧
| 手法 | 何をするか | コスト |
|---|---|---|
| フューショットプロンプティング | 望む出力の例を示す | 呼び出しごとのトークン |
| ロールベースのプロンプティング | 専門性、対象読者、トーンを設定する | 最小 |
| コンテキストの注入 | モデルに足りない事実を加える | 呼び出しごとのトークン |
| 出力の制約 | 長さ、形式、許可される値を固定する | 最小 |
| 構造化出力のプロンプティング | スキーマに一致するデータを返す | 最小 |
| 思考の連鎖 | 答える前に段階的に推論する | 出力トークン、遅延 |
| 自己整合性 | 複数の回答をサンプリングし多数決を取る | 複数回の呼び出し |
| プロンプトの分解 | 問題を小さな問いに分ける | 設計の手間 |
| プロンプトチェーン | 小タスクを別々のプロンプトとして順に実行する | 複数回の呼び出し |
| ReAct | 推論とツール呼び出しを交互に行う | 複数回の呼び出し、ツール |
| 反復的な最適化 | 測定によってプロンプトを改善する | 自分の時間 |
| プロンプトの推敲 | 明確さと正確さのために言い回しを直す | 自分の時間 |
| プロンプトの評価 | 基準に照らして出力を採点する | テストセット |
| プロンプトのテスト | 変更のたびにチェックを再実行する | 自動化 |
| プロンプトの圧縮 | 意味を失わずにトークンを減らす | 最小 |
1 つのプロンプトを形づくる手法
フューショットプロンプティング。 入出力のペアを含めます。判断が必要な場面や独自のスタイルに最適です。ガイド:フューショットプロンプティング。
ロールベースのプロンプティング。 モデルが誰で、誰に話しかけているかを最初に書きます。レジスターを選ぶもので、知識は加わりません。ガイド:システムプロンプトとロールプロンプティング。
コンテキストの注入。 答えが依存するドキュメント、レコード、検索結果を区切りの中に挿入し、それに基づいて答えるようモデルに指示します。コンテキストが自動で取得される場合、これは RAG プロンプティングになります。
Answer using only the policy in the tags. If it does not say, reply "not covered".
<policy>
{{policy_text}}
</policy>
出力の制約と構造化出力。 形式、フィールド、長さ、欠損データの扱いを指定します。ガイド:構造化出力のプロンプト。
推論のための手法
思考の連鎖。 答えを出す前に問題を順に考えさせます。内部で推論しないモデルでの、複数ステップの論理や算術に役立ちます。推論機能を内蔵したモデルはすでにそうしており、「ステップごとに考えて」と伝えても得るものは僅かです。
自己整合性。 同じ推論プロンプトを複数回実行し、最も多い答えを採用します。正解が 1 つの問題で、コストを精度と引き換えにします。
どちらも思考の連鎖プロンプティングと自己整合性で扱っています。
複数のプロンプトを使う手法
プロンプトの分解。 難しい問いを、それぞれうまく答えられる小さな問いに分け、答えを組み合わせます。
プロンプトチェーン。 それらの部分を別々の呼び出しとして実行し、各出力を次のステップに渡します。各プロンプトは単純で、テストしやすいままです。ガイド:プロンプトチェーンと分解。
ReAct。 モデルに推論と行動を交互に行わせます。何が必要かを判断し、ツールを呼び出し、結果を読んで続けます。これはほとんどの AI エージェントの根底にあるループです。ガイド:ReAct プロンプティング。
プロンプトを改善するための手法
反復的な最適化と推敲。 テストセットでプロンプトを実行し、失敗を見つけ、1 つだけ変えて、もう一度測定します。ガイド:反復的なプロンプト最適化。
評価とテスト。 「良い」とは何かを定義し、採点し、プロンプトが変わるたびにチェックを再実行します。ガイド:プロンプトのテストと評価。
プロンプトの圧縮。 つなぎの言葉、繰り返し、不要な文脈を取り除いて、コストと遅延を減らします。ガイド:トークン最適化。
選び方
このリストを上から順に進み、問題を解決する最初のステップで止まります。
- 出力形式付きの明確な指示を書く。 ほとんどの問題はここで終わります。
- 足りない文脈を加える。 答えが一般的、または事実が誤っているとき。
- 例を加える。 スタイルや判断がずれているとき。
- 推論を求める。 タスクに複数の論理ステップが必要で、モデルが推論モデルでないとき。
- タスクをチェーンに分ける。 1 つのプロンプトが多くのことをしすぎているとき。
- モデルにツールを与える。 最新のデータが必要、または操作を行う必要があるとき。
- 複数回サンプリングする。 答えが 1 つの問題で、精度が複数回の呼び出しに見合うとき。
タスクが必要としない手法を足すと、プロンプトは長く、遅く、デバッグしにくくなります。
手法を組み合わせる
手法は積み重ねられます。典型的な本番のプロンプトは、ロール、注入された文脈、2 つの例、スキーマを使います。典型的なエージェントは、そうしたプロンプトのチェーンの上で ReAct を使います。1 つずつ手法を足して測定すれば、どれが役目を果たしたか分かります。
しっかりした土台から始める
手法はプロンプトを増幅するもので、直すものではありません。何かを足す前に、PromptFlowEngine のプロンプトアナライザーにかけてあいまいな表現、矛盾、欠けている形式を片づけ、プロンプトオプティマイザーで構造化しましょう。