エージェント評価におけるPotato・LangSmith・Langfuseの実践的な比較
エージェント評価の観点でPotatoとLangSmith、Langfuse、Labelbox、Scale AIを比較します。トレース描画、ステップごと・マルチエージェントのアノテーション、マルチモーダルエージェントのレビュー、コーディングエージェント、ライブ観察、価格、セルフホストを扱います。
3つのツール、3つの考え方
Potato、LangSmith、Langfuseはいずれもエージェント評価に関わりますが、出発点が異なります。
- Potatoはアノテーション起点です。AIの出力に対する構造化された人間の判断を集めるために作られ、その後エージェントトレース、コードdiff、ライブ観察に対応しました。強みはアノテーションスキーマの深さと設定の自由度です。
- LangSmithは可観測性起点です。本番のLangChainアプリケーションを計装し、トレースし、デバッグするために作られました。アノテーション機能は後から、LangChainエコシステム内の評価ワークフローを支えるために追加されました。
- Langfuseはオープンソースの可観測性ツールです。あらゆるLLMアプリケーション向けにトレース、プロンプト管理、評価をカバーします。アノテーション機能も動きますが、モニタリングに対して副次的な位置づけです。
どれかが常に優れているわけではありません。主にアノテーションが必要なのか、可観測性が必要なのか、その両方なのか、そして特定のフレームワークのエコシステムに乗っているかどうかで選択が変わります。
機能比較
以下の表は、AIエージェント評価に関係する機能を比較したものです。検討候補に挙がることが多いLabel Studio、Argilla、Scale AIも含めています。
| 機能 | Potato | LangSmith | Langfuse | Label Studio | Argilla | Scale AI |
|---|---|---|---|---|---|---|
| 主目的 | アノテーション | 可観測性 | 可観測性 | アノテーション | アノテーション | アノテーション |
| トレース形式の対応 | 15形式 | LangChainネイティブ | Langfuse SDK | なし | なし | 個別対応 |
| ステップごとのアノテーション | フル対応(trajectory_eval) | スパンごとのスコア+コメント | スパン単位の構造化スコア | あり(トレースのインポート) | チャットのターンのみ | 個別対応 |
| エージェントのリアルタイム観察 | あり | なし | なし | なし | なし | なし |
| エージェントの一時停止/再開/操作引き継ぎ | あり | なし | なし | なし | なし | なし |
| コードdiffの描画 | あり(unified diff、シンタックスハイライト) | なし | なし | なし | なし | なし |
| ターミナル出力の描画 | あり(ANSIカラー対応) | なし | 部分的 | なし | なし | なし |
| PRMデータの収集 | あり(ステップ単位の正誤ラベル) | なし | なし | なし | なし | なし |
| インラインコメント付きコードレビュー | あり(行単位、カテゴリ付き) | なし | なし | なし | なし | なし |
| ペアワイズ比較 | 3モード(左右並列、逐次、ブラインド) | 限定的(1モード) | なし | なし | あり(1モード) | あり(1モード) |
| 多基準ルーブリック | あり(次元と尺度を設定可能) | なし | なし | なし | 部分的 | あり |
| エラー分類体系 | 階層構造、設定可能 | なし | カテゴリ型のスコア設定 | なし | なし | 個別対応 |
| 深刻度のスコアリング | あり(重み付け、実行中スコア) | なし | 数値スコアのみ | なし | なし | 個別対応 |
| マルチエージェント相互作用グラフ(アノテーターが編集可能) | あり | なし | 可視化のみ ¹ | なし | なし | なし |
| エージェントをまたぐ失敗の帰属分析 | あり | なし | 回避策のみ | なし | なし | マネージドのみ |
| ハンドオフのレビュー(第一級のオブジェクト) | あり | なし | なし | なし | なし | なし |
| エージェント別/チーム別のスコアカード | あり | なし | なし | なし | なし | なし |
| コンピュータ操作のトラジェクトリ(クリックのグラウンディング) | あり | なし | なし | 汎用の画像ツール | なし | マネージドのデータセット ² |
| 全二重の音声(バージインのスコアリング) | あり | なし | 再生のみ | なし | なし | ターン単位のみ ³ |
| 動画の時間的グラウンディング(ライブIoU) | あり | なし | なし | IoUはアノテーター間一致のみ | なし | なし |
| セルフホスト | あり(完全に) | エンタープライズ層のみ | あり(オープンソース) | あり(オープンソース) | あり(オープンソース) | VPC(エンタープライズ) |
| 無料 | あり(完全にオープンソース) | なし(無料枠は限定的) | 部分的(オープンソースのコア) | 部分的(オープンソースのコア) | あり(オープンソース) | なし |
| フレームワークのロックイン | なし | LangChainエコシステム | なし | なし | なし | なし |
¹ Langfuseの「Agent Graphs」(ベータ)はマルチエージェントの実行をグラフとして描画しますが、読み取り専用のデバッグビューであり、アノテーターがクリティカルパスを示したりエッジにフラグを立てたりする手段は文書化されていません。² Scale AIはGUI/コンピュータ操作のトラジェクトリのアノテーションを、設定して自分で使う機能としてではなく、マネージドのデータ案件として提供しています(CVATでのCUA-Suiteの取り組みなど)。³ Scaleの「Voice Showdown」はターン単位で、全二重のバージイン/発話重なりのスコアリングは予定として挙がっているだけで、まだ利用できません(2026-03-20時点)。
比較は2026-06-24に、LangSmith(docs.langchain.com)、Langfuse(MITライセンスのコア、継続的リリース)、Label Studio 1.23.0、Argilla 2.8.0、Scale AIの製品ページをもとに確認しました。これらのツールは開発が速いので、内容が古くなっている箇所があればGitHubリポジトリで訂正を歓迎します。
これらのツールのうち、コーディングエージェントのトレースを適切なdiff形式で描画するのはPotatoだけです。
unified diffの描画、シンタックスハイライト、ファイルツリーを備えたPotatoのCodingTraceDisplay
トレース形式の対応状況
実務上いちばん差が出るのは、それぞれのツールがネイティブに対応しているエージェントトレース形式の数です。
Potatoは15形式のコンバーターを同梱しています。
# See all available converters
python -m potato.trace_converter --list-formats
# Available formats:
# react - ReAct-style (Thought/Action/Observation)
# openai - OpenAI Chat Completions and Assistants API
# anthropic - Anthropic Messages API with tool_use
# langchain - LangChain / LangSmith run trace exports
# langfuse - Langfuse observation and trace exports
# multi_agent - CrewAI, AutoGen, and LangGraph multi-agent logs
# swebench - SWE-bench benchmark traces
# swe_agent_trajectory - SWE-Agent trajectory files
# claude_code - Claude Code and coding-agent session logs
# aider - Aider chat histories with edit blocks
# webarena - WebArena / VisualWebArena episode traces
# web_agent - Mind2Web, Computer Use, and raw browser recordings
# mcp - Model Context Protocol interaction logs
# otel - OpenTelemetry / OTLP trace exports
# atif - Agent Trace Interchange Formatlangsmith という独立したコンバーターはありません。LangSmith のエクスポートは langchain を、AutoGen と CrewAI は multi_agent を通ります。使っているフレームワークが一覧にない場合は、--auto-detect がフィールドのシグネチャからコンバーターを推定します。BaseTraceConverter を継承すれば独自のコンバーターも書けます。
LangSmithはLangChainのトレースをネイティブに扱います。エージェントをLangChainやLangGraphで作っていれば、トレースは自動的に流れ込みます。そうでない場合は、LangSmith SDKで自分のコードを手動で計装するか、トレースをLangSmithの形式に変換する必要があります。
LangfuseはLangfuse SDKで計装したトレースをネイティブに扱います。PythonとJavaScriptに対応し、LangChain、LlamaIndex、OpenAIとの連携もあります。LangSmithと同じく、事後のトレース変換ではなくコードレベルの計装が必要です。
LangSmithやLangfuseのトレースをPotatoに取り込む
すでにLangSmithやLangfuseにトレースがあり、Potatoのアノテーション機能を使いたい場合は、コンバーターが対応します。
# Export from LangSmith and convert
python -m potato.trace_converter \
--input langsmith_export.jsonl \
--output data/traces.jsonl \
--input-format langchain
# Export from Langfuse and convert
python -m potato.trace_converter \
--input langfuse_traces.json \
--output data/traces.jsonl \
--input-format langfuseつまり、本番のモニタリングにはLangSmithやLangfuseを使い続けたうえで、人手による詳細な評価をしたいときにトレースをPotatoへ持ち込めます。
ステップごとのアノテーション:差がいちばん大きいところ
機能面でもっとも大きな違いは、ステップごとのアノテーションの深さです。
Potatoはtrajectory_evalスキーマで次を提供します。
- ステップ単位の正誤ラベル(correct/incorrect)
- 階層的なエラー分類体系の選択
- 重みを設定できる深刻度レベル
- ステップごとに更新される実行中スコア
- ステップごとの自由記述の根拠
- これらはすべてYAMLで設定可能
# Potato: rich per-step annotation
annotation_schemes:
- annotation_type: "trajectory_eval"LangSmithでは、トレース内の個々のrunに数値スコアやカテゴリラベルを付けられます。基本的な品質追跡には使えますが、エラー分類体系、深刻度の重み付け、実行中スコアには対応していません。ステップごとのレビュー用インターフェースは用意されておらず、トレース詳細ビューからrunにスコアを付ける形です。
Langfuseはトレース単位とオブザベーション(スパン)単位でのスコアリングに対応しており、カテゴリ型のスコア設定で固定のラベル集合、つまり実用になるエラー分類体系を定義でき、同じスパンに名前付きのスコアを複数付けられます。第一級のスキーマとして用意されていないのは、階層的な分類体系と、ステップをまたいで累積する深刻度重み付きの実行中スコアです。これらはフラットなスコア設定から自分で組み立てることになります。
なので、差を正確に言えば以前より狭まっています。LangfuseもLabel Studio(LangGraph/CrewAI/AutoGenのトレースをインポートしてステップごとにレビューできるようになりました)も、構造化されたステップごとのスコアリングを行えます。Potatoが今も専用に作られているのは組み合わせの部分です。階層的なエラー分類体系と深刻度の重み、そして実行中スコアを1つのtrajectory_evalスキーマにまとめている点で、PRMの訓練データを作るときや、エージェントが最初にどこで誤ったかを特定するときに必要になるのはこれです。
コーディングエージェントへの対応
コーディングエージェント(Claude Code、Aider、SWE-Agent、Devin、OpenHands)の評価では、レビューを速く進めるためにコードdiffとターミナル出力を描画する必要があります。ここはPotatoが他より先行しています。
Potatoが描画するもの:
- 赤/緑のハイライトとシンタックスハイライトを備えたunified diff
- ANSIカラーコードに対応したターミナル出力
- 特定の行に紐づくdiffのインラインコメント
- ファイル単位の品質評価
- PRスタイルのapprove/request-changesの判定
LangSmithはツール呼び出しの入出力を整形したJSONとして表示します。コードdiffはツール出力内の生の文字列として現れます。diffの描画、シンタックスハイライト、インラインコメントはありません。
Langfuseも同様に、トレースデータを構造化JSONとして表示します。コードの内容はプレーンテキストとして現れます。diffやターミナル出力に特化した描画はありません。
コーディングエージェントの場合、この違いがレビュアーの一日を左右します。50行のdiffを、シンタックスハイライト付きのunified diffビューでインラインコメントしながらレビューする時間は、同じdiffをJSON文字列として読む時間のごく一部で済みます。
Webエージェントのトレースには、SVGオーバーレイ付きのスクリーンショットとフィルムストリップのナビゲーションが含まれます。
SVGのアクションオーバーレイ付きスクリーンショットとフィルムストリップのナビゲーションを表示するWebエージェントのトレースビューア
ライブエージェント観察
Potatoは実行中のエージェントをリアルタイムで観察できます。LangSmithもLangfuseも、アノテーションのワークフローではこれを行いません。
Potatoのライブ観察モードでは、アノテーターがエージェントの作業をステップごとに見守り、現在の状態を確認するために一時停止し、その後再開し、セッションを引き継いで進路を直したり手作業でタスクを終わらせたりできます。
これは次のような場面で役に立ちます。破壊的な操作の前にエージェントを止める(安全性)、人間による修正をデモンストレーションデータとして記録する(訓練)、途中で介入したときのエージェントの反応を見る(対話的な評価)。
# Enable live observation in Potato config
live_observation:
enabled: true
agent_endpoint: "http://localhost:5000/agent"
allow_pause: true
allow_takeover: true
auto_pause_on:
- action_type: "delete"
- action_type: "execute"
- confidence_below: 0.3LangSmithとLangfuseは、実行中のエージェントとのリアルタイムなやり取りではなく、完了したトレースの事後分析のために設計されています。
ペアワイズ比較
2つのエージェント出力を左右に並べて比べるのはよくある評価パターンで、特にモデルバージョンのA/Bテストやエージェントアーキテクチャの比較で使われます。
Potatoには3つの比較モードがあります。
- 左右並列:両方のトレースを同時に表示し、スクロールを同期
- 逐次:トレースAを見てからトレースBを見て、そのうえで判定
- ブラインド:トレースをランダムに「A」「B」とラベル付けし、モデル名は伏せる
annotation_schemes:
- annotation_type: "pairwise"LangSmithは評価実験の「comparison view」で基本的なペアワイズ比較に対応しています。異なるモデルバージョンのrunを比較できますが、インターフェースは構造化された選好アノテーションではなく、runを左右に並べて確認する用途向けです。
Langfuseにはアノテーション用のペアワイズ比較機能は組み込まれていません。
どのツールをいつ使うか
Potatoが向いている場合
- アノテーションが主目的:モニタリングだけでなく、構造化された人間の判断が必要
- コーディングエージェントへの対応が必要:diff描画、インラインコメント、ターミナル出力の表示
- PRMの訓練データを集めている:実行中スコア付きのステップ単位の正誤ラベル
- セルフホストが必要:データは自社インフラに置き、クラウドに依存しない
- 複数のエージェントフレームワークを扱う:単一フレームワークへのロックインではなく15のトレース形式コンバーター
- 表現力のある評価スキーマが必要:トラジェクトリ評価、ルーブリック評価、コードレビュー、ペアワイズ比較
- 予算が制約:完全に無料でオープンソース
LangSmithが向いている場合
- すでにLangChain/LangGraphを使っている:設定なしでトレースが自動的に流れ込む
- 本番のモニタリングが主な用途:リアルタイムのトレース、レイテンシ追跡、コスト監視
- アノテーションは副次的:深い評価スキーマではなく、基本的なスコアリングとフィードバックがあれば足りる
- マネージドサービスが欲しい:維持するインフラがない
- チームが小さい:軽い評価であれば無料枠で足りる場合がある
Langfuseが向いている場合
- オープンソースの可観測性が必要:セルフホストのモニタリングとトレース
- 複数のLLMプロバイダーを使う:OpenAI、Anthropic、LangChain、LlamaIndexとの連携が充実
- アノテーションが主な用途ではない:スコアリングはあるが中心ではない
- トレースと合わせてプロンプト管理も欲しい:Langfuseはプロンプトのバージョン管理を可観測性と一体で提供
- モニタリング用にLangSmithの無料の代替が欲しい:Langfuseのオープンソースコアでモニタリングの大半をカバーできる
補完的な使い方:可観測性+アノテーション
多くのチームにとって現実的な構成は、本番モニタリングに可観測性ツール(LangSmithまたはLangfuse)を、人手による詳細な評価にPotatoを使うことです。流れは次のようになります。
- 本番のトレース取得のために、LangSmithまたはLangfuseでエージェントを計装する
- 人手のレビューが必要なトレースをサンプリングする(失敗、エッジケース、ランダムサンプル)
- 可観測性ツールからそのトレースをエクスポートする
- 同梱のコンバーターでPotatoに変換してインポートする
- Potatoの表現力のあるアノテーションスキーマで人手評価を実施する
- 結果を開発サイクルに戻す
# Example: convert failed traces exported from Langfuse and import to Potato
python -m potato.trace_converter \
--input langfuse_failed_traces.json \
--output data/traces_to_review.jsonl \
--input-format langfuseこれで、可観測性プラットフォームのリアルタイムな可視性と、アノテーションのために作られたツールの深さを両方得られます。
主な差分のまとめ
このうち2つの領域では、主張がとりわけ明確です。調査したすべてのツール(商用・オープンソースを問わず)の中で、マルチエージェントのチーム構造とマルチモーダルエージェントのレビューについて、アノテーターが設定できる画面を備えているのはPotatoだけです。
- クリック可能でアノテーターが編集できるマルチエージェント相互作用グラフ。クリティカルパスを示し、まずいハンドオフにフラグを立てられます。他で最も近いLangfuseの「Agent Graphs」は読み取り専用のデバッグビューです。
- エージェントをまたぐ失敗の帰属分析、第一級のオブジェクトとしてのハンドオフのレビュー、エージェント別・チーム別のスコアカード、ツール競合のタイムライン、創発的な振る舞いのタグ付け。いずれも他のツールには組み込みのアノテーション構造として存在しません。
- クリックのグラウンディングを伴うコンピュータ操作のトラジェクトリ、バージインのスコアリングを備えた全二重の音声タイムライン、ライブIoUによる動画の時間的グラウンディング。Scale AIはGUIのグラウンディングと音声評価を行っていますが、マネージドのデータ案件としてであり、音声のアリーナはまだターン単位です。
これらに加えてPotatoは、コーディングエージェントのdiff描画とインラインコメント、PRMデータの収集、一時停止/再開/操作引き継ぎを伴うライブ観察、フレームワークを問わないトレースの取り込み、深刻度重み付きの実行中スコアを備えた階層的なエラー分類体系、3つのペアワイズ比較モード、PRスタイルのコードレビューをまとめて備えた、無料でセルフホストできる唯一のツールであり続けています。
これらすべてを1つにまとめたツールは、オープンソース・商用を問わず他に把握していません。2026-06-24時点でLangSmith、Langfuse、Labelbox、Scale AI、Label Studio、Argilla、Braintrustに対して確認しています(比較表の下の日付入り脚注を参照)。LangSmithとLangfuseは可観測性ツールとしては優れていますが、そのアノテーション機能はスパンに紐づくスコアであって、エージェントの構造を扱う画面ではありません。Label StudioとArgillaは汎用のアノテーションツールで、Label Studioはトレースのインポートを後付けしましたが、どちらも上に挙げたマルチエージェントやマルチモーダルエージェントの画面は持っていません。LabelboxとScaleはエージェント評価のデータ製品を提供していますが、研究チームが自分で動かして改造できるセルフホストのツールではなく、有償のクラウドまたはマネージドサービスです。
エージェントがどのように、なぜ成功したり失敗したりするのかを理解し、改善のための訓練データを集めることが目的なら、Potatoは他が空けたままにしている部分を埋めます。
移行の手順
LangSmithからPotatoへ(アノテーション用途)
# 1. Export your dataset from LangSmith
langsmith export dataset my_eval_dataset -o langsmith_data.jsonl
# 2. Convert to Potato format
python -m potato.trace_converter \
--input langsmith_data.jsonl \
--output data/traces.jsonl \
--input-format langchain
# 3. Create your Potato config and start annotating
potato start config.yaml -p 8000LangfuseからPotatoへ(アノテーション用途)
# 1. Export traces from Langfuse via API
import requests
response = requests.get(
"https://cloud.langfuse.com/api/public/traces",
headers={"Authorization": "Bearer your_api_key"},
params={"limit": 500}
)
with open("langfuse_traces.json", "w") as f:
json.dump(response.json()["data"], f)# 2. Convert to Potato format
python -m potato.trace_converter \
--input langfuse_traces.json \
--output data/traces.jsonl \
--input-format langfuse
# 3. Start annotating
potato start config.yaml -p 8000Label StudioやArgillaから(エージェント評価用途)
汎用のアノテーションにLabel StudioやArgillaを使っていて、エージェント評価の機能を足したい場合、Potatoは既存のツールと並行して動かせます。エージェント以外のアノテーションタスク(NER、分類など)はLabel StudioやArgillaで行い、トレース描画、ステップごとのアノテーション、コードレビューが必要なエージェント固有の評価はPotatoで行う、という使い分けです。
まとめ
Potato、LangSmith、Langfuseのどれを選ぶかは、抽象的にどれが最良かという話ではありません。主に何が必要かで決まります。
- 本番でエージェントを監視したいなら、LangSmithかLangfuse。
- 構造化された人手のアノテーションでエージェントの振る舞いを評価したいなら、Potato。
- 両方必要なら、併用してください。互いを補完します。
問うべきなのは、主な目的がエージェントの動作を観察することなのか、その良し悪しを評価することなのか、という点です。評価であれば、Potatoはそのために作られています。
より詳しい比較については、比較ドキュメントとエージェント評価ガイドを参照してください。