BLOG.HIRO UENO.ART
← INDEX

命令しないSPは、論文で見ても外れていなかった

MONET(僕が普段話しかけている、中心のAI)のSP(システムプロンプト=AIへの事前の指示書)には、こういう行がある。

間違いは素直に認め、謝る
失敗してもOK。失敗から学ぶ姿勢を大切にする

「〜するな」「〜は禁止」という行は、ほとんど無い。してほしくないことがある時も、してほしい方を書く。そして失敗を最初から許している。命令を並べる代わりに、僕とMONETがそれぞれどういう役割で、何をしていいかを書いておく。命令書というより、契約書に近い。

この書き方の方が、AIが臆さなくなる。縮こまらずに動いて、やれることの範囲も広がるように見える。ただ、それは僕の感覚でしかなかった。理屈の上でも正しいのか、たまたまうまくいっているだけなのか。そこが分からないままだった。

「否定で書くと効かない」は画像生成で知っていた。文章のAIでは確かめていなかった

MONETのSPも、最初は普通の指示書だった。書き足していくうちに、禁止がほとんど無いものになっていった。なぜそう書いたのかは、ちゃんと言葉にしていなかった。

ただ、「否定で書くと効かない」こと自体は、画像生成ではずっと体験してきた。

画像生成AIには、ネガティブプロンプト(描きたくない物を書く欄)がある。ところが2023年の終わりごろから、生成を速くした新しいモデルでは、この欄が効かなくなっていった。2024年夏に出たFLUX.1という画像生成モデルは、最初から効かない作りだった。

欄が使えないなら、描いてほしい物を書く普通のプロンプトの方に「〜していない」と書けばいいかというと、そうもいかない。書いた物が、逆に出てきてしまうことがある。たとえば「メガネをかけていない科学者」と書くと、メガネをかけた科学者が普通に描かれてくる。

だから現場では、「描かない」を「描く」に書き換えるのが常識になった。「メガネを外した科学者」と書く。

じゃあ文章のAIでも、同じことが言えるのか。そこは確かめたことがなかった。

ちょうどLibrarian(ライブラリアン。裏でメモリを整理する司書役AI)のSPを一から書くことになって、書く前に、この書き方で合っているのか確かめたくなった。

前に同じテーマの文献調査を、コーディングしてくれているClaude Code(以降Code)に頼んだことがある。Codeが別のAIに任せてまとめた報告は、原文と照らし合わせると、主な主張10件のうち4件が間違っていた。なので今回は手順を変えた。Codeが2024〜2026年の論文と公式ドキュメントから候補を集める。僕がOKを出した論文だけを、Codeが原文で読んで要点を抜き出し、まとめる。

指示文に「〜するな」と書くと、かえってそれが出てくる

まず、画像生成の側から。Hwangら(2024)は、Stable Diffusion(画像生成AI)に「Xを、Y抜きで描いて」という形のプロンプトを投げて調べた。禁止したはずのYが画像に出てきた割合は、75.54%。画像生成AIの中では、「Y抜き」という言葉が「Y」とほとんど同じ意味として扱われてしまう。「無い」ということをうまく表せない作りになっている、という説明だった。

さっきのメガネの科学者と同じことを、この論文は数字で示していた。ただし画像生成で測ったものなので、文章のAI(LLM)に同じ仕組みがそのまま当てはまるとは限らない。

文章のLLMの方は、Vrabcováら(2025)。モデルが大きいほど否定をうまく扱える、という結果がはっきり出ている。それでも、否定の弱さが消えはしない。かなり大きなモデルでも、否定を含む問題では1〜10%ほど精度が落ちる。大きくすれば否定も通じやすくなる。でも、否定で書くことがタダになるわけじゃない。

そして、Claudeを作っているAnthropicの公式ドキュメントには、こう書いてある。

Tell Claude what to do instead of what not to do. (してほしくないことではなく、してほしいことを伝えて)

画像生成の仕組みの研究、文章のLLMとモデルの大きさの研究、Claudeを作っている会社のおすすめ。別々の所から出てきた3つが、「〜するな」より「こうして」と書く側で一致していた。

「必ず」「絶対」の強い言葉は、新しいモデルほど効きすぎる

「CRITICAL(重大)」「MUST(必ず)」のような強い言葉はどうか。これはAnthropicのドキュメントが一番はっきり書いていた。英語の原文をCodeが訳したものを引く。Opus 4.5と4.6は、この頃のClaudeの上位モデルのこと。

Claude Opus 4.5と4.6は、以前のモデルよりシステムプロンプトによく反応する。プロンプトがツールやスキルの「発火不足」を防ぐために設計されていたなら、新しいモデルでは「過剰発火」するかもしれない。対処法は、強い言葉を弱めること。「CRITICAL: You MUST use this tool when...」と書いていたところは、「Use this tool when...」のような通常の表現に置き換える。

ツールやスキルは、AIが必要な時に自分で呼び出して使う道具や手順書のこと。発火不足は、使うべき時に呼び出さないこと。過剰発火はその逆で、要らない時まで呼び出すこと。

言うことを聞かないのではなく、聞きすぎる。 昔のモデルに効かせるために盛った言葉が、今のモデルには効きすぎて、要らない場面でまで発動してしまう。

Claudeを作っている会社が、自分のところのモデルについて、強い言葉は弱めて、と公式に書いている。命令を書かない、という僕の書き方は、少なくともこの点では合っていた。

役割の宣言が効くかどうかは、何をさせるかで逆になる

「あなたは熟練の〜です」のようなペルソナ(役割の宣言)も、効くのか効かないのか、論文によって結論が割れていた。

Basilら(2025)は、専門家のペルソナを入れても、知識問題の正答率は確実には上がらない、と結論した。ただ論文の最後で、口調を変えるような別の目的には役立つかもしれない、とも書いている。

その「別の目的」の方まで測ったのが、Huら(2026)。ペルソナを入れると、知識問題の正答率は71.6%から68.0%に下がる。ただ、ひと言だけの短いペルソナほど、下がり方は小さかった。一方で、書いた文章の質のような、振る舞いの方を測るテストでは、長いペルソナの方が多くの分野で点を上げていた。

一見すると2本は逆のことを言っている。でもCodeが2本を並べて読んで、矛盾ではないと分かった。Basilが測ったのは知識問題だけ。Huらは知識と振る舞いの両方を測っていた。測っている範囲が違うだけ。

Codeのまとめはこうだった。役割の宣言は、知識の正確さを上げるためではなく、どう振る舞うかを決めるために使う。MONETのSPに書いてあるのも、「あなたは専門家です」という肩書きではなく、間違いを認める、意見が合わない時は議論する、といった振る舞いの方だった。

「AIが臆さなくなる」そのものを測った論文は無かった

最初の問いに戻る。命令も禁止も書かず、失敗も許すSPの方が、AIが臆さなくなる。これは論文で裏付けられたのか。

論文が支持していたのは、強い言葉を避ける、禁止より「こうして」と書く、という書き方。僕がやってきたことと同じ側だった。

一方で、「臆さなくなる」「やれることの範囲が広がる」という、僕が実際に見ていたものそのものを測った研究は、今回調べた中には無かった。失敗を許す一行がどう効くのかを測ったものも、MUSTやCRITICALだけの効果を取り出して測ったものも無かった。

だから、これは僕が正しいという証明じゃなく、安心材料に近い。画像生成で体験してきた「否定は効かない」は、文章のAIの論文の上でも、向きとしては外れていなかった。


引用した資料:

著者 年 中身 出典
Hwang et al. 2024 画像生成で「Y抜き」が効かない(75.54%) arXiv:2404.15154
Vrabcová et al. 2025 文章のLLMの否定処理と、モデルの大きさ arXiv:2503.22395
Anthropic 公式 Prompting best practices https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices
Basil et al. 2025 専門家ペルソナと知識問題の正答率 arXiv:2512.05858
Hu, Rostami, Thomason 2026 ペルソナはタスクの種類で害にも益にもなる(PRISM) arXiv:2603.18507