見出し画像

OpenAIが作成したChatGPT用のプロンプトエンジニアリングのまとめ

OpenAIのサイトを眺めていたら、Prompt Engineeringのマニュアルが出来ていましたので、自身のメモ用として纏めてみました。

https://platform.openai.com/docs/guides/prompt-engineering


プロンプトエンジニアリングのマニュアル構成は6つの戦略からなっております。


  • 明確な指示を書く

  • 参照テキストを提供する

  • 複雑なタスクを簡単なサブタスクに分割する

  • モデルに「考える」時間を与える

  • 外部ツールを使用する

  • システマティックに変更をテストする


言語定義として、戦略と戦術の違いは、戦略は、具体的な目標や計画であり、それらを実現するための具体的アクションが戦術です。



1.明確な指示を書く

  戦術としては、以下があります。

  • 質問を詳細にせよ

  • ペルソナを設定せよ

  • デリメーターを使用せよ

  • 複雑なタスクのためにステップを踏め

  • 例を与えよ

  • 回答時の出力の長さを与えよ

ペルソナを設定することにより、文脈に応じた回答をすることができたりするそうです。

また、デリメータ、"""xxxxxxx"""というような"""で囲まれた文章にすることにより、入力文章の区別が付き良いそうです。

複雑なタスクのためのステップを踏めというのは、問題を何段階かに分けて解いていくことです。数学の問題の(1)、(2)というようなイメージです。


2.参照テキストを提供する

戦術としては以下です。

  • 関連テキストを利用して回答するように指示せよ

  • 関連テキストからcitationと一緒に回答するように指示せよ

関連テキストを一緒に明示して利用するように指示をすればより良い回答が得られるとのことです。


3.複雑なタスクは簡単なサブタスクに分割せよ

戦術は以下です。

  • 質問に関連する指示を特定するためにintent classificationをせよ。

  • 長い会話を入力するときは、要約かフィルタをかけよ

  • 長文を断片的に要約し、再帰的に完全な要約を構築する

intent classificationとは下記のようなものです。各項目をさらに詳細な項目に分類して表示することです。


intent classification

最後の文章を要約して、再帰的に文章全体の要約を構築せよは、意味はわかるのだが、どのように実施するのかよくわかりませんでした。


4.モデルに「考える」時間を与える

  • 結論を出す前に、モデル自身に問題解決方法を考えさせよ

  • 推論ステップを共有せよ

  • 足りない情報がないかモデルに打診せよ

ここは日本語を意訳しています。おそらく感覚的にこのような意味だろうなとは思っています。innner monologueとは何かと思いますが、内なるモノローグと言われてもピンと来ないので感覚的に訳しています。

考え方の道順を示すことにより、モデルがすぐに結論を出すよりは良いそうです。


考え方の道順


5.外部ツールを利用する

  • ベクトルデータベースを利用せよ

  • コード実行を使用するか外部APIを利用せよ

  • モデルに関数を利用させよ

ベクトルデータベースを利用して外部情報を効率的に利用しましょうということです。

また、モデルに自身に計算させる代わりに、コードを書いて実行するように指示することができます。


コードを書いて実行するように指示した場合


6.システマティックに変更テストをする

  • 標準的な回答をベースにモデルの回答を評価せよ

最後は、モデルの回答に対する評価方法が載っていましたが、一般ユーザがここまでやる必要はないなと思いましたので割愛します。



この記事が気に入ったらサポートをしてみませんか?