チャットスレッドビューア
OpenAI または Anthropic の messages 配列(JSON)を貼り付けると、読みやすいチャットスレッドとして表示。ロール別に色分け。ツールコールの引数も展開可能。ブラウザ完結・アップロードなし。
これは何のため?
LLM アプリは会話を JSON のメッセージ配列としてログ化します — API に送られるのも、監査ログ・評価トレース・ファインチューニング用データセット・SDK のデバッグ出力に現れるのも、同じ形です。これを人間が直接読むのは辛い:エスケープされた文字列の壁、JSON in JSON でエスケープされたツール呼び出し引数、システムプロンプトが他のメッセージと混ざっている。このツールはそれをチャットバブルとして素早くレンダリングして、実際の会話を眺め、どのメッセージにツール呼び出しが含まれていたか確認し、おかしくなったプロンプトを特定できるようにします。
対応フォーマット
- OpenAI Chat Completions。
[{role, content}, ...]形式。assistant メッセージにはオプションでtool_calls、ツール結果はrole: "tool"。最も一般的な形式です。 - Anthropic Messages API。
[{role, content: [...]}]で、contentはブロック配列(text、tool_use、tool_result、image)。システムプロンプトは通常トップレベル — 表示したい場合は system メッセージとして貼り付けてください。 - LangChain のメッセージダンプ。
[{type: "human" | "ai" | "system", content: ...}]— 古めの LangChain 形式ですが、保存されたトレースでは今もよく使われます。 - ラッパーオブジェクト。
{"messages": [...]}や{"input": [...]}を貼り付けると、ラッパーは自動でアンラップされます。
表示内容
- ロール別の色分けバブル。 system = 中央寄せのグレー、user = 右寄せのインディゴ、assistant = 左寄せのニュートラル、tool result = グリーン。
- ツール呼び出し。 既定で展開され、引数は整形表示。OpenAI の
tool_callsと Anthropic のtool_useブロックの両方に対応。ツール結果メッセージは別バブルで表示されます。 - コードフェンスとインラインコード。 トリプルバッククォートは
<pre>等幅でレンダリング、シングルバッククォートはインラインコード。シンタックスハイライトはありません(そのためのトークナイザを同梱していません)が、インデントは保持されます。 - 画像参照。 Anthropic の image ブロックは、ソース URL またはメディアタイプを示す小さなピル状の UI で表示 — 画像自体は読み込みません(オフライン動作のため)。
- 統計行。 検出されたフォーマット、メッセージ数、ツール呼び出し数、Token Counter と同じヒューリスティックによる概算トークン数。
よくある落とし穴
- 末尾カンマ。 標準 JSON では許されません。デバッガや REPL の出力からコピーした場合は、貼り付け前に
{...},]→{...}]を整える必要があるかもしれません。 - シングルクォート。 Python の
reprはシングルクォートを使います。json.dumpsを通すか、Python リテラル → JSON 変換ツールを使ってください。 - Anthropic のシステムプロンプト。 Anthropic API ではシステム指示はトップレベルのフィールドで、メッセージではありません。messages 配列だけのダンプにはシステムプロンプトが含まれないので、先頭に
{"role": "system", "content": "..."}として貼り付けてください。 - エスケープされた JSON のツール引数。 OpenAI は
argumentsを JSON 文字列で返します。これをアンエスケープして整形します。文字列内 JSON が壊れている場合は生の文字列を表示します。 - プライバシー。 何もページ外に出ません。レンダリングはすべて、貼り付けた JSON 上で JS が処理します。メモ帳に貼り付けたくないものは貼り付けないでください。