GPTベストプラクティス完全版:より良い結果を得るための戦略と戦術
GPTを使って思ったような結果を得たい場合は、GPTの使い方を正しく学ぶ必要があります。誰かが作ったガイドや有料プロンプトも良いですが、まずはOpenAIの公式ドキュメントで最高の戦略と戦術を学びましょう。
OpenAI公式ドキュメントの「GPT best practices」を日本語訳しました。少々長いですが、非常に価値のあるガイドですので最後まで読んでみてください。
サッと読みたい方は、Twitterの簡易版をご覧ください。
以下、GPTベストプラクティス完全版↓
このガイドでは、GPTからより良い結果を得るための戦略と戦術を紹介します。ここで説明する方法は、時には組み合わせて使うことでより大きな効果を発揮します。色々試して、自分にとって最も効果的な方法を見つけてみてください。
ここで紹介するいくつかの例は、現在、最も高性能なモデルであるgpt-4でのみ動作します。まだgpt-4にアクセスできない場合は、ウェイティングリストに参加することを検討してください。一般的に、あるタスクでGPTモデルが失敗した場合、より高性能なモデルが利用できるなら、より高性能なモデルで再挑戦する価値があることが多いようです。
【戦略】明確な指示を書く
GPTはあなたの心を読むことはできません。出力が長すぎる場合は、簡潔な返信を求めてください。出力が単純すぎる場合は、専門家レベルの文章をお願いしてください。フォーマットが気に入らない場合は、自分が希望するフォーマットを示してください。GPTがあなたの望みを推測する必要が少ないほど、あなたはより多くのものを手に入れることができます。
【戦術】より適切な回答を得るためにクエリに詳細を含める
関連性の高い回答を得るために、リクエストには重要な詳細やコンテキストを含めるようにしてください。そうしないと、あなたの言いたいことを推測するのはモデル任せになってしまいます。
❌ Excelで数値を足すには?
✅ Excelで金額の行を合計するには?これを行のシート全体に対して自動的に実行し、すべての合計が右側の「合計」という列に表示されるようにしたい。
❌ 大統領は誰?
✅ 2021年のメキシコ大統領は誰でしたか?また選挙はどのくらいの頻度で行われていますか?
❌ フィボナッチ数列を計算するコードを書いて。
✅ フィボナッチ数列を効率的に計算するTypeScript関数を書いて。それぞれの部分が何をしているのか、なぜそのように書かれているのかを説明するために、コードに自由にコメントを付けて。
❌ 会議のメモをまとめて。
✅ 会議のメモを1段落にまとめて。次に、発言者とその要点をマークダウンでリストアップして。最後に、発言者が提案した次のステップやアクション項目があれば、それをリストアップして。
【戦術】モデルにペルソナを採用してもらう
システムのメッセージは、モデルが返信で使用するペルソナを指定するために使用できます。
【戦術】区切り文字を使用して入力の異なる部分を明確に示す
トリプルクォーテーション(三重引用符)、XMLタグ、セクションタイトルなどの区切り記号は、テキストのセクションを区別するのに役立ちます。
このような単純なタスクの場合、区切り文字を使っても出力の品質に差は出ないかもしれません。しかし、タスクが複雑であればあるほど、タスクの詳細を明確にすることは重要になります。
【戦術】タスクを完了するために必要なステップを指定する
タスクの中には、一連のステップとして指定するのが最適なものがあります。ステップを明示的に書き出すことで、モデルがそれに従うことが容易になります。
【戦術】例を挙げる
すべての例に適用される一般的な指示を提供することは、通常、タスクのすべての順列を例で示すよりも効率的ですが、場合によっては例を提供する方が簡単な場合もあります。例えば、明示的に記述することが難しい、ユーザーのクエリに応答する特定のスタイルをモデルにコピーさせる場合です。これは「few-shot」プロンプティングとして知られています。
【戦術】出力したい長さを指定する
指定された長さの出力を生成するようにモデルに要求することができます。目標とする出力の長さは、単語、文、段落、箇条書きなどの数で指定できます。ただし、特定の単語数を生成するようにモデルに指示しても、高い精度では機能しないことに注意してください。モデルは、特定の段落数や箇条書きの数を持つ出力をより確実に生成することができます。
【戦略】参考テキストを提供する
GPTは、特に難解なトピックや、引用やURLについて尋ねられると、自信を持って偽の答えを作り出すことができます。ノート一枚でテストがうまくいくのと同じように、GPTに参考文献を提供することで、捏造の少ない回答ができるようになります。
【戦術】参考テキストを使用して回答するようモデルに指示する
現在のクエリに関連する信頼できる情報をモデルに提供することができれば、提供された情報を使って答えを構成するようモデルに指示することができます。
GPTのコンテキストウィンドウが限られていることを考えると、この戦術を適用するためには、質問されていることに関連する情報を動的に検索する方法が必要です。埋め込み(Embeddings)は効率的なナレッジ検索を実装するために使用できます。これを実装する方法の詳細については、後に紹介する戦術「埋め込みベースの検索を使用して効率的なナレッジ検索を実装する」を参照してください。
【戦術】参考テキストから引用して回答するようモデルに指示する
入力が関連する知識で補足されている場合は、提供されたドキュメントからの一節を参照することで、モデルの回答に引用を追加するよう要求するのは簡単です。出力内の引用は、提供されたドキュメント内の文字列マッチングによってプログラムで検証できることに注意してください。
【戦略】複雑なタスクをよりシンプルなサブタスクに分割する
ソフトウェア工学において、複雑なシステムをモジュール化されたコンポーネントの集合に分解することが良い習慣であるように、GPTに提出されるタスクにも同じことが言えます。複雑なタスクは、単純なタスクよりもエラー率が高くなる傾向があります。さらに、複雑なタスクは、単純なタスクのワークフローとして再定義できることが多く、その場合、前のタスクのアウトプットが後のタスクのインプットを構築するために使用されます。
【戦術】インテント分類を使用して、ユーザーのクエリに最も関連性の高い指示を特定する
さまざまなケースを処理するために多数の独立した命令セットが必要なタスクの場合、最初にクエリのタイプを分類し、その分類を使用してどの命令が必要かを判断することが有益な場合があります。これは、固定のカテゴリを定義し、特定のカテゴリのタスクの処理に関連する命令をハードコーディングすることで実現できます。このプロセスは、タスクを一連のステージに分解するために再帰的に適用することもできます。このアプローチの利点は、各クエリにはタスクの次の段階を実行するために必要な命令のみが含まれるため、単一のクエリを使用してタスク全体を実行する場合に比べてエラー率が低くなる可能性があることです。また、プロンプトのサイズが大きくなるほど実行コストが高くなるため、コストを削減できる可能性もあります(価格情報を参照)。
例えば、顧客サービスのアプリケーションの場合、クエリは次のように分類できます:
顧客のクエリの分類に基づいて、次のステップを処理するためのより具体的な一連の指示をGPTモデルに提供することができます。例えば、顧客が「トラブルシューティング」のサポートを必要としているとします。
モデルは、会話の状態が変化したときに特別な文字列を出力するように指示されていることに注目してください。これにより、システムをステートマシンにすることができ、どの命令が注入されるかは状態によって決定されます。状態、またその状態においてどの命令が関連するのか、およびオプションとしてその状態からどのような状態遷移が許可されるのかを追跡することで、構造化されていないアプローチでは実現が難しいガードレールをユーザーエクスペリエンスに張り巡らせることができます。
【戦術】非常に長い会話を必要とする対話アプリケーションの場合は、前の対話を要約またはフィルタリングする
GPTはコンテキストの長さが決まっているため、会話全体がコンテキストウィンドウに含まれるようなユーザーとアシスタントの対話を無限に続けることはできません。
この問題には様々な回避策があり、その1つは、会話の前のターンを要約することです。入力のサイズが所定のしきい値の長さに達すると、会話の一部を要約するクエリがトリガーされ、前の会話の要約がシステムメッセージの一部として含まれる可能性があります。あるいは、会話全体を通してバックグラウンドで非同期的に以前の会話を要約することもできます。
別の解決策は、現在のクエリに最も関連性のある以前の会話部分を動的に選択することです。後に紹介する戦術「埋め込みベースの検索を使用して効率的なナレッジ検索を実装する」を参照してください。
【戦術】長い文書を断片的に要約し、完全な要約を再帰的に構築する
GPTは固定されたコンテキストの長さを持っているため、単一のクエリで、コンテキストの長さから生成される要約の長さを引いた範囲よりも長いテキストの要約を作成することはできません。
本などの非常に長い文書を要約するには、一連のクエリを使用して文書の各セクションを要約できます。セクションの要約は連結され、要約の要約が生成されます。このプロセスは、文書全体が要約されるまで再帰的に続行できます。後のセクションの意味を理解するために、前のセクションの情報を使う必要がある場合、さらに有効なテクニックは、本の特定の時点の内容を要約する際に、その時点より前のテキストの進行要約を含めることです。本を要約するためのこの手順の有効性は、GPT-3の変種を使ったOpenAIの以前の研究で研究されています。
ここから先は
¥ 300
この記事が気に入ったらサポートをしてみませんか?