なぜ私たちは96%のトークン節約を拒否したのか
トークンを96%節約できるMCPサーバーを見つけました。それは execute_code という一つのツールを使用します。特定の関数を呼び出す代わりに、エージェントがデータを取得するためにJavaScriptを記述するという仕組みです。
理論上は、それが勝ります。複雑なタスクにおいては、効率性の面でコード実行はツール呼び出しを凌駕します。
しかし、私たちはそれを採用しませんでした。代わりに、個別の名前付きツールを使い続けることにしました。
なぜ、一見明らかな選択が私たちのエージェントにとって間違った選択だったのか、その理由を説明します。
ターゲットが設計を決定する
多くの人は、チャットウィンドウ上のフロンティアモデル向けに構築します。それらのモデルは膨大なトークン予算を持っています。彼らにとって、コード実行こそが至高です。
私たちが構築しているのは、ボート上で動作する、小型のローカルモデル(Hermes 3 8B)を用いた音声優先のエージェントです。
小型モデルにとって、制約はトークンではありません。制約は信頼性です。
小型モデルが単純なツールの呼び出しに苦戦する場合、正しいJavaScriptを書かせることは、はるかに困難なタスクになります。execute_code は信頼性をトークンと引き換えにするものです。私たちには、そのようなトレードオフを行う余裕はありません。
ラストワンマイルの問題
コード実行は、作業の「ラストワンマイル」をエージェントに押し付けます。エージェントは以下の作業を行わなければなりません:
- データのフィルタリング
- 結果のソート
- 出力のフォーマット
私たちのツールは、サーバー内でこれらの作業を行います。例えば、バッテリーの状態について尋ねたとき、私たちのツールはテキスト読み上げ(TTS)の準備が整った文字列を返します。生の数値ではなく、「68パーセント、12.8ボルト」と返します。
もし execute_code を使用すれば、エージェントはその音声をフォーマットするためのロジックを書かなければなりません。小型モデルは、これに常に失敗します。
「不在」のルール
ボートの上では、センサーがオフラインになることがあります。私たちのシステムでは、センサーが見つからない場合はクリーンな null を返します。これは「成功した呼び出し」として扱われます。
コード実行モデルでは、センサーの欠落はしばしばエラーを発生させます。小型モデルが間違ったパスをいくつか推測してしまうと、エラー制限に抵触し、エージェントが停止してしまいます。名前付きツールを使用することで、「不在」をエラーではなく成功として扱うことができるのです。
採用か構築かのチェックリスト
MCPサーバーを採用または構築する前に、以下の質問を自分に投げかけてみてください:
• ターゲットとなるエージェントは誰か?(フロンティアモデルか、小型ローカルモデルか)
• 決定的な制約は何か?(トークンか、信頼性か)
• ラストワンマイルは誰が担当するか?(ツールがデータをフォーマットするのか、エージェントがするのか?)
• 不在をどう扱うか?(値の欠落はエラーか、それとも null か?)
• メンテナンスコストはどのくらいか?(休眠状態のコードベースを引き継ぐことになるのではないか?)
私たちはそのプロジェクトを無視したわけではありません。そのアイデアを収穫したのです。彼らのアラーム処理やパス発見ロジックを取り入れ、私たちのロードマップに追加しました。
効率性は素晴らしいものですが、海上においては信頼性が不可欠です。
Source: https://dev.to/clarkbw--/why-we-kept-named-mcp-tools-despite-a-96-token-saving-40ae
Optional learning community: https://t.me/GyaanSetuAi
