🤔

o1/o3-miniとGPT-4oでのプロンプトエンジニアリングの違い

2025/03/11に公開

1. はじめに

reasoning modelと non-reasoning modelでのプロンプトエンジニアリングの違いについて、同じ調査をあと20回くらいしそうなので、メモがてら記事にしておきます。
ちなみに、Geminiの場合は、thinking model と呼ばれています。

OpenAIのo1/o3-miniのようなthinkingモデルと、non-thinkingモデルである(e.g., gpt-4o)とでは、プロンプトエンジニアリングにおいていくつかの違いがあり、それを記載します。

2. モデル自体の説明

2.1 Reasoning model とは

OpenAI の o1 や o3-mini のような reasoning model は、複雑な推論を行うためにトレーニングされた大規模言語モデルです。ユーザーに応答する前に、長い内部的な思考の連鎖を生成し、複雑な問題解決、コーディング、科学的推論、複数段階の計画などのタスクに優れています。

2.2 GPT 系列のモデルとの比較

GPT モデル(GPT-4o など)と比較して、o-series モデルは異なるタスクに優れており、異なるプロンプトを必要とします。GPT モデルは、明確に定義されたタスクの実行に適していますが、reasoning model は、曖昧さや複雑さを伴う複雑な問題解決に適しています。

3. Reasoning model に適したユースケース

  • 曖昧なタスク: reasoning model は、限られた情報やばらばらの情報から、ユーザーの意図を理解し、指示のギャップを処理するのに優れています。
  • 大量の非構造化情報からの情報の抽出: reasoning model は、大量の非構造化情報から、質問に答えるために最も関連性の高い情報を理解して抽出するのに適しています。
  • 大規模データセットにおける関係性とニュアンスの発見: reasoning model は、複雑なドキュメントを分析し、ドキュメント間の類似点を引き出し、データに表れない暗黙の了解に基づいて意思決定を行うのに特に優れています。例えば、契約書や財務諸表などの分析に活用できます。
  • Multi-step agentic planning(複数段階の agentic planning): reasoning model は、問題を解決するための詳細な multi-step solution を生成し、高い知能または低い遅延のどちらが重要かに基づいて、各ステップに適した GPT モデルを選択および割り当てる「the planner(計画者)」として使用すると成功します。
    • Visual reasoning(視覚的推論): o1 は、最も困難なビジュアル、曖昧な構造のチャートやテーブル、画質の悪い写真などを理解できます。例えば、建築図面から必要な情報を抽出できます。
    • コード品質のレビュー、デバッグ、改善: reasoning model は、大量のコードをレビューおよび改善するのに効果的であり、バックグラウンドでコードレビューを実行できます。
    • 他のモデル応答の評価とベンチマーク: reasoning model は、他のモデル応答のベンチマークと評価にも適しています。

4. 👍 Reasoning model 特有のプロンプトエンジニアリングでするべきこと

4.1. 明確さのために delimiters(区切り文字)を使用する

markdown、XML タグ、セクションタイトルなどの delimiters を使用して、入力の異なる部分を明確に示すことで、モデルが異なるセクションを適切に解釈するのに役立ちます。

4.2. まず zero-shot を試し、必要に応じて few-shot を試す

reasoning model は、良好な結果を生成するために few-shot example を必要としないことが多いため、最初に例なしでプロンプトを作成してみてください。

4.3. 明確で具体的な指示を使用する

モデルに何をさせたいか、または答えてほしいかを明確に述べます。無関係な詳細は避けてください。複雑な質問に対しては、率直な質問で十分な場合があります(手の込んだロールプレイや複数質問プロンプトは不要)。

4.4. 必要なコンテキストを提供する

モデルが必要とするドメイン情報(ケースの事実、数学の問題のデータなど)を含めます。モデルは最新の情報やニッチな知識を持っていない可能性があるため、必要な情報は提供します。

4.5. 出力形式を指定する

特定の構造(リスト、アウトライン、JSON など)で回答が必要な場合は、モデルに明示的に指示します。Reasoning model は、形式の指示に確実に従います。例えば、「手順の順序付きリストとして回答を示してください」。

4.6. 指示を通じて冗長性と深さをコントロールする

簡潔な回答が必要な場合は、「1つの段落で答える」または「1つの文の説明で Yes/No を答える」のように指示します。詳細な分析が必要な場合は、「詳細な説明を提供する」ように促します。モデルがデフォルトで望ましい詳細レベルを知っていると仮定しないで、指示してください。

4.7. o3-mini の Reasoning Effort 設定を活用する

API 経由で o3-mini を使用する場合は、タスクに適した Reasoning Effort(低/中/高)を選択します。高はより徹底的な回答を提供し(複雑な法的推論や難しい数学に適しています)、低はより迅速で短い回答を提供します(簡単なチェックや簡単なクエリに適しています)。これは、o3-mini のプロンプトの動作を調整する独自の方法です。

4.8. 複雑なタスクで精度を確保する

困難な問題で最も正確な応答を得るには、プロンプトで推論モデルの強みを利用します。o1 は自己チェックを行い、矛盾を検出できるため、それを利用するように依頼できます。たとえば、「すべての事実を分析し、結論の一貫性を再確認してください」などを追記してください。

4.9. ソースとデータを明示する

タスクが与えられたデータの分析(ドキュメントの要約や提供された数値からの回答の計算など)を含む場合、そのデータが明確に提示されていることを確認してください。o1/o3 はそれを熱心に使用します。明確にするために、データを箇条書きまたは表に分割することもできます。モデルがハルシネーションを起こしてはならない場合(たとえば、法的状況で法律を捏造すべきではない場合)、「提供された情報と一般的な知識のみに基づいて回答し、詳細を捏造しないでください」と明示的に述べてください。推論モデルは一般的に既知の事実に固執するのが得意であり、そのような指示はハルシネーションの可能性をさらに減らします。

4.10. テストと反復

reasoning modelは言い回しに敏感な場合があるため、良い答えが得られない場合は、質問を言い換えたり、指示を厳しくしたりしてみてください。わずかな変更(たとえば、直接的な質問とオープンエンドのプロンプトを求めるなど)で、応答が大幅に向上することがあります。幸いなことに、o1/o3 の反復の必要性は古いモデルよりも少なくなっています(通常、複雑なタスクを1回で正しく行いますが)、プロンプトの微調整は、明確さまたは形式を最適化するのに役立ちます。

5. 👎 Reasoning model 特有のプロンプトエンジニアリングですべきでないこと

5.1. Chain-of-thought プロンプトを避ける

o1/o3-miniは内部で推論を実行するため、「step by step で考える」または「推論を説明する」ように促す必要はありません。

5.2. Few-shot の例を最小限にするか、または使用しない

デフォルトでは、zero-shot プロンプトから開始します。モデルがタスクまたは形式を誤って解釈する場合は、ガイダンスとして1つの簡単な例を追加できますが、O1/O3 に長い例のチェーンを追加しないでください。それらは必要ありませんし、パフォーマンスが低下することさえあります。

5.3. プロンプトに無関係な情報を詰め込まない

モデルが理解するために必要なドメイン情報(例えば、案件の事実、数学の問題のデータなど)は含めるべきですが、無関係なテキストや例を過度に含めると、モデルの焦点が薄れる可能性があります。

5.4. 過度に複雑なプロンプトを使用しない

o1 と o3 は集中的な内部推論を実行するため、余分なテキストを含まずに、焦点の絞られた質問または指示に最もよく応答します。

5.5. 単一のプロンプト-回答サイクルに依存しない

クリティカルなユースケースでは、単一のプロンプト-回答サイクルに依存しないでください。フォローアッププロンプトを使用して、モデルに回答の検証または正当化を依頼するか(「その結論に自信がありますか?理由を説明してください」)、またはプロンプトを再度実行して、一貫した結果が得られるかどうかを確認します。一貫性と十分に正当化された回答は、モデルの推論が確実であることを示します。
これらの推奨事項に従うことで、o1 と o3-mini の能力を最大限に活用し、その強みを生かした高度に最適化された応答を得ることができます。

余談

NotebookLM様々。人によっては、下の参考文献を入れて、reasoning modelとnon-reasoning modelを対比させる形でプロンプトエンジニアリングの説明をさせたほうがとっつきやすいかもしれません。

参考文献

Discussion