PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

LLMエージェントは「プロンプトを増やす」より「制御フローを作る」べき、という話

AIエージェントを作るとき、つい「もっと丁寧に指示を書こう」「この手順もプロンプトに入れよう」と考えがちです。
でも今回の記事は、そこにかなりハッキリしたツッコミを入れています。

要するに、

複雑なタスクを安定してこなすエージェントには、長いプロンプトよりも、ソフトウェアとしての deterministic control flow(決定的な制御の流れ)が必要だ

という主張です。
これ、かなり本質的だと思います。地味だけど重要。むしろAI開発の“あるある”を刺してくる話です。

キーポイント

この記事が言っていることを、やさしく言い換えると

この記事の中心メッセージはシンプルです。

AIに「ちゃんとやって」と強く言うより、間違いにくい仕組みを作ったほうがいい

人間相手なら、多少あいまいな指示でも、文脈を読んでうまくやってくれることがあります。
でもLLMは、そういう期待をするとたまに平気で外してきます。しかもそれっぽく。

記事では、​MANDATORYDO NOT SKIP みたいな強い文言をプロンプトに書き始めたら、それはもう「プロンプトで頑張る限界点」に来ている、と言っています。
これはかなり共感できます。私も、プロンプトを盛れば盛るほど「これ、もう設計で解決すべきでは?」と思うことがよくあります。

なぜ「プロンプトを増やす」だけでは厳しいのか

記事のたとえがわかりやすいです。
「命令文が suggestion(提案)扱いで、function が “Success” を返すのに hallucinate(それっぽい嘘を出す)するようなプログラミング言語」を想像してみろ、と。

かなり乱暴なたとえですが、言いたいことは明確です。

つまり、​推論や検証がしづらいんですね。
これはソフトウェアとしてかなり致命的です。システムが大きくなるほど、「なんとなくうまくいっている」は危険になります。

ソフトウェアが強いのは、コードが“予測できる”から

記事では、ソフトウェアがスケールする理由として、​recursive composability を挙げています。
これは簡単にいうと、

小さな部品を組み合わせて、より大きな仕組みを作れること

です。

たとえば、

こうした構造があると、「この部品はこう動く」と局所的に理解できます。
要するに、​予測できるんです。

一方で prompt chain は、似たようなことをやろうとしても、どうしても性質が弱い。
文で文をつないでいく方式は、柔軟ではあるけれど、​厳密さ検証可能性で負けやすい。ここが痛いところです。

じゃあ何をすべきか? 答えは「ロジックを prose から runtime に移す」

記事の重要ポイントのひとつがここです。

ロジックを文章(prose)から実行時の仕組み(runtime)へ移せ

つまり、
「LLM に全部考えさせる」のではなく、​決めるべきことはコードで決める、という考え方です。

たとえば、

こういうものは、自然言語の指示文よりも、プログラムの if / else や state machine で書いたほうがずっと堅いです。

個人的には、ここがこの記事でいちばん大事だと思います。
AI開発って、つい「モデルに頑張らせる」方向へ行きがちですが、実際には頑張らせるより、迷わせないほうが強いことが多いんですよね。

「deterministic scaffolds」が必要、という考え方

記事では、信頼性のために deterministic scaffolds が必要だと述べています。
これは直訳すると「決定的な足場」みたいな感じですが、要するに、

を持つ枠組みのことです。

LLMはその中で使う部品であって、システム全体の主役ではない。
この発想はかなり健全です。

LLMは便利ですが、万能ではありません。
文章を作る、候補を出す、要約する、といった用途では強い。でも、​​「正しさが大事な処理の流れ」まで任せると危ない
この線引きは、これからのAI設計でかなり重要になると思います。

さらに厄介なのは「静かに失敗する」こと

記事が鋭いのはここです。
LLMベースのシステムは、ときにsilent failure​(失敗しているのに失敗に見えない)を起こします。

これ、普通のソフトウェアより厄介です。

このタイプの失敗は、人間の直感をかなりだますんですよね。
「動いてるっぽいから大丈夫」と思った瞬間に危ない。個人的には、この手の“静かな失敗”が一番怖いです。

だから記事は、​aggressive error detection、つまり「かなり強めのエラー検出」が必要だと言っています。
ふわっと見守るだけでは足りない。ちゃんと機械的にチェックしろ、というわけです。

検証なしに進むと、選択肢は3つしかない

記事の最後の整理が、かなり皮肉が効いていて好きです。
プログラム的な検証がないと、結局やれることは次の3つだとしています。

  1. Babysitter
    人間がそばで見張って、ミスを止める

  2. Auditor
    実行後に、最初から最後まで厳密に検証する

  3. Prayer
    なんとなく信じる、いわば「Vibe accept」

この3つ、かなり本音で笑ってしまいます。
特に最後の Prayer。AIプロダクトの現場で、心の中ではこれに近い運用になっているケース、正直あると思います。

でも本来は、祈るしかない設計にしてはいけない。
ここがメッセージの肝でしょう。

率直な感想:これは“プロンプト職人”への静かな警告だと思う

この記事は、単に「プロンプトよりコードが大事」と言っているだけではありません。
むしろ、

LLMを使うなら、ソフトウェア工学の基本に戻れ

と言っているように読めます。

プロンプトは魔法の呪文ではないし、長くすれば賢くなるわけでもない。
複雑な仕事を任せるなら、必要なのは「うまい言い回し」より「失敗しにくい構造」です。

これは、AIを“会話相手”として見るか、“部品”として見るかの違いでもあります。
私は後者の見方のほうが、実務ではずっと強いと思います。
少なくとも、ちゃんと信頼できるシステムを作るなら、感覚より設計です。

まとめ

この元記事が言いたいのは、かなり一貫しています。

AIエージェント開発が進むほど、
「どれだけ賢いか」より「どれだけ壊れにくいか」が大事になるはずです。
この記事は、その当たり前だけど見落としがちな点を、かなり気持ちよく言語化していました。


参考: agents need control flow, not more prompts

同じ著者の記事