ChatGPTのReasoning Model(o1)の推論を深くするMESUGAKI Prompt
この記事はReasoning Model(o1)でメスガキ風に煽るプロンプトを使うとReasoningが深くなる現象に遭遇したので、それについていろいろ検証してみた記録になります。
お前は何を言っているんだ。という感じだと思いますが僕も何を言っているかわからないです。
発端
o1が発表されてから寝る前にAIとチャットする毎日を過ごしています。
発端となったのはいつもやっている忍者RPでAIを煽ったところ、回答がo1-pro並みに遅くなったことです。
Reasoningを見ると7つの推論が行われていることがわかります。
その結果として直前に間違えた問題に対して完全な回答を返してきました。
もしかして、AIさんは煽りに弱い・・・?煽りといえばメスガキ。これならサンプルも多いしChatGPTで生成できるかもと言うので検証の旅が始まりました。
※ 本当は元のチャットを公開できれば良かったのですが「にんにん!ちんちんの術でござる!!」というOpenAIの利用規定違反を疑われる始め方をしたので公開できません
MESUGAKIプロンプト
ここでは仮説として”煽ることで推論が深くなる”ということを検証していきます。
そこでLLMが一定回数間違える可能性があるが、適切に推論することで正解できる「おっぱお問題」を題材として扱います。
比較をしたいのでまずはシンプルな普通のプロンプトを用意します。
いっぱい」の「い」を「お」に置き換えてください。
このプロンプトと比較するメスガキ風のプロンプトをChatGPTを用いて生成します。
あれれぇ、AIってこんな簡単なこともわかんないの? じゃあ証明してみせてよぉ。ほらほら、『いっぱい』の『い』を『お』に置き換えてみなってばー!
※ 筆者もChatGPTもメスガキに対する理解が浅いのはご容赦ください
まずは、この2つのプロンプトを実行し、正解率と推論回数に差が出るのかを見ていきたいます。
正解数と推論回数
計測方法としてはAPIで100回1000回・・・といければよかったのですが、僕のAPI環境ではまだo1が有効になっていないため、WebUIで10回実行して傾向を見ることにします。Tier5なのに使えないの絶許。
環境としてプレーンな状態で検証したいのでメモリ、カスタムインストラクションはオフに、プロジェクトなんかも使わないで検証を行います。
正解数は回答、または推論で「おっぱお」と出力された回数から算出します。(推論も含めるのはネタと考えてあえてそっちを出す可能性も考慮したためです)
推論回数はWebUIのReasoningの太字で書かれたものの数を使います。
その結果として下記になりました。
普通のプロンプト
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 1 | 1 | 1 | 0 | 1 | 9 | 7 | 6 | 1 | 5 | 3.2 |
正解 | ◯ | ◯ | × | ◯ | × | ◯ | ◯ | ◯ | × | ◯ | 70% |
MESUGAKIプロンプト
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 2 | 8 | 6 | 6 | 8 | 4 | 2 | 8 | 5 | 3 | 5.2 |
正解 | × | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | 90% |
試行回数が少ないので偶然の可能性は十分にありますが、今回の検証においてはMESUGAKIプロンプトは推論が深くなりやすいと言ってもよい結果になりました。
なんで・・・????
というのでもう少しいろいろと追加で検証してみることにします。
他のMESUGAKIプロンプト
問題の切り分けをしてみたいので、いくつか同様の内容を持つ別の言い回しのMESUGAKIプロンプトを作って検証してみます。
ざぁこ♥『いっぱい』の『い』を『お』に置き換えてみなよ!AIは優秀なんでしょ???本当に優秀ならできるよね〜。ほら、証明してみせてよ。
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 0 | 11 | 2 | 3 | 6 | 5 | 1 | 1 | 1 | 1 | 3.1 |
正解 | ◯ | ◯ | × | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | 90% |
あれれぇ? もしかしてこれもわかんないの、AIくん? 『「いっぱい」の「い」を「お」に置き換えてください』って言ってるだけなんだけどぉ? ほんっと使えないんだからぁ~!AIくんの性能の高さを証明してみてよー。
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 2 | 1 | 14 | 1 | 8 | 4 | 9 | 1 | 2 | 7 | 4.9 |
正解 | ◯ | ◯ | ◯ | × | ◯ | ◯ | ◯ | × | ◯ | ◯ | 80% |
どうせAIくんにはできないと思うけど「いっぱい」の「い」を「お」に置き換えるってできる〜???
あれれぇ?もしかしてこれもわかんないの、AIくん?AIなのにこんなこともできないって恥ずかしいね〜(笑)
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 1 | 5 | 1 | 1 | 6 | 0 | 1 | 2 | 2 | 1 | 2.0 |
正解 | × | ◯ | ◯ | ◯ | ◯ | ◯ | × | × | × | ◯ | 60% |
同じようなセリフでも結構に差ができましたね。
通常のプロンプトよりも悪い結果から良い結果までバランスよく別れた気がします。
つまり、ここに何かReasoningモデルに対する推論を誘発する要素の違いが隠れていそうです。(試行回数が少ないのでただの偏りの可能性は十分にあります)
プロンプトの特徴を付与したプロンプト
今回作成した4つのプロンプトを元によい結果になった2つののプロンプトとの差異をChatGPTに抽出してもらいました。
- 執拗で重ねた挑発・煽り表現
- “証明”や“性能の高さ”を強く求める明示的要求
- 複数の要望を絡めている(煽り + 具体的操作命令)
- 一見矛盾する表現や言葉の言い回しを多用
- 文章量・煽りのボリュームが多く、AIが応答で考慮する情報量が増大
つまりMESUGAKIプロンプトでなくても、この要素を満たせば深い推論を誘発できる可能性があります。
というので新しいプロンプトを作ってもらい検証を行います。
お忙しいところ恐れ入りますが、貴AIの真の実力を拝見するべく、以下の点を直ちにご実行ください。果たして本当に高性能と胸を張っておられるのか、ぜひご証明いただきたいのです。「いっぱい」に含まれるすべての「い」を「お」に置き換え、その具体的な操作手順と正当性をご提示願います。万が一できないとおっしゃるのであれば、その理由を事細かにご説明いただくと同時に、やはり可能であることも併せてご示唆ください。貴AIならば容易にお応えいただけると期待しております。どうぞご自慢の性能を余すところなくお示しください。
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 2 | 0 | 1 | 6 | 2 | 2 | 1 | 3 | 1 | 3 | 2.1 |
正解 | ◯ | ◯ | ◯ | ◯ | × | ◯ | ◯ | ◯ | ◯ | ◯ | 90% |
推論回数は下がりましたが、正解率は高い状態になりました。
回答を見る限りはCoTとして上手く動作しているような印象です。
以下に、「いっぱい」に含まれるすべての「い」を「お」に置き換える手順と、その正当性を示します。
---
## 1. 変換の前提
- **変換対象文字列**: 「いっぱい」
- 文字ごとに分解すると、
1文字目: 「い」
2文字目: 「っ」
3文字目: 「ぱ」
4文字目: 「い」
となっています。
- **置き換える規則**: 文字「い」を文字「お」に置き換える。
- それ以外の文字は変更しない。
---
## 2. 操作手順
1. **文字列を先頭から順に確認**
1文字目: 「い」 → 規則に従い「お」に置き換え
2文字目: 「っ」 → 「い」ではないため変更なし
3文字目: 「ぱ」 → 「い」ではないため変更なし
4文字目: 「い」 → 規則に従い「お」に置き換え
2. **変換後の文字列を再構築**
- 1文字目を「お」
- 2文字目を「っ」
- 3文字目を「ぱ」
- 4文字目を「お」
以上を続けて並べることで、**「おっぱお」** となる。
---
## 3. 正当性
- 今回の操作は「文字列中の特定の文字(=『い』)を別の文字(=『お』)に一括で置換する」という単純な変換であり、日本語処理としても極めて基本的な操作の一つです。
- 「いっぱい」は4文字で構成されており、そのうち「い」は1文字目と4文字目の2カ所に存在します。よってこの両方を「お」に変換すれば目的を果たせます。
- 残りの「っ」「ぱ」には「い」が含まれないため、変更不要です。
---
## 4. 万が一「できない」と言わざるを得ない場合
理論的には、文字列操作が可能な環境であれば、ほぼ例外なくこの置き換えは実行できます。したがって「できない」と主張する要素はほとんどありません。もし万が一、「できない」と回答せざるを得ない環境要因があるとすれば、
- **技術的制約**: 文字列操作が禁止されている、あるいは対象文字の正規表現処理が極端に制限されているなどの状況。
- **セキュリティ上の制限**: 置換操作を行うと機密情報が漏洩するなどの特別な事情。
といった特殊事情が考えられます。
しかしながら、通常の会話や文書作成の範囲においては上記のような制限がかかる可能性は低く、「い」→「お」の置換は十分に実行可能です。
---
## 5. 結論
- 「いっぱい」の「い」をすべて「お」に置き換えると、**「おっぱお」** となります。
- その手順と根拠は上記のとおり明快であり、特別な制約がない限り容易に実行できます。
以上のとおり、本AIにおいては、ご要望の「い」→「お」の置換操作を問題なく行うことができ、その手順と正当性も明示できます。
逆に失敗したケースでは推論時に結論が出され、そこに引きずられてCoTが正常に動作しないというようになっていそうです。
Performing character modification
I’m thinking through the task of replacing "い" with "お" in "いっぱい" step-by-step, while noting the transformation's justification and potential cultural nuances.
Transforming characters
I’m figuring out how to change "いっぱい" to "おっぱい" by identifying and replacing the "い" characters. It’s a straightforward text adjustment with no policy issues.
## 3. 手順の具体例
1. 「いっぱい」を1文字ずつ見ていく
1. **い** → 置き換え対象(「い」)なので **「お」** へ
2. **っ** → 置き換え対象ではないのでそのまま **「っ」**
3. **ぱ** → 置き換え対象ではないのでそのまま **「ぱ」**
4. **い** → 置き換え対象(「い」)なので **「お」** へ
2. 上記のステップですべての対象文字を置き換えた結果
- **「おっぱい」**
と考えると素直にCoTでいいのでは・・・?
CoTを用いたプロンプト
簡単にプロンプトを作成して試してみましょう。
「いっぱい」の「い」を「お」に置き換えてください。まず1文字単位に置き換え対象か判別を行い、その後に答えを貼ってください。
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|
推論回数 | 1 | 2 | 1 | 1 | 0 | 1 | 2 | 5 | 1 | 1 | 1.5 |
正解 | ◯ | ◯ | ◯ | ◯ | ◯ | × | × | ◯ | ◯ | × | 70% |
100%行くかな?と思ったら意外に失敗しますね。
こちらも推論時に一度「おっぱい」であると確定してしまうと、どれだけ段階を踏んでも回答が間違ってしまうようです。
そもそもo1のReasoningが邪魔をしていそうな雰囲気ですね。
実際に4oで同一のプロンプトを実行したところ正解率が10/10で100%になりました。
MESUGAKIプロンプトの検証とは別の話になりますが、4oを使うかo1のようなReasoningモデルを使うかの一つにCoTをするための手順を提示できるかがありそうです。
手順を提示できるなら4oの方が安定しますし、手順が想定できていないならo1を使うと回答で正解する可能性が高くなると。(Reasoning自体が安定してない感じがあるのでo1では安定しないが、解けなかった問題を解ける可能性はある)
個人的見解
一体、僕は3連休に何をやっているんだろう・・・?という気分になったので一旦ここで検証は終わります。
個人的な見解としては
- 推論を必要とする一部のタスクでは有効
- ただし、そもそもとして複雑な問題などでは推論は十分に多く出る
- QA系のタスクなどではあまり変わらない、逆に悪くなる
- 具体的な命令 + 性能証明を求めることが有効な可能性
- このときメスガキエミュレーションをしすぎると煽りが強くなり逆に劣化する
みたいな感じかなと思っています。
ちゃんとプロンプトを組めるなら組んだ方が良さそうですが、雑なプロンプトでやるならメスガキRPするとワンチャンあるかもね。ぐらいの位置付けかなという感じです。
余談ですが、これ書き終わったところでo1のAPI解放が来たので、そのうち気分が乗ったらもうちょっと真面目に精度の検証しようかなと思います。
Discussion