OpenAIのtool_calls、Anthropicのtool_use/tool_result、汎用ログ配列に対応。 貼り付けるだけで入力・出力・実行時間・成否を時系列カードで確認できます。
ツールコールログ(JSON)
ログ形式
AIエージェントのツールコールログが読みにくい問題を解決する
AIエージェントを開発・運用していると、OpenAIやAnthropicなどのAPIから出力されるツール呼び出し(Function Calling / Tool Use)のログを確認する場面が頻繁に発生します。しかし生のJSONは、ネストされたオブジェクトや文字列化された引数、呼び出しと結果が別々のオブジェクトに分かれている構造などが原因で、人間の目にはとても読みにくいものです。
本ツールは、こうしたJSON形式のツールコールログをブラウザに貼り付けるだけで、「いつ・どのツールが・どんな入力で呼ばれ・どんな結果を返したか」を1件ずつのカードとして時系列に整形して表示します。呼び出し(call)と結果(result)はIDをもとに自動的にペアリングされるため、生ログを目で追ってIDを突き合わせる作業が不要になります。
OpenAIのtool_calls形式、Anthropicのtool_use/tool_result形式、そして name・input・output などの一般的なキーを持つ汎用ログ配列にも対応しており、独自にログを出力しているエージェント基盤でも活用しやすい設計です。
こんなシーンで便利です
AIエージェントの動作をデバッグする時に
想定と違う挙動をした際、どのツールがどんな引数で呼ばれ、どんな結果が返ってきたのかを時系列で素早く追いたい場合に活用できます。
チームメンバーやレビューアーにログを共有する時に
生のJSONをそのまま共有すると読みづらいため、整形済みのタイムラインやMarkdown形式でSlackやドキュメントに共有したい場合に便利です。
複数のツール呼び出しの実行時間やエラー傾向を把握したい時に
ツールごとの使用回数や成功・エラー件数を集計表示するため、どのツールが遅い・失敗しやすいかを俯瞰的に把握したい場合に役立ちます。
OpenAIとAnthropicなど異なるAPI形式のログを同じ見た目で比較したい時に
APIプロバイダーによってログの構造が異なりますが、本ツールで整形すれば同じタイムライン表示で確認でき、形式の違いを意識せずに内容の比較に集中できます。
使い方は簡単 4ステップ
- エージェントの実行ログ(JSON)を、テキストエリアにそのまま貼り付けます。
- 形式は基本的に「自動検出」のままでOKです。うまく認識されない場合のみ、OpenAI/Anthropic/汎用ログから手動で選択してください。
- 「ログを整形する」をクリックすると、ツール呼び出しが時系列のカード一覧として表示されます。
- ツール名やステータスで絞り込んだり、Markdown形式でコピーしてドキュメントに貼り付けたりできます。
※貼り付けたログはすべてブラウザ内で処理され、外部のサーバーへ送信されることはありません。
ご利用時の注意点
- 本ツールは一般的に流通しているログ構造をもとにした自動判別ロジックを採用しており、すべての独自形式・カスタムログに完全対応することを保証するものではありません。
- 貼り付けたJSONにAPIキーやアクセストークン、個人情報などの機密情報が含まれる場合でも、処理はブラウザ内で完結し外部送信は行われません。ただし共有時(Markdownコピー等)は貼り付け先の取り扱いにご注意ください。
- 非常に大きなログ(数千件単位など)を貼り付けた場合、ブラウザの処理性能によって表示にやや時間がかかることがあります。
- 完全無料・登録不要でご利用いただけます。
対応しているログ形式一覧
以下の形式は自動検出の対象です。うまく検出されない場合は、手動で形式を指定してお試しください。
| 形式 | 検出される主なキー | 対応内容 |
|---|---|---|
| OpenAI Chat Completions | tool_calls / role: "tool" / tool_call_id | assistantメッセージのtool_callsと、toolロールの応答をIDでペアリングして表示 |
| Anthropic Messages API | type: "tool_use" / type: "tool_result" | tool_useブロックとtool_resultブロックをtool_use_idでペアリングして表示 |
| 汎用ログ配列 | tool / name / action / input / output / result / timestamp など | 上記2形式に該当しないオブジェクト配列でも、主要なキーを推定して表示 |
※LangChainなど他フレームワークのログも、内部構造が上記いずれかに近い場合は「汎用ログ配列」として認識されることがあります。認識されない場合は、キー名を name / input / output などに変換してから貼り付けると認識されやすくなります。
AIエージェントのツールコールログを読み解くための基礎知識
ログの構造や、可視化することで得られる実務上のメリットを解説します。
AIエージェントの「ツールコール」とは何か
近年のLLM(大規模言語モデル)は、あらかじめ定義された外部ツール(検索・計算・API呼び出しなど)を、会話の途中で自律的に呼び出すFunction Calling(Tool Use)という機能を備えています。
このとき、どのツールをどんな引数で呼び出したか、そしてツールが何を返したかという一連の記録がツールコールログです。エージェントが複雑なタスクをこなすほど、このログも長く複雑になっていきます。
OpenAI形式とAnthropic形式、ログ構造の主な違い
OpenAIのAPIでは、assistantメッセージ内のtool_calls配列に呼び出し内容が格納され、その結果はrole: "tool"のメッセージとして、tool_call_idで紐づけて返されます。
一方Anthropicの場合は、メッセージのcontent配列の中にtype: "tool_use"ブロックとtype: "tool_result"ブロックが混在し、tool_use_idで紐づけられます。
いずれの形式も「呼び出し」と「結果」が別オブジェクトとして分離している点は共通しており、読み解くにはIDによる突き合わせが必要になります。
ログを可視化することで得られるデバッグ効率化のメリット
生のJSONをエディタで目視確認する場合、ネストの深さや文字列化された引数(JSON文字列のJSON文字列、といった二重構造)によって、該当箇所を探すだけでも時間がかかります。
時系列のタイムラインとして可視化することで、「何回目の呼び出しで異常な引数が渡ったか」「どのツールの応答が遅いか」といった問題箇所を、スクロールしながら直感的に特定できるようになります。
機密情報を含むログを扱う際に意識したいこと
ツールコールログには、APIレスポンスの中にユーザーの個人情報や社内システムの内部情報が含まれることがあります。
本ツールは処理をブラウザ内で完結させ、外部送信を行わない設計になっていますが、整形結果をSlackや社外向けドキュメントに共有する際は、機密情報が含まれていないかを事前に確認するなど、共有先での取り扱いには注意しましょう。
よくある失敗と対策
呼び出しと結果のJSONを別々に貼り付けてしまい、うまく整形されない
tool_callsを含むassistantメッセージだけ、あるいはtoolロールの応答だけを部分的にコピーして貼り付けてしまい、IDのペアリングができず「保留中」ばかりになってしまう失敗です。
💡 対策・解決策を見る▼
JSONとして不正な形式(末尾カンマや引用符の崩れ)のまま貼り付けてしまう
ログをコピーする際に一部が欠けたり、シングルクォートに置き換わったりして、JSONとして解析できないエラーになってしまうケースです。
💡 対策・解決策を見る▼
独自形式のログをそのまま貼り付け、自動検出がうまく機能しない
社内独自のログ基盤で出力した、一般的でないキー名(例:cmd, params_dataなど)のログをそのまま貼り付け、ツール名や入出力が正しく認識されない失敗です。
💡 対策・解決策を見る▼
非常に長いログをそのまま貼り付け、目的の呼び出しを見失う
数十件、数百件のツールコールが含まれる長大なログをそのまま流し込み、目的のツール呼び出しをスクロールで探すのに時間がかかってしまう失敗です。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.どのようなJSON形式のログに対応していますか
A. OpenAIのChat Completions API形式(tool_calls / role:"tool")、AnthropicのMessages API形式(type:"tool_use" / type:"tool_result")、および name・input・output・timestamp などのキーを持つ汎用的なログ配列の3種類に対応しています。形式は自動検出されるほか、手動で指定することもできます。
Q.貼り付けたログの内容は外部に送信されますか
A. 送信されません。本ツールはすべての解析・整形処理をブラウザ内のJavaScriptだけで実行する完全ローカル処理型です。APIキーやユーザーデータを含むログを扱う場合でも、内容が外部サーバーへ送信されることはなく、通信自体が発生しません。
Q.ツールの呼び出し(call)と結果(result)が別々のオブジェクトになっている場合も整形できますか
A. はい。OpenAI形式のtool_call_idやAnthropic形式のtool_use_idのように、呼び出しと結果を紐づけるIDが含まれている場合、本ツールが自動的にペアリングして1つのタイムラインカードとして表示します。対応する結果が見つからない場合は「保留中」として表示されます。
Q.自社独自のログ形式でも使えますか
A. 多くの場合で利用できます。オブジェクトの配列で、ツール名らしきキー(tool / name / action / function など)と、入力・出力らしきキー(input / arguments / output / result / response など)が含まれていれば、汎用ログ形式として自動的に認識し表示します。認識されない場合は「汎用ログ配列」を手動選択してお試しください。
Q.整形した結果をレポートや資料に貼り付けることはできますか
A. はい、整形結果をMarkdown形式でクリップボードにコピーできます。ツールごとの見出し・入力・出力がコードブロック付きで整形されるため、そのままドキュメントやIssue、レビューコメントに貼り付けられます。
Q.実行時間(duration)や成否(success/error)も表示されますか
A. ログに duration_ms・duration・elapsed_ms などの実行時間情報や、status・error などの成否情報が含まれている場合、それぞれタイムラインカード上にバッジや数値として表示します。含まれていない項目は表示自体を省略します。
Q.大量のツールコールが含まれるログでも扱えますか
A. 対応しています。ツール名やステータス(成功/エラー/保留)で絞り込むフィルター機能や、全カードの一括展開・折りたたみ機能を備えているため、数十件以上のログでも目的のツールコールを素早く確認できます。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。