- 大規模言語モデル(GPTモデルとも呼ばれる)でより良い結果を得るための戦略と技術を共有するガイド
- ここで説明する方法は、組み合わせることでより大きな効果を発揮する場合があり、最適な方法を見つけるために実験が推奨される
- サンプルプロンプトを試しながら、モデルにできることを学べる
より良い結果を得るための6つの戦略
明確な指示を書く
- モデルは心を読めないため、望むことを明確に依頼する必要がある。
- 詳細を含めてより関連性の高い回答を得る、モデルに特定の人物を演じるよう依頼する、入力の区別された部分を明確に示すために区切り文字を使う。
- タスク完了に必要な手順を明示し、例を示し、出力の望ましい長さを指定する。
参照テキストを提供する
- 言語モデルは、特に難解なテーマや引用文、URLを求められたときに、もっともらしい誤答を自信ありげに生成することがある。
- モデルに参照テキストを使って回答するよう指示したり、参照テキストから引用して回答するよう指示する。
複雑なタスクを単純なサブタスクに分割する
- 複雑なシステムをモジュール式の構成要素に分解することがソフトウェアエンジニアリングの良い実践であるのと同様に、言語モデルに与えるタスクでも同じことが言える。
- 複雑なタスクはエラー率が高く、しばしば単純なタスクのワークフローとして再定義できる。
- 意図分類を用いてユーザークエリに最も関連する指示を特定し、非常に長い会話が必要な対話型アプリケーションでは過去の会話を要約またはフィルタリングする。
- 長い文書を部分ごとに要約し、再帰的に全体の要約を構成する。
モデルに「考える時間」を与える
- モデルに回答を急がせるのではなく、回答を作成する前に「思考の連鎖」を促すことで、より信頼性の高い回答を引き出せる。
- モデルにまず独自の解決策を用意するよう指示し、モデルの推論過程を隠すために内部独白や一連のクエリを使用する。
- 前のパスで見落としたものがないかモデルに尋ねる。
外部ツールを使う
- モデルの弱点を補うため、他のツールの出力をモデルに与える。
- 埋め込みベースの検索を使って効率的な知識検索を実装し、コード実行でより正確な計算を行ったり、外部APIを呼び出したりする。
- モデルに特定の関数へのアクセスを許可する。
変更点を体系的にテストする
- パフォーマンス改善は、測定可能なときほど容易になる。
- 変更が全体的な性能に良い影響を与えるか確認するために、包括的なテストスイート(または「eval」)を定義する必要がある。
- モデル出力を模範解答と比較して評価する。
GN⁺の見解
- 最も重要な点: プロンプトエンジニアリングは言語モデルの性能を最適化する中核的な方法であり、ユーザーの意図を正確に把握し、望む結果を得るための具体的な指針を与える。
- 興味深い理由: これらの戦略はAI言語モデルの活用をより効果的にし、特にGPT-4のような最新モデルでさらに高い性能を発揮できるようにする。
- 注目すべき点: このガイドは、初級ソフトウェアエンジニアが言語モデルを使う際に直面しがちな一般的問題を解決するのに役立つ具体例と戦略を示し、実務でモデルをより効果的に活用する方法を提示している。
2件のコメント
OpenAIのGPTベストプラクティス: 概要。より良い回答を得るための6つのプロンプト作成戦略
Hacker Newsの意見
ChatGPTのシステムプロンプトに関する議論
スペイン語でチーズバーガーを注文した体験談
LLM(Large Language Models)の特徴に関する議論
プロンプト作成の学習に対するためらい
プロンプトエンジニアリングとGoogleの高度な検索クエリの比較
Google検索プロンプトとLLMプロンプトの比較
人間同士のコミュニケーション失敗とLLMの限界
「プロンプトエンジニアリング」という用語への批判
LLMが人間に明確なコミュニケーションを教える役割
LLMベースのチャットアプリ実装の容易さ