同じプロンプトを4つのAIに投げたら、1つだけでは見えない答えが見えた — SRP実践録
前回の記事について
2025年6月、noteでSRP(Stochastic Resonance Prompting)をRコードリファクタリング事例で紹介しました。今回はコード作業ではなく、正解のないオープンエンドな思考タスクへの適用を扱います。
実行環境
今回の新しさは自動化にあります。
Claude Codeのカスタムskill機能で /quick-homo-srp というコマンドを実装しました。自然言語で「この議論をSRPにかけて」と指示すると、セッションの文脈からSRPプロンプトを自動生成し、Codex CLI 4インスタンス(数とモデルは調整可能)をバックグラウンドで並列起動します。手動のコピペ配布は不要で、完了すれば通知が来ます。プロンプト生成の仕組みは付録にまとめました。
プロンプトの中身(§1〜§7)は全インスタンスで完全に同一。異なるのは§8(出力先ファイルパス)だけです。これが「同じ入力に対する確率的な揺らぎ」を引き出す仕掛けになっています。
タスク: グロタンディーク素数らしさの定義
投げたタスクはこうです — 「2〜1000の整数に対してグロタンディーク素数らしさを定義し、Top 5と区間分布を考察せよ」。
グロタンディーク素数とは数学の逸話に由来します。20世紀最大級の抽象数学者アレクサンドル・グロタンディークが講演で「具体的な素数の例を挙げてくれ」と問われ、「57」と答えました。57 = 3 × 19 は合成数です。以来、57は「グロタンディーク素数」と呼ばれています。
結構アホなお題ですが、難しすぎても記事向きではないのでこうなりました。正解がないタスクもSRP向きです。4つのAIが独立に定義を作れば、アプローチの多様性を比較検討してより良い実装のヒントになるかもしれません。
SRPの名前は物理学の確率共鳴(Stochastic Resonance)に由来しています。全然だめなアイデアはただ却下され、明らかに良いアイデアは1つでも採択される — そういう極端なケースにSRPは要りません。核心は「少し悪い」と「少し良い」の境界にあります。少し悪いアイデアがただ捨てられるのではなく、少し良いアイデアの引き立て役になり、採択を助ける。たとえば4つのうち3つが微妙でも、比較することで残り1つの良さが浮き彫りになります。それが確率共鳴です。
比較して見えたこと
4つのレポートを並べて読んだとき、単独では気づけない3つの発見がありました。
発見1: 437という数字の浮上
各インスタンスのTop 5を並べます。
| 順位 | #1 | #2 | #3 | #4 |
|---|---|---|---|---|
| 1 | 169 ( |
259 ( |
169 ( |
943 ( |
| 2 | 361 ( |
371 ( |
289 ( |
989 ( |
| 3 | 841 ( |
559 ( |
361 ( |
851 ( |
| 4 |
437 ( |
589 ( |
437 ( |
437 ( |
| 5 | 221 ( |
611 ( |
841 ( |
589 ( |
Top 1は4つとも異なります。169、259、169、943とバラバラです。だが 437は3/4のインスタンスでTop 5に入っている。他の数は最大でも2/4。
なぜ437がロバストか。2, 3, 5, 7, 11, 13のいずれでも割れない。最小素因数19は
57との対比が面白い。57は全インスタンスで「中位〜中位上位」に留まりました。3で割れることが普遍的な減点要因です。437は57の長所(奇数、近傍に素数が多い)を保ったまま、弱点(3で割れる)を克服した「57の上位互換」と言えます。
単独実行なら「169が1位」「259が1位」とだけ知って終わります。比較して初めて、437の定義を超えた安定性が見えてきます。
発見2: 設計欠陥の検出
Instance #3のTop 5を見返してみてください。スコアが全て1.000で並んでいます。
注: 上位はスコア上限1.000に到達する"天井効果"があり、僅差の順位づけができない。
— Instance #3 レポートより
#3自身もこの問題を脚注で認めています。だがそれがどの程度深刻なのかは、#3の中だけでは判断できません。
#1, #2, #4と並べると状況は明白です。他の3つはスコアが連続的に分布し、きちんと差別化できている。#3だけが天井に張り付いているのは設計上の欠陥です。
コードレビューと同じ原理です。自分のコードの問題は自分では見えにくい。4人が同じ問題に取り組めば、誰かが — 間接的にではあっても — 欠陥を検出します。
発見3: 暗黙の前提の可視化
Instance #4だけが定義に
結果、#4のTop 5は900台に集中しています(943, 989, 851)。他の3つは範囲全体に散らばっている。
「大きい数ほどグロタンディーク的か?」 — この問いはプロンプトに書いていません。#4は暗黙にYesと答え、#1〜#3は暗黙にNoと答えた。どちらの立場にも正当な理由があります。
だが比較しなければ「そこに選択があった」こと自体に気づかない。
SRPは暗黙の前提を可視化します。分岐点こそが、本当の設計判断が潜む場所です。
FAQ
Q1: 同じモデル × 4で多様性は出るのか?
経験上、十分出ます。特に難易度や自由度の高いタスクでは出ます。もっとも、そうでなければSRPを使おうと思わないでしょうが...。今回は4つの定義名(認知的偽陽性指数、認知的錯覚度、認知的蜃気楼指数、認知的迷彩度)、4つの異なる数式、4つの異なるTop 1が得られたのがその証拠です。LLMの確率的生成が自然に多様性を担保します。
ただし、意図的に違うモデルで実行することもあります。最近はgpt-5.2、gpt-5.2-codex、gemini-3.0-pro、Claude Opus 4.5で実施することも度々です。多少はバリエーションに幅が出ますが、自分のドメイン知識に自信がある場合に、そもそも良いSRPプロンプトを準備してあげられると効果がよく出る感じです。
Q2: コスト4倍では?
並列実行なので所要時間は1回分とほぼ同じです。単独実行 → 欠陥発見 → やり直しの繰り返しより、最初から4回走らせるほうが効率的な場合が多い。2026年2月から2ヶ月間、Codexのレートリミットが2倍に引き上げられているので、試すには良い状況です。
Q3: 結果の統合は手動?
今回はClaude Opus 4.5が統合レポートを作成しました。完全自動化もスキル追記だけで容易です。ただ、ドメイン判断が入る統合は人間の介入が必要です。というより、思わず一旦介入したくなることがあるかもしれません。
Q4: どんなタスクに向いている?
多少のコストをかけてもあと一歩成果物の質をブーストしたいときです。ただし、ソートや計算のような決定論的タスクには無駄です。
たとえば正解がないオープンエンドなタスク — 設計レビュー、定義策定、リファクタリング方針、仕様書作成。計画の策定方法のメタ策定は定番タスクです。もしくは、複雑すぎて、単純なコーディング → 検証 → 再検証 → レポートではまとめきれるか怪しいタスクに、スイスチーズ的な防御策として使っています。
具体例を挙げると、「自然言語で書かれた複雑な仕様を、正規表現のようなパターンに変換する。パターンの書き方には複数の流儀があり、変換の正しさを網羅的に検証する必要がある」— こういうタスクに向いています。専門的に言えば、化学工学の論文に記載された原子の組み合わせルールをSMARTS(分子構造の正規表現)に変換し、対象分子を漏れなく捕捉できるか検証する作業です。4つのAIに同じ仕様を変換させて比較し、かなりの成果が上がりました。
ただ、この手法を開発したきっかけは冒頭のnote記事で説明したようなものです。自分が不案内な分野のタスクだけど、SRPで良い計画を練ってまとめてからエージェントに投げたい — そういうときに今でもそれなりに使っています。
Q5: プロンプトのコツは?
暗黙の前提を残さないこと。SRPプロンプトテンプレート(8セクション構成)が構造を強制します。特にGuiding Questionsを具体的に番号付きで書くと、比較可能な出力が得られやすいです。
Q6: Claude Code以外でもできる?
できます。前回のnote記事は手動コピペで実施しました。並列実行できる環境なら何でもいい。自動化は便利ですが必須ではありません。
おわりに
SRPは万能ではありません。ただ「比較が隠れたものを見せる」というシンプルな原理に基づいています。1つのAIの出力を鵜呑みにする前に、もう何回か投げてみる — それだけのことです。
質問・フィードバックはコメントで歓迎します。
付録: SRPプロンプトの自動生成
/quick-homo-srp スキルの内部では、まず現在の会話から以下の6項目を抽出します。
- Objective: 何を生成するか、なぜこのタスクが存在するか
- Domain knowledge: 受け手のAIが知らないと無効な出力をする前提知識
- Design decisions: 過去に試して却下した方針、制約の経緯
- File references: エージェントが読むべきファイルの明示的なリスト
- Constraints: コードだけでは推論できないルール
- Evaluation criteria: 出力の良し悪しを判定する基準
これを§1 Objective〜§8 Output Instructionsの8セクション構成テンプレートに流し込み、構造化されたプロンプトを生成します。テンプレートの中核は§6 Guiding Questions(番号付きの具体的な問い)で、これが各インスタンスの出力を比較可能な形式に揃えます。
# 各インスタンスの起動コマンド(実際のスキル出力)
cat <<'PROMPT_EOF' | codex exec --full-auto -m gpt-5.2-codex -
[§1-§7: 全インスタンス共通のSRPプロンプト]
[§8: このインスタンス固有の出力パス]
PROMPT_EOF
§1〜§7は全インスタンスで同一、§8の出力先ファイルパスだけが異なります。テンプレートが構造を強制するので、出力形式は揃いつつ中身は自然に分岐する — これがSRPの仕掛けです。
Discussion