「プロンプトエンジニアリング」という言葉が流行りだしてから、3年くらい経ったでしょうか。
一昔前まで、
- 「あなたは○○の専門家です」
- 「ステップバイステップで考えて」
のようなプロンプトをよく見かけましたが、最近はあまり見かけません。
私もいつの間にか使わなくなっていました。
また、昔のプロンプトテクニックは、Thinkingモデルにおいて「有害」だなんて話もよく聞きます。
というわけで、今回は改めて最新のプロンプトエンジニアリングに関する情報を調べてみました。
そもそもThinkingモデルとは
旧来のGPT-4oやGemini 1.5といったモデルは、入力に対して即座に確率的な回答を生成するだけで、内部で考えているわけではありませんでした。
対して、現在のChatGPTやGeminiは、回答を出力する前に内部で思考過程を生成するモードがあります。これが「Thinkingモデル」です。
ChatGPT:Thinking がThinkingモデルにあたります。

Gemini:思考モードとProがThinkingモデルにあたります。

Instant vs Thinking
まだ2月ですが、今年の漢字を予想させてみました。
Thinkingモードでは、1分32秒も考えてくれています(嬉しい!)。
また、ブラウジングにより、去年発表された漢字を調べてくれています。
予想した理由も、根拠のリンク付きでわかりやすいですね!

このように、Thinkingモデルは人間が頭の中で行う「計画→推論→検証」というプロセスを自律的にやってくれるので、複雑なタスクにおいては特に精度が高い回答をしてくれます。
従来のプロンプトテクニックは「逆効果」?
調べていくと、Thinkingモデルにおいては、従来のプロンプトテクニックはむしろ精度を下げてしまうようです。
「ステップバイステップで考えて」 は不要
そもそも「ステップバイステップで考えて」というプロンプトが流行ったのは、2022年にGoogleが発表したChain-of-Thought Promptingの論文がきっかけです。

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
当時のモデルは、入力に対してすぐに回答を生成するだけで、論理的な思考が苦手でした。そこに「考え方の手順」をプロンプトで示してやると、推論の精度が上昇することを発見しました。
さらに東京大学の研究で「Let's think step by step」と一言添えるだけでモデルが自発的に思考過程を生成してくれることが示され、エンジニアの間で一気に広まりました。
しかし、現在のThinkingモデルは、モデル自体が学習段階で「どう考えれば正解にたどり着けるか」を大量に学習済みなので、下手に指示するとモデル自身の推論を邪魔してしまいます。
OpenAI公式も、ステップバイステップは不要と明記

Reasoning best practices | OpenAI
ペルソナ設定も効果なし
「あなたは○○の専門家です」のようなペルソナ設定も、精度向上には繋がらないみたいです。
2024年12月、ペンシルベニア大学の研究で、最新モデルに対して様々なペルソナを設定し、知識を問う問題の正答率を検証したところ、結果は明確で、"ペルソナなし"と比較して、ペルソナを設定してもスコアはほぼ変わらないというものでした。むしろ一部のモデルでは精度が下がったんだとか。
Playing Pretend: Expert Personas Don't Improve Factual Accuracy
ペルソナ設定が逆効果になる理由として、「ペルソナを設定すると、モデルがその役割の範囲内に自分を制限してしまい、本来持っている幅広い知識を活用できなくなる」ということがあるそう。
たとえば「物理の専門家」と設定すると、実は化学の知識を使えば解ける問題でも「私の専門外なので...」と回答を控えてしまうようなイメージで、融通が利かなくなるようです。
ただし、ペルソナは正確性ではなく、出力のトーンや形式を整える用途では有効だそう。
じゃあどうすればいいのか — Anthropicの推奨
Anthropicの公式ドキュメント(Extended thinking tips)に、Thinkingモデル向けのプロンプトのコツが書かれていたので紹介します。
①「深く考えて」
「どう考えるか」を細かく指定するのではなく、「どれくらい深く考えてほしいか」を伝えるのがポイントのようです。
この数学の問題について徹底的に、詳しく考えてください。
複数のアプローチを検討し、完全な推論を示してください。
最初のアプローチがうまくいかない場合は、別の方法を試してください。
手順は一切指定せず、「徹底的に考えて」「複数のアプローチを試して」という目的レベルの指示だけ。あとはモデルにおまかせします。
②「検証して」
もうひとつ推奨されているのが検証プロンプト。「こう考えて」ではなく「自分の答えをチェックして」と伝えることで、Thinkingモデルの推論力を活かしつつ精度を上げるアプローチです。
数値の階乗を計算する関数を書いてください。
完了する前に、以下のテストケースで解答を検証してください:
- n=0, n=1, n=5, n=10
問題があれば修正してください。
③ 目的と制約を明確に伝える
ドキュメント全体を通して一貫しているのは、「目的」と「制約」をシンプルに伝えましょう、ということ。
「あなたは経営コンサルタントです」とか「まず市場分析から始めて...」みたいな指示は不要で、何の目的で・どんな条件で作りたいのかを伝えれば、あとはThinkingモデルが自分で最適なアプローチを考えてくれます。
| 昔 | 今 |
|---|---|
| どう考えるかを指示する | 深く考えてもらう |
| 専門家ペルソナを設定する | 目的を伝える |
| 手順を細かく規定する | 制約条件を明確にする |
| 思考プロセスを誘導する | 検証させる |
まとめ
Thinkingモデルの時代において、プロンプトはかなりシンプルでよさそう。
また、チャットだけでなく、下記でも応用できそうです。
- システムプロンプト
- Gem、GPTsのカスタム指示
-
CLAUDE.mdやSKILL.md
プロンプトエンジニアリングにおいて大事なのは、
「テクニック」ではなく、「何をやりたいか」だと改めて思いました。
