はじめに
CoT、Few-shotと来て、今回はロールプロンプトです。「あなたは経験豊富な弁護士です」「あなたは優秀な数学教師として振る舞ってください」——CoT・Few-shotと並んで、おそらく一番使われているプロンプト技法です。
そしてこれも、今まで一度も機構レベルで解剖されたことがありませんでした。
先に結論を言っておきます。今回もまた、同じ場所に着きます。 別の研究群を、別の角度からたどって、です。ただし今回は、その「同じ場所」に着くまでの道のりが、これまでで一番入り組んでいます。ロールプロンプトが何を注入していて、何を注入していないのか——ここを正確に切り分けるのが今回の記事の目的です。
1. まず、何の話をしているのか
「ロールプロンプト」とは、モデルに何らかの人格・専門家像を割り当ててから頼む技法です。
あなたは10年目の弁護士です。以下の契約書の問題点を指摘してください。
あなたは優秀な数学教師として、生徒に教えるつもりで解いてください。
CoTが「途中式を書かせる」、Few-shotが「お手本を並べる」だったのに対し、ロールプロンプトは**「誰として答えるか」を指定する**という、また違う角度からの介入です。
なぜこれが気になる技法なのか。理由は単純で、一番よく使われているのに、一番説明されていないからです。「なんとなく専門家っぽく答えてほしいから」という以上の理由を、多くの人は持っていないと思います。
2. 一番不穏な発見から
Kong et al. (2023)。ロールプロンプトを12種類の推論ベンチマークで検証した研究です。
結果は驚くべきものでした。AQuA(数学の文章題)で正答率が53.5%→63.8%、Last Letters(記号推論、単語の最後の文字を繋げる)に至っては23.8%→84.2%まで跳ね上がっています。
しかも著者たちは、ここで面白い主張をしています。
ロールプロンプトは、暗黙のChain-of-Thoughtのトリガーとして機能している。
つまり——「あなたは数学教師です」は、数学知識を注入しているのではなく、遠回しに「ステップバイステップで考えて」と言っているだけかもしれない。
補強する実験もあります。「あなたは海賊です」というロールプロンプトを与えたところ、通常のアシスタント設定より平方根の計算が正確になった、という報告です。
これ、最初にこの話をしたとき、私は「海賊ロールがCoTを誘発したから」とだけ説明しました。でも、これは理由になっていません。 なぜ海賊がCoTを誘発するのか? もっと言えば、なぜ役になりきること自体が、ステップバイステップの説明を引き出すのか?
ここを詰めずに済ませるのは、まさにこの連載が繰り返し警告してきた「もっともらしい説明で満足する」ことそのものです。もう一段掘ります。
自己言及コラム:私自身が「うろ覚え」をやった場面
実はこの連載を書いている最中、別の場面で同じ失敗をしていました。Hayateさんが /ghost というコマンドを試しに打った際、私はそれが実在するCloud機能かどうか確認せず、「認識できないコマンド」として黙って流しました。
これは「存在しないと確認した」のではなく、「知らないので流した」だけです。「海賊ロールがCoTを誘発した」も、これと同じ種類の手抜きでした——もっともらしい因果関係を、検証せずに言葉にしてしまう。この連載の教訓を、この連載を書いている最中に自分でやらかしていた、という話です。
なので今回は、逃げずに掘ります。
3. なぜ、役になりきると計算量が増えるのか
Kong et al. の論文には、付録にまさにこの疑問を検証した実験が載っていました。
彼らの手法は、実は単純な「ロールを1行足すだけ」ではありません。2段階の対話になっています。
Step1(ロール設定): 「あなたは優秀な数学教師で、生徒に単語の最後の文字を
繋げて新しい単語を作る方法を教えています」
Step2(ロール確認): モデルが「もちろんです!お手伝いできて嬉しいです」
のように、役になりきって一度相槌を打つ
Step3(本題): 実際の問題を提示
このStep2の「相槌」が、実はカギでした。著者たち自身が、「これは単に文章が長くなっただけでは?」という疑いを検証しています。
相槌の中身を、意味のない一般的な返答に差し替えて、文字数を揃えて比較したんです。
| 相槌の中身 | 文字数 | Last Letters正答率 |
|---|---|---|
| ロールに沿った相槌(後述) | 214字 | 84.2% |
| 一般的な相槌「喜んでお手伝いします!」 | 227字 | 69.4% |
| 一般的な相槌(さらに長い) | 473字 | 72.4% |
214字の方が、2倍以上長い473字より正答率が高い。 長さではありません。
では中身の違いは何か。実際の「ロールに沿った相槌」を見ると、こう書かれています。
「もちろんです!単語の最後の文字を繋げて新しい単語を作ることについて、お手伝いできて嬉しいです。質問をどうぞ。」
タスクの手順を、モデルが自分の言葉で復唱しているんです。 一方の「一般的な相槌」は、内容に一切触れず「喜んでお手伝いします!」と言っているだけ。
つまり正確な機構はこうです。
ロール設定に対して、モデルが役になりきって相槌を打つとき、自然とタスクの手順を要約・復唱する。この復唱が、CoTの「途中式」と同じ役割を果たしている。
第1回の結論を思い出してください。 フィラートークン(意味のない「……」)は少ししか効かず、タスクに紐づいた本物の途中式が効いていました。ここでも同じ構造です。意味のない長さは弱く、タスクに紐づいた中身が強い。
海賊が数学を得意なわけではありません。「海賊として振る舞ってください」と言われたモデルが、役になりきって喋る過程で、たまたま問題文の要素を自分の言葉で言い直すことになった。それだけです。
4. ロール選びが効く場面、逆効果になる場面
同じ論文に、ロールの中身を変える実験もあります。AQuA(数学)で8種類のロールを比較しました。
| ロール | 正答率 | 分類 |
|---|---|---|
| 数学教師 | 63.8% | 有利 |
| 数学者 | 60.2% | 有利 |
| 警官・農家・医者・作家(無関係) | 55.5〜59.8% | 中立 |
| (ロールなし、ゼロショット基準) | 53.5% | 基準 |
| そそっかしい生徒(自己卑下) | 51.6% | 不利 |
| 数学が苦手な人(自己卑下) | 45.3% | 不利 |
面白いのは、無関係なロール(警官・農家)でもゼロショット基準を上回ることです。役になりきって相槌を打つ過程で、タスクの復唱がある程度起きるので、ロールの中身が直接関係なくても、多少の底上げがある。
一方、「自分は不出来だ」と自己申告するロールだけが、明確に基準を下回ります。これは自己成就的な効果で、モデルが「苦手な人」という設定に忠実に、実際に不出来な振る舞いをしてしまう。
つまり効果は非対称です。良い方向にはそこそこ効き、悪い方向(自己卑下)にはハッキリ効く。
5. CoTと同じ境界線を持っている
ここが今回一番の見どころです。前章までの結果は、すべて数学・記号推論のベンチマークでした。一方、事実の想起が問われるタスクではどうでしょうか。
- Zheng et al. の研究では、システムプロンプトに埋め込まれたペルソナが、事実に基づく質問応答の性能を確実には改善しないと報告されています
- 2026年のPRISM論文では、専門家ペルソナが応答の質・トーンの整合性(アライメント)は改善する一方、正確性(MMLUのような事実ベースのタスク)はむしろ悪化する、という綺麗なトレードオフが報告されています
これ、第1回で見たCoTの境界線と、ほぼ同じ形をしています。
| 効く | 効かない・逆効果 | |
|---|---|---|
| CoT(第1回) | 数学・記号推論・多段の論理 | 直感的パターン認識、例外の多い分類 |
| ロールプロンプト(今回) | 数学・記号推論のベンチマーク | 事実に基づく質問応答 |
ロールプロンプトが暗黙のCoTトリガーだとすれば、これは当然の帰結です。CoTが効くところで効いて、CoTが効かないところで効かない。 別の技法だと思っていたものが、実は同じ機構の別の入り口だった、ということになります。
6. ロールプロンプトには、実は2つの別の効果が同居している
ここまでの話だと、「ロールは弱いCoTトリガーでしかない」という結論になりそうですが、それだけでは説明できないことがあります。
専門用語を知らない人が「あなたは弁護士です」と指定すると、実際に法律用語や慎重な言い回しが出てきます。 これは推論力の向上とは関係のない、もう1つの独立した効果です。
整理すると、ロールプロンプトには性質の異なる2つの効果が同居しています。
| 効果 | 中身 | 機構 |
|---|---|---|
| A. 語彙・トーンへのアクセス | 「弁護士」と言うだけで専門用語・言い回しが出る | 第2回のFew-shotの「ラベル空間」と同じ。学習データの中の、その語彙圏を呼び出しているだけ |
| B. 暗黙のCoTトリガー | ロールになりきる過程でタスクを復唱し、計算予算が増える | 今回確認した機構 |
Aは信頼性が高く、予測可能です。 「弁護士」と指定すれば、ほぼ確実にそれらしい語彙が出てくる。専門用語に不慣れな人にとって、これは素直に実用的です。
Bは間接的で不安定です。 ロール選びを間違えると(自己卑下系のロールなど)、むしろ逆効果になりうる。しかも「本当にタスクを復唱してくれるか」は保証がない。
この2つを区別せずに「ロールプロンプトを使えば賢くなる」と思っていると、Bの不安定さに足をすくわれます。
7. より効果的なプロンプトはあるか
Bの目的(推論の底上げ)なら、遠回りせず直接やった方が確実です。効いているのは「タスクの手順を自分の言葉で言い直す」ことそのものだったので:
❌ 遠回し: あなたは優秀な数学教師です。
(役を演じさせて、副次的に復唱を誘発することを期待する)
✅ 直接: まず、この問題で何を求められているか、自分の言葉で
言い換えてください。それから解いてください。
これは第1回のPlan-and-Solve(計画先出し)や、素のCoT指示と同じ効果を、より確実に狙えます。ロールという間接的な経路を通す必要がありません。
Aの目的(語彙アクセス)なら、ロールプロンプトはそのまま素直に有効です。「AもBも両方欲しい」と思って1つのロール指定に頼るより、Aは役割指定、Bは明示的な指示、と役割分担して書く方が、両方とも安定します。
あなたは弁護士として、以下について回答してください。 ← A(語彙)
まず、この質問で何を確認すべきか整理してから答えてください。 ← B(復唱)
8. バイアスのリスク
正直に書いておくべき話です。ロールプロンプトは学習データにおけるそのロールの表現のされ方に強く依存するため、ステレオタイプを強化しうるという限界があります。
具体的な指摘として、職業ロールの方が親密な役割(家族関係など)より安定する、性別中立な用語(「彼」「彼女」ではなく職業名だけ)の方が性能が安定する、といったベストプラクティスがある一方、属性の異なるペルソナを割り当てると、その属性に紐づく暗黙的な推論バイアスが答えに混入する、という報告もあります。
実務では、職業・機能で指定し、性別や年齢などの属性は必要のない限り持ち込まないのが安全です。
9. 複数のロールを、1つの会話の中で混ぜたらどうなるか
ここから発展的な話です。「Aくんの視点とBくんの視点、両方欲しい」というとき、これは実は3パターンに分けて考える必要があります。
パターン①:ロールを複数用意しておき、用途に応じて単体で呼び出す
状況: 「Aロール用プロンプト」「Bロール用プロンプト」をライブラリとして保管
実行: タスクに応じて、1回の呼び出しにつき1つだけ選んで使う
結果: ◯ 問題なし
1文脈・1ロールという制約の中に、素直に収まっています。
パターン②:1つの会話の中で、ロールを演じ分けさせる
「まずAの立場で答えて」→「次にBの立場で答えて」を、同じ会話の中で連続実行
これはうまくいきません。 理由は2つ重なっています。
理由①:同じ文脈の中に積み重なる
Aの発言もBの発言も、同じ文脈window・同じ重みの中に積み重なっていきます。第3回で扱った直近バイアスにより、後から演じた方の色が強く残りやすい。会話が長くなるほど、ペルソナの一貫性も崩れやすいことが報告されています。
理由②:そもそも独立した判断になっていない
これは前の連載(第1回・ポチョムキン理解)で、既に指摘されていたことでした。
「マルチペルソナ・批判的再鑑者・自己分類ループは、単体では相関した誤差に無力」
複数の人格を演じさせても、中身は同じモデルの同じ重み・同じ盲点です。違う人が3人チェックしているのではなく、同じ人が3つの衣装を着ているだけ。だから判定が揃って間違う可能性がある。
前の連載が採用した解決策は、「懐疑的な性格を持たせる」ことではなく、**批判的なレビュアー役に「自分の概念理解を一切使わせず、外部のチェックリストとの機械的な照合だけをさせる」**という設計でした。懐疑心という性格特性に頼るのではなく、判断そのものを外部基準に委ねる方向で、相関した誤差を回避していたわけです。
つまり今回の記事の結論は、前の連載の結論と矛盾するどころか、別の角度から同じ結論を補強していました。
パターン③:「Aくん、Bくんに一緒に頼む」を、内部で別々の呼び出しに分解する
ユーザー: 「AとBの視点でレビューして」
↓
オーケストレーター(親)が判断し、
→ 呼び出しA を新しい文脈で実行(Aのロールのみ)
→ 呼び出しB を新しい文脈で実行(Bのロールのみ)
→ 両方の結果だけを受け取って統合
これは、できます。 ユーザー体験としては「1回のお願いで両方に投げた」ように見えても、内部ではそれぞれの呼び出しが、依然として「1文脈・1ロール」という制約に従っています。次のセクションで扱うClaude Codeのサブエージェントが、まさにこのパターンです。
まとめると、「複数の人格を用意して都度1つ呼び出す」のは問題なし。「同じ会話の中で演じ分けさせる」のは期待通りに機能しにくい。「実は裏で別々の呼び出しに分解されている」なら、また話が変わってくる——これが正確な整理です。
「悲観的なレビュアー」との整合性について
念のため補足すると、「悲観的・懐疑的なレビュアー」ロール自体は、今回の「自己卑下ロールは逆効果」とは矛盾しません。軸が違います。
- 「数学が苦手です」と言いながら数学を解かせる → タスクへの無能の自己申告 → 逆効果
- 「懐疑的なレビュアーです」と言ってレビューさせる → レビューという仕事にとって有利な特性の付与 → 順当に機能する
懐疑心は、レビューというタスクにとっては得意分野の宣言です。ただし別の弱点もあって、批判役のモデルは人間よりも「あら探し・存在しないバグの指摘」の率がずっと高いことが確認されています。懐疑心が強すぎて、実在しない欠陥まで指摘し始める、という暴走のリスクは残ります。
10. では、Claude Codeが「複数の役」を扱えるのはなぜか
これも突き詰めると、実は単一の文脈で複数ロールを扱っているわけではないことが分かります。
Claude Codeのサブエージェント機能を調べると、こう説明されています。
各サブエージェントは、それぞれ独立した、新しい文脈windowから始まります。親の会話履歴は見えません。各サブエージェントは、それぞれ独自の文脈window・独自のシステムプロンプト・独自のツールアクセス権を持ちます。
つまり構造はこうです。
Claude単体の会話 = 1つの文脈window、1つのロール
Claude Codeのサブエージェント = N個の独立した文脈window、それぞれ1つのロール
Claude Codeは「1つの人格に複数の役を演じさせる」のではなく、「1つの役を演じる人格を、必要な数だけ量産して、結果だけ持ち帰らせている」だけでした。 1回1回の呼び出しを見れば、Claude単体の会話とまったく同じ「1文脈・1ロール」制約に従っています。破っているように見えて、破っていません。
そして重要なのは、それぞれのサブエージェントが違う情報(違うファイル、違う実行結果、違うツール権限)を見られるということです。中身の重みは同じでも、見ているものが違えば、判断は本当に変わりうる。これがセクション9の「相関した誤差」を、部分的に回避する方法になっています。
逆に言うと、サブエージェントに同じ情報だけ渡して役名だけ変えても、相関した誤差の問題は残ります。文脈を分けるだけでは不十分で、見ている情報そのものが違うことが効いている、という点は覚えておく価値があります。
11. 実務チェックリスト
+ [推奨] 語彙・トーンを変えたいだけなら、職業・機能ベースでロールを指定する
+ [推奨] 推論を底上げしたいなら、ロールより直接「手順を言い換えて」と指示する
+ [推奨] 属性(性別・年齢など)は、タスクに必要のない限り持ち込まない
+ [推奨] レビュー・批判役には、懐疑心という特性を素直に与えてよい(得意分野の宣言なので)
- [注意] 自己卑下・無能を自称するロールは、その通りに振る舞う逆効果がある
- [注意] 1つの会話の中で複数ロールを演じ分けさせない(相関した誤差が残る)
- [注意] 事実の正確性が問われるタスクでは、ロールプロンプトに底上げを期待しない
まとめ
機構の話
- ロールプロンプトは、専門知識を注入する技術ではない。役になりきって相槌を打つ過程で、タスクの手順を自然に復唱してしまうことがあり、それが暗黙のCoTトリガーとして働く
- 効いているのは長さではなく、タスクに紐づいた中身(第1回のフィラートークンの教訓と同じ構造)
- ロールの中身は、無関係でも多少効き、自己卑下だけが明確に逆効果になる、という非対称な効き方をする
境界線の話
- ロールプロンプトは、CoTが効く場面(数学・記号推論)で効き、CoTが効かない場面(事実の想起)で効かない、という同じ境界線を持っている
分解の話
- ロールプロンプトには「語彙・トーンへのアクセス」(信頼できる)と「暗黙のCoTトリガー」(不安定)という、性質の異なる2つの効果が同居している。分けて設計した方が安定する
- 推論の底上げが目的なら、遠回りせず直接「手順を言い換えて」と指示した方が確実
複数ロールの話
- 1つの会話の中で複数ロールを演じ分けるのはうまくいかない。同じ重み・同じ盲点から生成しているため、独立した判断にならない(前の連載「相関した誤差」の再確認)
- Claude Codeのサブエージェントが機能しているのは、複数ロールを扱えるからではなく、文脈を分離し、それぞれに異なる情報を見せているから。「1文脈・1ロール」の制約自体は破っていない
おわりに
CoT・Few-shot・ロールプロンプト。3つの独立した技法だと思っていたものが、掘っていくと、かなりの部分が同じ現象の別の入り口でした。
いずれも、モデルに新しい能力を教えているのではなく、すでに持っている振る舞いのどの部分を呼び出すかを選んでいるだけ。CoTは「途中式を書く」というジャンルを、Few-shotは「答案の型」を、ロールプロンプトは「その役ならどう話すか」という型を、それぞれ別の入り口から呼び出している。
そして呼び出した後で何が起きるかは、ポチョムキン理解から一貫して繰り返してきた通り、もっともらしく見えることと、正しいことは別です。海賊ロールが計算を助けたという話も、掘る前は「役になりきったから」という、もっともらしいだけの説明でした。掘った後は「タスクを復唱したから」という、検証可能な説明になった。この差が、この連載全体が目指している場所だと思っています。
参考文献
- Kong, A. et al. (2023). Better Zero-Shot Reasoning with Role-Play Prompting. arXiv:2308.07702
- Zheng, M. et al. (2023). Helpful Assistant or Fruitful Facilitator? Investigating How Personas Affect Language Model Behavior. arXiv:2310.10054
- Polignano, M. et al. (2024). SPLIT: Personas Affect Chain-of-Thought Reasoning. 関連研究
- McAleese, N. et al. (2024). LLM Critics Help Catch LLM Bugs (CriticGPT). arXiv:2407.00215