OpenAI公式:ChatGPT説明書 を翻訳した
結論
プロンプトエンジニアリング 7箇条
ゼロショットから初めて、徐々にチューニング
指示をプロンプトの最初に配置し、###または"""で指示と文脈を分ける
望む文脈、結果、長さ、形式、スタイルなどについて具体的で詳細に記述する
例を使って望む出力形式を明示する
曖昧で不正確な表現を減らす
やってほしくないことだけでなく、代わりにやってほしいことも記述する
コード生成には、特定のパターンに誘導する「leading words」を使用する
1.ゼロショットから初めて、徐々にチューニング
Start with zero-shot, then few-shot (example), neither of them worked, then fine-tune ゼロショットから始め、次に少数ショット(例)、どちらもうまくいかず、その後微調整
✅ Zero-shot
以下のテキストからキーワードを抽出する。
テキスト: {文章の中身}
キーワード:
✅ Few-shot - provide a couple of examples (Few-shot-2つの例を提供します)
以下の対応するテキストからキーワードを抽出する。
テキスト1:Stripeは、Web開発者がWebサイトやモバイルアプリケーションに決済処理を組み込むために使用できるAPIを提供しています。
キーワード1:Stripe、決済処理、API、Webデベロッパー、Webサイト、モバイルアプリケーション
##
テキスト2:OpenAIは、テキストの理解と生成に非常に優れた最先端の言語モデルを訓練しています。私たちのAPIは、これらのモデルへのアクセスを提供し、言語処理を伴うほぼすべてのタスクを解決するために使用することができます。
キーワード2:OpenAI, 言語モデル, テキスト処理, API.
##
テキスト3:{文章の中身}。
キーワード 3:
これは確認する必要もなく有用でしょう。
俺の補足 (いらん人は飛ばして)
僕のChatGPTの教科書(無料Note )に書いた
デバッグ思考
と同義だと思いました。
初めから何かで拡張たり、テンプレ使ったりせずに、徐々に足していって変化を見た方が長期的期に見て経験値が貯まって良いと思います。
2,プロンプトの先頭に指示を入れ、##または"""で指示と文脈を区切る。
プロンプトの先頭に指示を入れ、##または"""で指示と文脈を区切る。
Put instructions at the beginning of the prompt and use ### or """ to separate the instruction and context
良くない例❌
以下の文章を、最も重要な点を箇条書きにして要約する。
{文章の中身}
より良い例✅
以下の文章を、最も重要な点を箇条書きにして要約する。
Text: """
{文章の中身}
"""
以下の文章を、最も重要な点を箇条書きにして要約する。
Text: ###
{文章の中身}
###
やってみた
この程度だと、あんまり変わらなさそう。
命令分と、食わせるものを分離させるという時に全て使えそうなので、これから検証していきますね。
俺の補足 (いらん人は飛ばして)
・少しの命令であれば、変わらないので
音声入力でざーっとやる時にわざわざこれ意識する方が、コスパ悪いので、テンプレ化するタイミング以外では使わなくて良さそうと思いました。
・こういうAIPRM for ChatGPT
拡張機能で、テンプレ呼び出し可能にしてたら使いやすいかも
3.望む文脈、結果、長さ、形式、スタイルなどについて具体的で詳細に記述する
Be specific, descriptive and as detailed as possible about the desired context, outcome, length, format, style, etc (望ましい文脈、成果、長さ、形式、スタイルなどについて、具体的かつ説明的で、できるだけ詳細に説明すること。)
望ましい
文脈
成果
長さ
形式
スタイル
具体的&説明的&詳細に説明すること。
良くない例❌
OpenAIについて詩を書く。
より良い例✅
OpenAIについて、最近のDALL-E(DALL-Eはテキストから画像へのMLモデル)
の製品発表に焦点を当て、
{有名な詩人}のスタイルでインスピレーションを与える短い詩を書いてください。
当然ながら良い。
詳細に書くの具体的項目が提示されてるのはこれまでになく有用だと思いました。
俺の補足 (いらん人は飛ばして)
脳科学的に人間は、久々に繋がったシナプスに笑いとか驚きとか感動をより強く感じるって聞いたことがあるので、狭い方がその可能性は上がる=良い文章になる って感じな気がする(知らんけど)
4.例を使って望む出力形式を明示する
4. Articulate the desired output format through examples (example 1, example 2). 例(例1、例2)を通して、望ましい出力形式を明確にする。
よくない例❌
以下のテキストに記載されているエンティティを抽出する。
以下の4つのエンティティタイプ:会社名、人名、特定のトピック、テーマを抽出する。
Text: {文章の中身}
より良い例✅
以下のテキストに記載されている重要なエンティティを抽出する。
まずすべての会社名を抽出し、次にすべての人名を抽出し、
次に内容に合った特定のテーマを抽出し、最後に一般的な包括的テーマを抽出する。
希望するフォーマット:
会社名: <コンマで区切られた会社名のリスト>
人名: -||-
特定のテーマ: -||-
一般的なテーマ: -||-
Text: {文章の中身}
やってみた
以下読み込ませる文書
昨日、私は友人の田中さんと一緒に、IT業界に関するセミナーに参加しました。このセミナーは、マイクロソフト社とグーグル社の共催で行われたものでした。
セミナーでは、デジタルトランスフォーメーションというテーマについて、マイクロソフト社のCEOであるサティア・ナデラ氏と、グーグル社のCEOであるサンダー・ピチャイ氏が講演しました。彼らは、デジタル技術の進化によって、世界中の企業が変革を迫られていることを強調し、AIやクラウドコンピューティングなどの技術が、ビジネスの未来にどのような影響を与えるかについて語りました。
セミナーの終盤には、質疑応答の時間が設けられ、私たち参加者からも質問が飛び交いました。その中でも、印象的だったのは、田中さんが投げかけた「今後のIT業界において、人工知能がもたらす問題点について、どう考えているか」という質問でした。
その後、ナデラ氏とピチャイ氏は、AIによって生じる倫理的問題について、積極的に取り組む必要性を説きました。そして、AIの開発においては、透明性や倫理的観点を重視し、人間中心のアプローチを取ることが求められるという考え方を共有しました。
このセミナーを通じて、私たちは、IT業界がますます進化していく中で、企業が直面する課題や問題点について理解を深めることができました。デジタルトランスフォーメーションというテーマが、今後ますます重要になっていくことは明らかであり、AIやクラウドコンピューティングなどの技術をうまく活用しながら、企業がビジネスモデルの変革を進めていくことが求められるということを実感しました。
ダメな方. ✖️ 3 Regene
良い方✖️ 3 Regene
そんなに変わらないと思いました。ChatGPTは優秀
これもテンプレ化する時だけ意識すればいいかと。
5.曖昧で不正確な表現を減らす
Reduce “fluffy” and imprecise descriptions "ふわっと"した不正確な記述を減らす
よくない例❌
この製品の説明文は、かなり短く、数文のみで、それ以上にはならないようにします。
より良い例✅
この製品について、3~5文の段落で説明すること。
短く < 30文字
可愛く < うさぎのように可愛く , 白を基調として可愛く , 羊のようなもこもこした感じで可愛く , 8歳の子供が親に甘えるような口調で可愛く
6.やってはいけないことを言うだけでなく、代わりに何をすべきかを言う
Instead of just saying what not to do, say what to do instead
よくない例❌
以下は、エージェントとお客様との会話です。
ユーザー名やパスワードを尋ねないでください。
繰り返さないでください。
お客様:自分のアカウントにログインできないんだけど。
代理店:
より良い例✅
以下は、エージェントとお客様との会話です。
エージェントは、
問題の診断と解決策の提示を試みますが、PIIに関連する質問は控えてください。
ユーザー名やパスワードなどのPIIを尋ねる代わりに、
ヘルプ記事(www.samplewebsite.com/help/faq)を紹介する。
お客様:自分のアカウントにログインできないんだけど。
代理店:
7.初めの数ワードだけ指示する
Code Generation Specific - モデルを特定のパターンに誘導するための「リーディングワード」を使用する。
よくない例❌
# Write a simple python function that
# 1. Ask me for a number in mile
# 2. It converts miles to kilometers
以下のコード例では、"import "を追加することで、モデルがPythonで書き始めるべきことを示唆しています。(同様に "SELECT "はSQL文の開始を示す良いヒントとなります)。
より良い例✅
# Write a simple python function that
# 1. Ask me for a number in mile
# 2. It converts miles to kilometers
import
確かめる必要もなく有用でしょう。
Parameters
一般的に、モデル出力を変更するために最もよく使われるパラメータは、modelとtemperatureであることが分かっています。
temperature:
モデルがあまり起こりそうもないトークンを出力する頻度を表します。temperatureが高いほど、出力はランダム(通常はクリエイティブ)になりますが、「真実性」とは異なります。データ抽出や真実的なQ&Aなどの事実関係のあるユースケースでは、temperatureは0が最適です。
参考文献
Best practices for prompt engineering with OpenAI API | OpenAI Help Center
ChatGPTプロンプトエンジニアリングのコツ8箇条~OpenAI公式のベストプラクティスから学ぶ~ - Qiita
イワケンさんは一回会ったことあるけど覚えてはるかな。。
お知らせ
TiktokやNoteより本音でかなり話してます。笑 ↓
オープンチャット「日本ChatGPT研究所ノーベル」