目的
現状のプロンプトエンジニアリングの備忘録的なメモ。
早見表
手法 | 内容 | 例 | 適用事例 |
---|---|---|---|
Zero-shot | 単なる質問 | 1+1は? | |
Few-shot | 例を挙げて質問 | 1+1は2です。1+2は? | |
Chain-of-Thought (CoT) | 質問と考え方と答えの例を挙げて質問、"Let's think step by step"で思考の過程を促す | ||
Automatic Prompt Engineer (APE) | CoTの派生、 "Let's think step by step"のような言葉を自動で探す。 | ||
Self-Consistency | CoTの派生、複数のCoTを使ってよいものをとる。 | ||
Generated Knowledge | Few-shotの派生、質問に対する例ではなく、知識や法則を挙げて質問 | LangChainのCSV AgentでCSVのヘッダーを質問文に組み込む | |
Tree of Thoughts (ToT) | 問題解決のための次のステップの生成とその実行 | BabyAGIのTask Creation Agent | |
Retrieval Augmented Generation (RAG) | 予め複数の知識を埋め込みベクタにしておき、質問された文から近い埋め込みベクタを探してきて、その文章と合わせて質問に回答する。 | BabyAGIのContext Agent | |
ReAct | 質問に対するタスクの実行に外部サービスを利用 | LangChainのCSV AgentやBabyAGIのExecution Agent | |
Automatic Reasoning and Tool-use (ART) | ReActの派生 | ||
Multimodal CoT | 画像を含めて質問(画像と質問文の埋め込みベクタを足すしてなんとかする) |
主要なテクニック
早見表からの主観的なまとめ?
- Promptに補足を入れる。例、考え方、答え方、法則や常識をPromptに入れる。
- 問題を分割して、問題を管理するPrompt(Agent)と小問題を答えるPrompt(Agent)を作る。
- 外部サービスとのインターフェースを作るようにPromptを作る。
- Promptを埋め込みベクタに変換して、他のPromptとの類似性を数値化して検索する。
- Prompt以外も埋め込みベクタに変換して、マルチモーダル化する。
- 複数のPromptのアンサンブル。
プログラム的なテクニック
- Promptのテンプレートを作る。
- Promptの連鎖を作る。
- 大きなPromptを分割する。
- Promptの履歴、サマリー、Knowledge Graphを保存。
- デバッグ(Promptの詳細を出力。Verbose=Trueとagent.agent.llm_chain.verbose=Trueをつける。)
次の方向性
- 既存の手法のガイドラインの作成、どれを使うべきか?
- マルチモーダル化
- 評価メトリックスの作成
- データセットの構築
- 結果の説明、解釈、トレーサビリティ
- 問題領域に特化したドメイン適用