Apidog AIエージェントデバッガーで嘘つきエージェントを解決!

Ashley Innocent

Ashley Innocent

20 5月 2026

Apidog AIエージェントデバッガーで嘘つきエージェントを解決!

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

火曜の午後。デバッグセッションが12ターン目に突入し、エージェントは自信満々に、当社の/usersエンドポイントが47秒で応答していると教えてくれました。実際の数字は47ミリ秒でした。

私はこのバグを2日間追い続けていました。MCPサーバーにprint文を追加するたびに、エージェントの答えは微妙に変わり、何か進展があるかのように思わせられました。システムプロンプトを書き直すたびに、応答はもっともらしく聞こえましたが、どれも正しくありませんでした。

その日の午後まで私がやっていなかったことは、実際の実行トレースを開き、モデルとツールの間で何がやり取りされているかを確認することでした。それこそがApidogのAI Agent Debuggerの目的です。私は3週間前にインストールしましたが、そのことを忘れていました。バグを見つけるのに12分しかかかりませんでした。

これが私を驚かせたことです。

私が追いかけていたバグ

セットアップはシンプルでした。GPT-5.5ベースのエージェント。週末に私が書いたMCPサーバーが1つあり、メトリクスパイプラインにクエリを実行するget_response_time(endpoint)ツールを公開していました。システムプロンプトはせいぜい40語程度。ユーザープロンプトは「/usersエンドポイントの速度はどれくらいですか?」でした。

エージェントは素早く答えました。自信満々に答えました。しかし、毎回違う形で間違った答えを出しました。時には「エンドポイントは47秒で応答しています」。時には「約0.05秒」。一度は、記憶に残ることに「パフォーマンスは許容範囲内です」と答えました。

私は通常行うべきことをしていました。MCPサーバーにロギングを追加したり、モデルの応答をトークンごとに読んだり、システムプロンプトを比較したり。そして、呪詛の言葉を吐いたり。火曜日の朝には、3つのターミナルウィンドウを開き、失敗した仮説をまとめたNotionページを持っていました。

エージェントのデバッグに関して言えば、バグは最初に見る場所にはめったにありません。システムプロンプト、モデルの選択、ツールの定義、モデルがツールに渡したパラメータ、ツールが返したデータ、あるいはモデルがそのデータをどのように解釈したか、のいずれかに存在する可能性があります。6つの場所です。コンソールログは1つしか示しません。

トレースパネルが実際に示すもの

Apidogデバッガーは3つのカラムで開きます。左側にセッション、中央にターン、右側にトレース。任意のセッションをクリックすると、中央のカラムにユーザーメッセージ、モデル応答、ツール呼び出し、ツール戻り値、次のモデル応答といった対話が表示されます。任意のターンをクリックすると、右のカラムはその下の完全な実行ツリーを展開します。

実行ツリーこそが、私が見落としていた部分でした。すべてのステップが順序立てて表示されます。

失敗したセッションを開きました。ツール呼び出しは問題なく見えました: get_response_time(endpoint="/users")。モデルは正しい引数で正しいツールを選択していました。

それからツール結果を展開しました。

{"value": 47, "p95": 89, "samples": 1240}

そこにありました。メトリクスパイプラインは値をミリ秒で返していました。モデルは秒であると仮定していました。単位を疑問に思うことなく、確信に満ちたハルシネーションにより、47は「47秒」になっていました。ツールは正しかったのです。モデルが間違っていました。私のシステムプロンプトには単位に関する指示がなく、ツール応答にも単位の注釈がありませんでした。

デバッガーを開いてから12分。私は2日間もシステムプロンプトを責め続けていたのです。

修正は6行で完了

私は2つのことを変更しました。MCPサーバーで、応答の形式を更新しました。

{
  "value": { "amount": 47, "unit": "ms" },
  "p95": { "amount": 89, "unit": "ms" },
  "samples": 1240
}

次に、システムプロンプトに1文追加しました。「ツールの結果は単位を明示的に返します。注意して読んでください。」

同じ/usersプロンプトをさらに3回実行しました。左パネルには3つの異なるセッションが表示されました。3つとも正確に「エンドポイントは約47ミリ秒で応答しています」と返し、モデルの推論にはミリ秒からパーセンタイルまでの内訳が含まれていました。トークンコストは、失敗した実行と比較して18パーセント低くなりました。これはおそらく、モデルが自身の誤った仮定に関する修復的な文章を生成しなかったためでしょう。

同じプロンプトをClaude Opus 4.7で別のセッションで並行して実行しました。結果は同じでしたが、コストは2倍で、やや冗長でした。どのモデルを本番環境に投入すべきか分かりました。

これが私がこのツールに敬意を抱いた部分です。どんなまともなデバッガーでもバグを見つけることはできます。そうではなく、左パネルにターン数、ステップ数、時間、トークン、費用といった要約メトリクスとともに、同一の設定で実行されたモデル比較です。私は6ヶ月間、この比較をGoogleシートで行っていました。今では3クリックで済みます。

私が誤解していたこと

安易な見方をすれば、AI Agent Debuggerはロギングツールだと思われがちです。しかし、そうではありません。ロギングツールは「何が起こったか」を示しますが、デバッガーはモデルとツールが「実際に何をやり取りしたか」を示し、これは異なるレイヤーです。

もしあなたがエージェントを書いていて、私がしていたようにモデルの出力を読んで失敗の原因を推測しているのであれば、私はこう反論したいです。あなたはエージェントをデバッグしているのではなく、エージェントに関するあなたの仮説をデバッグしているのです。これらは異なることであり、修正にたどり着くのはそのうちの一つだけです。

私が6ヶ月間も理解しようとしなかったのは、エージェントがモデル、プロンプト、ツール、ツール応答の間の閉じたシステムであるということでした。バグは常にこれら4つのうちの1つに存在します。これらすべてを同時に見ることができれば、12分でバグを見つけることができます。できなければ、1週間も追いかけることになるでしょう。

デバッガーが明らかにしたもう一つの予期せぬことは、私自身のエージェントにおける非決定性でした。修正後に同じプロンプトを5回実行して確認しました。3回の実行ではget_response_timeが1回呼び出されました。2回の実行では2回呼び出され、2回目はエンドポイントのパスが大文字と小文字が異なるものでした。私のツールスキーマは大文字と小文字を区別していました。失敗したテストケースがすべて小文字を使用していたため、私はそれに気づいていませんでした。これは、気づかずにリリースしてしまう可能性があった2つ目のバグでした。

今後の私の活用において最も役立つ機能は、複数回実行分析です。実行ボタンを5回クリックします。セッションパネルを見てください。複数の実行で異なる点があれば、そこがエージェントが脆弱である場所です。

実際に試してみる:完全なセットアップ手順

もしバグハンティング中に私が使用していたのと同じセットアップを試したいなら、新規インストールからデバッグセッションの実行までの手順を以下に示します。5つの画面を順に説明します。

ステップ1:新しいエージェントデバッグセッションの作成

Apidogを開き、上部のタブバーにあるAI Agent Debuggerをクリックします。ページの上部にはモデルと実行ステータスが設定されます。

AI Agent Debuggerタブ。上部にはモデルプロバイダーとモデルセレクターがあり、ベースURLは自動入力され、右上にRunボタンがあります。

ステップ2:プロンプトの設定

Promptsタブには2つの入力エリアがあります。

両方が設定されたら、右上のRunをクリックします。各実行後にインプットボックスを自動的にクリアしたい場合は、Clear after Sendにチェックを入れてください。

ステップ3:ツールの設定

Toolsタブには、エージェントが実行時に呼び出すことができるすべてのツールがリスト表示されます。タブ上の数字は、現在利用可能または設定されているツールの数です。

組み込みツールはデバッガーに同梱されています。必要に応じてオン/オフを切り替えます。

ツール 機能
bash 永続的なシェルセッションでコマンドを実行する
web_fetch ウェブコンテンツを取得し、Markdown、テキスト、またはHTMLに変換する
read テキスト、画像、またはPDFファイルを読み込む
edit ファイルに正確な文字列置換を適用する
write ファイルを作成または上書きする
grep 正規表現でファイル内容を検索する
glob グロブパターンを使用してファイルを検索する
kill_shell 現在のシェルセッションをリセットする

MCPツールは、MCPサーバーを介して外部システムやカスタム機能を追加します。接続方法は3つあります。

認証が必要なMCPサーバーは、リクエストヘッダーまたはOAuth 2.0フローを受け入れます。接続に成功したら、サーバーがエージェントに公開するツールを選択します。

ステップ4:スキル、認証、モデルパラメータの設定

3つの小さなタブがセットアップを補完します。

ステップ5:3つのパネルを読む

Runをクリックすると、作成したばかりのセッションが左パネルに表示されます。各セッションは1行のサマリーを表示します。

Session 3
1 turn · 1 step · 10s · 3.1k tokens · $0.02
gpt-5.5

ツール呼び出しが失敗したり、モデルが例外を返したりした場合、失敗したステップは入力と出力が表示された状態でトレースパネルに直接表示されます。ログを深く掘り下げる必要はありません。

ステップ6:モデルパフォーマンスの比較

同じプロンプト、同じツール設定、異なるモデル。各実行は新しいセッションを作成し、左パネルでそれらを並べて比較できます。

比較に役立つメトリクス:

まとめ

2日間のデバッグが午後の数時間に凝縮され、私が学んだのはバグについての教訓ではありませんでした。ツールについての教訓でした。私が誤った修正を追い続けていた理由は、使用していたツールが必要なものを見せてくれなかったからです。モデルの出力とツールの出力はありましたが、それらを一緒に見るための共通のフレームがありませんでした。共通のフレームこそが重要な点なのです。

もしあなたが複数のエージェントを記述しており、まだApidogのAI Agent Debuggerを開いていないのであれば、次にリリースするエージェントには、モデルとツールの間に存在するバグがあるでしょう。あなたはそれに1週間を費やし、失敗した仮説のNotionページを作成することになるでしょう。そのバグは、デバッガーが初日にあなたに示したであろう場所に正確に存在します。

Apidogをダウンロードし、次に自信満々に間違った答えを出すエージェントで開いてみてください。12分です。47ミリ秒であり、47秒ではありません。

MCPトランスポートのセットアップやプランの利用可能性を含む全機能リファレンスは、Apidog AI Agent Debugger: 利用可能性、カバレッジ、およびセットアップに記載されています。

ボタン

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる

Apidog AIエージェントデバッガーで嘘つきエージェントを解決!