OpenAIのモデルから最大限の性能を引き出すには、適切なプロンプト設計が不可欠です。
この記事では、公式ドキュメントを基に、効果的なプロンプト作成のベストプラクティスを解説します。
目次
なぜプロンプトエンジニアリングが重要なのか
OpenAIモデルは特定のトレーニング方法を経ているため、プロンプトの書き方次第で出力品質が大きく変わります。
適切な形式で指示を与えることで、より正確で有用な回答を得られるようになります。
実践的なテクニック
実際の例を用いて解説します。
1. 最新モデルを選択する
新しいモデルほどプロンプトの意図を理解しやすく設計されています。
可能な限り最新の高性能モデルを使用しましょう。
なお、GPTモデルと推論モデル(o1など)ではプロンプトのアプローチが異なる点に注意が必要です。
2. 指示とコンテキストを明確に分離する
区切り文字(###や""")を使って、指示部分と処理対象のテキストを視覚的に分けます。
改善前:
以下のテキストを要約してください。
{テキスト}改善後:
以下のテキストを箇条書きで要約してください。
Text: """
{テキスト}
"""3. 具体的かつ詳細に記述する
曖昧な表現は避け、求める出力の長さ、形式、スタイルを明示します。
改善前:
OpenAIについて詩を書いてください。改善後:
OpenAIについて短い詩を書いてください。
最近のDALL-E製品リリースに焦点を当て、{有名な詩人}のスタイルで作成してください。4. 出力形式を例示する
期待する形式を具体例で示すことで、モデルの理解度が向上し、プログラムでの後処理も容易になります。
テキストから重要なエンティティを抽出してください。
出力形式:
会社名: <カンマ区切りリスト>
人物名: <カンマ区切りリスト>
トピック: <カンマ区切りリスト>
テーマ: <カンマ区切りリスト>
Text: {テキスト}5. 段階的にアプローチする
まずゼロショット(例なし)で試し、
うまくいかなければ数ショット(例を追加)、それでも不十分なら微調整(fine-tuning)を検討します。
ゼロショット:
以下のテキストからキーワードを抽出してください。
Text: {テキスト}
Keywords:数ショット:
以下のテキストからキーワードを抽出してください。
Text 1: Stripeは決済処理をウェブサイトに統合するAPIを提供しています。
Keywords 1: Stripe, 決済処理, API, ウェブサイト
##
Text 2: {テキスト}
Keywords 2:6. 禁止事項より推奨事項を伝える
「〜するな」より「〜してください」の方がモデルは適切に従います。
改善前:
ユーザー名やパスワードを聞かないでください。改善後:
個人情報に関する質問は避け、代わりにヘルプページ(www.example.com/help)を案内してください。7. コード生成時は「導入ワード」を活用する
importやSELECTのような開始キーワードを置くことで、モデルを正しい方向に誘導できます。
# マイルをキロメートルに変換する関数を作成
# 1. 数値を入力として受け取る
# 2. キロメートルに変換して返す
import主要パラメータの調整
- model: 高性能モデルほど精度が高いがコストも上昇
- temperature: 0で最も事実に忠実、高くすると創造的な出力に
- max_completion_tokens: 出力の上限トークン数
- stop: 生成を停止させる文字列を指定
データ抽出や事実確認にはtemperature=0が推奨されます。
まとめ
ちょっとした書き方で精度が増すと思いますので、7つのテクニックを頭に入れておきましょう。
今回、下記の内容は省略しました。
- 「何でも生成」機能を使う → OpenAI Playground固有の機能なので省略
- パラメータ調整 → 別セクション「主要パラメータの調整」として分離
