OpenAIに“ゴミ”を読ませて課金するのをやめよう:ツーステージのエージェント・パイプライン

Dev.to / 2026/4/22

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • この記事は、ID抽出のためにLLMへ生のメチャクチャなログJSONをそのまま渡してパースさせることが、モデルに脆いパーサー役を強いるため金銭と計算資源の浪費になると主張しています。
  • エスケープやHTMLが崩れたログが原因で、エージェントが構造を幻覚し再帰ループに陥ってしまい、単一の値の抽出に約50,000トークンを消費した失敗例を述べています。
  • 著者は「Hype Tax(誇大広告税)」という考え方を提示し、テレメトリで測定することで、クレンジングして構造化JSONに変換するとトークン数・1回あたりのコスト・レイテンシが大幅に減り成功率も上がることを示します。
  • 提案される原則はツーステージのエージェント・パイプラインで、ローカルで決定論的な抽出(例:正規表現やJSON整形)を行い、LLMはノイズの多いデータのパースではなくクリーン化された入力に対する上位の推論に使うべきだとしています。
  • 全体として、適切なAI統合はセキュア・バイ・デザインのエンジニアリングであり、トークンオーバーヘッドと非決定論を排除するために生データ処理は決定論に寄せるべきだという見立てです。

開発者コミュニティの皆さん、CallmeMihoです。今朝の月曜、クレジットカードで動くルーブ・ゴールドバーグ・マシンを仕込むジュニア開発者の姿を見ていました。今日は、あなたのAIエージェントがなぜあなたを破産させているのか話しましょう。

やることは単純でした。大量の生のアクティビティログデータの山から、特定の itemUuidscimId を抽出するだけ。解決策を設計する代わりに、その開発者は、生のままの、未整形のJSONのゴミ――壊れた引用符、エスケープ文字、混在するHTMLタグだらけ――をそのままプロンプトに流し込み、モデルに「IDを見つけて」と言ったのです。

結果は、教科書的な確率的な振動でした。ログはエスケープされた引用符(\")と不正なHTMLでめちゃくちゃだったため、エージェントはエスケープ文字に当たり、存在しない終端のブラケットを幻覚で作り出し、「文字列の残り」を再パースしようとして無限の再帰ループに突入しました。

「推論」ではありません。自分自身の足を引っ掛けて転ぶニューラルネットが、パーサであることを強制された結果です。私がプロセスを止めるまでに、そのエージェントは単一の scimId を見つけるのに、高額な計算資源を50,000トークン分燃やしていました。

これは「AIエンジニアリング」ではありません。月額サブスク付きの技術的負債です。

証拠データ:浪費を測る

プロンプトのテレメトリを見ていないなら、あなたは設計者ではありません。クラウド事業者に寄付しているだけです。この2つの行の差を、私たちはHype Tax(誇大広告税)と呼びます。

指標 生のアクティビティログデータ クリーン/抽出済みJSON
入力ボリューム 45,000トークン 150トークン
コールあたりのコスト $0.68 $0.002
レイテンシ 15s 2s
成功率 70% 99.9%

モデルに「ゴミ」フォーマット45,000トークンのナビゲーションをさせるのは、基本的なエンジニアリング規律の完全な失敗です。LLMに抽出されていないノイズを与えるのは、お金を無駄にするだけではありません。本来バイナリであるべきプロセスに、意図的に非決定性を混ぜているのです。

哲学:LLMはパーサではない

ローカルのRegexスクリプトやJSONフォーマッタで信号を無料で抽出できるなら、モデルにやらせてお金を払うのは建築上の無駄遣いです。

高性能なエンジニアリングは、Secure by Design(設計段階からのセキュア)アプローチに基づいています。現代のゼロ知識アーキテクチャが、サーバー側のリスクを排除するために暗号演算をローカルで行うのと同様に、プロフェッショナルなAI統合では、トークンのオーバーヘッドをなくすためにデータ抽出をローカルで行うべきです。生のデータ抽出をクラウドLLMに任せてはいけません。それは決定論(deterministic)の層にあるべきです。

プロフェッショナルなスタックでは、私たちは決定論的ロジック(Deterministic Logic)(Regex、Zod)と確率論的ロジック(Probabilistic Logic)(LLM)を区別します。テキスト文字列の中から DeviceKey を見つけるのに、億単位の費用がかかるニューラルネットを使う必要はありません。パーサを使うのです。LLMが見るのは、ローカル環境で重い処理が終わったに、タスクに必要な特定の非センシティブな識別子だけにすべきです。

修正:ステージ1の決定論的パイプライン

AI統合を構築する唯一のプロフェッショナルな方法は、Two-Stage Agent Pipeline(2段階エージェント・パイプライン)です。ステージ1はローカルでの、決定論的なクリーンアップ段階。クラウド事業者にトークンを1つも送る前に、データはノイズを取り除くローカルのパイプラインを通過しなければなりません。

ローカルのパイプラインがないなら、オフラインのユーティリティでそれを作ってください:

  • Regex Tester(Regexテスター): 最初の防衛線です。モデルがログエントリを見るに、URLから itemUuid を抜き出すためのローカルスクリプトを使ってください。モデルがUUIDを見つけるために<div>タグを読んでいる時点で、あなたはすでに失敗しています。ここでregexパターンを作成してください。
  • JSON Formatter(JSONフォーマッタ): 標準化してミニファイします。これにより、壊れた引用符やエスケープ文字に対してモデルが「振動」することを防げます。ミニファイしたスキーマにすると、モデルはログの構文ではなく値に集中できます。ここでJSONを整形してミニファイしてください。
  • Zod Schema Generator(Zodスキーマ生成): 厳格なデータ契約を強制するために使います。最小特権の原則に基づき、Zodスキーマはプロンプトを組み立てる前に、フィールドをプログラム的に削除すべきです。モデルがそれを見なくてもよいなら、Zodも渡すべきではありません。ここでZodスキーマを生成してください。

結論:エンジニアリング規律 vs. 誇大広告

高性能なエンジニアリングは、どれだけ多くのAIを使うかの話ではありません。仕事を終えるのにどれだけ少ないAIで済むかが重要です。未整形のログのゴミをクラウドモデルに送っているなら、あなたはエージェントを作っているのではなく、技術的負債の生成機を作っているだけです。

あなたの会社の技術的負債で、Sam Altmanの計算資源を補助するのはやめましょう。データをきれいにするか、キッチンから出てください。

P.S. トークンのペイロードを監査して、あなたを破産させる前に防ぎたいなら、私は100%オフラインで、サーバーログ無しの開発者ツール群をFmtDev.devで作りました。