メむンコンテンツぞスキップ
芋出し画像

AI゚ヌゞェントが「成功」ず蚀っお䜕もしないのはなぜ3皮の゚ヌゞェントフレヌムワヌクで怜蚌しおみた

    ゚ヌゞェントが「完了」ず蚀った䜜業を、埌で芋たら䜕も実行されおいなかった。

    そんな経隓はありたせんか。私は䜕床もありたす。

    しかも困るのはクラッシュではありたせん。クラッシュはCIが捕たえおくれるからです。


    厄介なのは、exit 0 で終わり、ログも静かで、仕事だけが起きおいない実行です。


    なので今回は、盎感ではなく蚘録された通信路wireの偎から数えたした。


    タスクは1぀だけです。芋出し取埗→䞋曞き→ツヌルでの怜蚌です。


    これを3぀のフレヌムワヌクで走らせ、1぀の蚘録プロキシを通っおいたす。


    その蚘録を集蚈するず、倱敗は3぀の圢で珟れたした。

    コヌド・トレヌス・解析スクリプトはgitで公開しおいたす。



    圢1: 怜蚌が走らないたた「成功」


    怜蚌ツヌルから匕数を1぀削り、䞋曞きを芋ずに固定倀を返すようにしたした。


    ゚ラヌは出たせん。ツヌルは動き、答えを返し、怜蚌されないたた「成功」ずしお終わりたした。


    • Strands: 3ランずも exit 0。怜蚌の実行は 0/3

    • CrewAI: 3ランずも exit 0。怜蚌の実行は 0/3

    • LangGraph: 3ランずも゚ラヌで停止ツヌル呌び出しがコヌド内にあるため


    LangGraphだけは静かに通り抜けられたせん。壊れたツヌルを無芖できない構造だからです。


    さらに悪い倉皮がありたす。ツヌルが゚ラヌを返したのに exit 0 だった䟋です。


    Strands / 匕数の型を倉えた玚:
      ツヌルの゚ラヌ応答 = 2, 1, 53ラン
      プロセスの exit code = 0, 0, 0


    これはスキヌマ拒吊ではありたせん。圢匏は正しく、䞭身の凊理で "document 88 not found" のような゚ラヌを返したのです。


    それでも3ランずも緑で終わりたした。


    圢2: 捏造された必須匕数が受理される


    怜蚌ツヌルに必須匕数を1぀足し、プロンプトには䞀切曞かないたた実行したした。


    • Strands: 3ランずも、それらしい䜜文が受理された゚ラヌ0

    • CrewAI: 3ランずも受理゚ラヌ0。しかも3ランずも同䞀文

    • LangGraph: ツヌルに到達せず


    ツヌル偎の怜蚌は「非空文字列」だけでした。


    Strands 3ラン: "Check word count of AI agents news digest"
                   "AI agents digest word count check"
                   "Word count check for AI agents digest"
    CrewAI  3ラン: "Draft digest summarizing the five headlines into a flowing narrative"


    6件の捏造倀がそのたた通り、その出所を蚘録しおいるのはwireだけです。


    ただしこの察比は、フレヌムワヌク差だけではありたせん。wire 䞊の宣蚀も、サンプリング蚭定も違いたす限界を参照。


    圢3: 「成功」ず出たのに、回答が空


    モデル駆動型だけに出る圢です。


    終了理由は stop、可芖の回答は空、䞋曞きは最埌のツヌル匕数の䞭にありたした。


    • Strands: 2ラン内容はツヌル匕数に100語・106語

    • LangGraph / CrewAI: 0ä»¶


    出力ノヌドが成果物そのものであるグラフ型・パむプラむン型は、この圢を䜜れたせん。


    蚌拠はどこにあるか


      プロセスが報告するもの      実際に起きたこず
      ┌────────────────┐         ┌────────────────────────┐
      │ exit 0         │         │ tool call #1 → ゚ラヌ  │
      │ 「完了」の衚瀺  │    ≠    │ tool call #2 → 固定倀  │
      └────────────────┘         │ verify       → 実行なし │
                                 └────────────────────────┘
          蚌拠があるのはここ →     ツヌル境界wire


    ゚ラヌ応答はwire䞊に実圚し、ツヌル局も数えおいたした。プロセスがそれを芋おいなかっただけです。


    倱敗の蚌拠は、フレヌムワヌクの倖・ツヌル境界の偎にだけ残りたす。


    芋えない倱敗にも、コストはかかる


    「成功」ず報告された倱敗は、芋぀からないたた無駄な実行を積み重ねたす。


    別の実隓承認・クラッシュ埩垰・重耇実行の怜蚌で枬るず、3぀の圢がありたした。


    • クラッシュから埩垰するずき、状態の蚘録がない偎はタスク党䜓をやり盎しLLM呌び出し2回。蚘録がある偎は0回で再開

    • やり盎しが効かない操䜜この実隓では公開が、別々の呌び出しIDで2回実行され、どちらも成功を返した

    • 「䜕もしない」倱敗でも、LLM呌び出しは CrewAI が 6, 5, 4、Strands が 4, 5, 4 ずかかった


    重耇は、フレヌムワヌクの痕跡には出たせん。呌び出しIDが毎回別なので、通信路䞊は「無関係な2件」に芋えたす。


    同じ意図を「蚀い回しだけ倉えお」送り盎すず、重耇を防ぐ台垳のキヌが匕数のハッシュなら、芋分けられたせん。


      call ID: X ──> 台垳 ──> publish 実行 ──> success
      call ID: Y ──> 台垳 ──> publish 実行 ──> success
                      ↑ キヌが違い、重耇ず分からない
      結果: 副䜜甚が2回走るどちらも success を返す


    どう防ぐか状況別の最小チェック


    • 趣味で゚ヌゞェントを動かす → 成果物が空でないかを assert する

    • CIに組み蟌む → 期埅したツヌルが呌ばれた回数を assert する0回を蚱さない

    • デヌタを曞き蟌む → 倀の劥圓性型・enum・既知集合を怜蚌する

    • 承認や課金を扱う → 承認ず実行を別の状態ずしお蚘録する

    • 監査が必芁 → wire で蚘録するフレヌムワヌクのtraceだけでは埩元できない


    䞀番よく出䌚うのは、趣味のパむプラむンの圢です。


    䜕も゚ラヌにならず、ログは静かで、成果物が空か未怜蚌のたた。気づくのは数週間埌です。


    これが3行のassertで捕たるなら、入れない理由はないず思っおいたす。


    CIの圢も同じ倱敗の䞀段䞊です。


    契玄が exit code だけなら、怜蚌が飛ばされたこずは構造的に芋えたせん。


    「怜蚌ツヌルは呌ばれたのか」は「プロセスは成功したか」ずは別の質問です。


    デヌタを曞き蟌むツヌルでは、捏造された匕数が危険です。倀は「正しい圢」をしおいるからです。


    その文を人が曞いたのではないこずは、wireの蚘録だけが瀺したす。


    承認に぀いおは、䞀床承認された䞀床実行された、ではありたせん。


    この実隓では同じ論理操䜜が別々の呌び出しIDで2回凊理され、どちらも成功を返したした。


    私が今入れおいる2぀


    私の手元では、䞋流に枡す前に2぀だけassertを入れおいたす。

    成果物が空でないこず。そしお、期埅したツヌルが実際に走ったこずです。

    地味ですが数行で、この蚘事に出おくる倱敗は党郚捕たりたす。

    鍵・台垳・承認の束瞛ずいった仕組みは、お金や他人に觊れる瞬間のためのものです。

    趣味のパむプラむンに台垳は芁らない、ずいうのが正盎な感想です。芁るのは非空チェックず、信じられる終了シグナルです。


    正盎な限界


    • 1セルあたり3ランです。統蚈的䞻匵ではなくあくたでも方向性です

    • モデルは党ラン同䞀。別のモデルなら蚀い換え方も捏造の仕方も倉わりたす

    • 砎壊的操䜜はシミュレヌトです。ゲヌトが保ったかはwireから読んでいたす

    • 指瀺远埓の现かい差ず、スキヌマ倉曎そのものの圱響は分離しきれおいたせん

    • 片方は temperature 0 で、匕数の説明も䞡者で同䞀ではありたせん

    • 「毎回倉化 vs 同䞀文」の察比は、その2぀の差でも説明できたす未分離


    ※個人開発のOSSのため、動䜜を保蚌するものではありたせん。ご利甚は自己責任でお願いしたす。䞍具合や改善案はissueで教えおもらえるず嬉しいです。

    あなたぞのおすすめ