Difyの分析基盤を比較【Langfuse・LangSmith・Metabase】
やったこと
AWS上でDify[1]環境を作る際に、プラットフォームのモニタリングやログの分析をしたいという話が出たので、以下のツールを実際に触りながら検討しました。
Difyが対応している分析ツールは現在だと他にも二つ存在しますが、正直名前を聞かないので今回は対象から外しています。また、外部のBIツールの選定基準ですが、タブローなどのプロプライエタリな商用BIツールはいったん抜きにして、OSSの有名どころを選んでいます。
各ツールについて
前提
そもそもDifyにはデフォルトでモニタリング機能が存在します。

ただ、欠点として
- アプリごとのモニタリングでありプラットフォーム全体の横断的な可視化・分析ができない
- Difyで作成したLLMアプリの利用に関する特定のメトリクスのみが対象で、環境自体の運用・保守をしていく上では足りない
等があるため、外部ツールを使用する発想が出てきます。
また、今回の構築はローカルマシンで行っており、DifyもセルフホストのCommunity版を使っているものとします。
Langfuse
Open Source LLM Engineering Platform
Traces, evals, prompt management and metrics to debug and improve your LLM application.
Difyが公式にサポートするLLMアプリケーション向け可視化・分析ツールです。Langfuse, LangsmithはアプリのMonitoring画面の右上から連携できます。

LangfuseにはSaaS版とセルフホスト版が存在します。今回はセルフホスト版を試しました。
# Get a copy of the latest Langfuse repository
> git clone https://github.com/langfuse/langfuse.git
> cd langfuse
# Run the langfuse docker compose
> docker compose up
localhostの3000ポートでホストされるので、アクセスしてアカウント作ったりプロジェクト作ったりの初期設定。

APIキーが発行されるので、その情報を入力して連携します。

Hostはlocalhostを指定するとDify自身のコンテナを参照してしまうため、Windowsでは画像の書き方になります。これで設定完了。

あらかじめ用意されているダッシュボードですぐにモニタリングを開始できます。カスタムのダッシュボードを作成することも可能です。
LangfuseはOSSのセルフホスト版が無料で使える点と、組み込みのダッシュボードが用意されている点が便利に感じました。前者はLangSmithと比較して優位ですし、後者はmetabaseの辛いところを省略してくれます。
とりあえずDifyアプリの監視を手っ取り早く始めたい場合に良い選択肢だと思います。
LangSmith
Langfuseと似たようなツールと認識していますが、こちらはLangChain公式が開発しておりLangChainとの統合が密とされています。Langfuseとの比較は以下の記事が参考になりました。
Langfuseと違ってセルフホスト版はEnterprise以上の機能になるため、お試しはSaaS版で行います。
APIキーを発行して同様に設定すると、トレースが開始されます。

所感としては、正直Langfuseと大して変わらない気もしました。LangChainフレームワークとの密な統合が売り文句として見られますが、Dify上からポチポチ利用する分にはほぼ関係ないと感じます。
ただ、大規模チーム向けの管理機能やSSOといったエンプラ向けの機能は充実していそうなので、本番環境で入れる場合はLangfuseより優先される場合があると思われます。
Metabase
Give your team and customers the easiest way to work with data
Open source Business Intelligence and Embedded Analytics that connects to your database and lets everyone visualize and learn from data. No SQL needed.
OSSのBIツールです。データストアと接続して簡易的なインタフェースやSQLを使いながらデータを可視化、分析できます。
Difyがネイティブにサポートしているわけではないので、上の二つより多少セットアップが面倒です。
- metabaseのコンテナを立ち上げる
- DifyのDBサービスのコンテナ(デフォルトでpostgresql)が所属しているネットワークにconnect
- Difyの
.envで定義されているDBの接続情報を使ってmetabaseにPostgreSQLを繋ぎこむ
またはDifyのdocker composeにmetabaseサービスを組み込む方法もありますが、今回は対象外とします。
Metabaseはセルフホストできるので、公式の方法にのっとりまずコンテナを立ち上げます。
> docker run -d -p 3000:3000 --name metabase metabase/metabase

次に、Difyのdbコンテナが所属するネットワークを調べてconnectします。
> docker container ls // postgresのコンテナIDを確認
f3a8ff631222 postgres:15-alpine
> docker container inspect <コンテナID>
...
"Networks": {
"docker_default": { // docker_defaultネットワークに所属している
...
> docker network connect docker_default metabase // metabaseコンテナをdocker_defaultネットワークに繋ぎこみ
> docker network inspect docker_default | Select-String "metabase" // 接続確認
"Name": "metabase"
あとはdifyの.envで定義したpostgresqlの接続情報を使用して接続します(お試しなのでデフォルト値を使っていますが本番ではちゃんと設定しましょう)。


これでポスグレに入っているプラットフォームのログを使いながら、Metabase上でダッシュボードの作成などができます。
試しにSQLで日付ごとのworkflowの実行数を集計して可視化してみた図です。このようなウィジェットを複数作ってダッシュボードの形にまとめられます。

SQLを見て分かると思いますが、metabaseで可視化を行う場合はDifyのDB構造を理解する必要があります。この例で使っているworkflow_runsテーブルはワークフロー実行インスタンスごとの詳細情報が入っています。
詳細はDifyリポジトリの以下のディレクトリを参照したら把握しやすいと思います。
api/modelsapi/migrations/versions
ダッシュボードを自分で作ったり、DBを繋ぎこんだりするのが面倒ですが、扱えるデータの範囲は上の二つと比べて格段に広いですし、カスタム性も高いです。Langfuse・LangSmithで計測できないような値を監視したい場合や自由にダッシュボードを作りたい場合などに有力な選択肢になると思います。
使い分け
比較表
| ツール | タイプ | 料金 | Dify統合 | セットアップ | 扱うデータ |
|---|---|---|---|---|---|
| Langfuse | LLMアプリ向け | OSS版は無料 SaaS版は有料プラン有 |
ネイティブ | 楽 | アプリのトレース |
| LangSmith | LLMアプリ向け | SaaS版は無料枠あり セルフホストはEnterprise版のみ |
ネイティブ | 楽 | アプリのトレース |
| metabase | 汎用BIツール | OSS版は無料 クラウド版は有料 |
DB直接接続 | ちょっとめんどい | プラットフォーム全体のログ |
使い分けとしては以下になると思います。
- LLMアプリの実行に関するメトリクスをメインに可視化・分析したい
- セルフホストしたい or すぐに導入したい:Langfuse
- エンプラ向けに使いたい:LangSmith
- KPIやアプリの使用率等のビジネス寄りな値を監視したい or 色々なデータを扱いたい:metabase
おまけ:QuickSight
本記事の発端はAWS上のDifyに分析基盤を導入することだったので、一応QuickSightも考えてみます。
本記事で紹介した三つのツールはあくまでDifyプラットフォームに閉じたモニタリングを提供する想定ですが、QuickSightを使うなら費用的により大きなスケールでの利用がふさわしいのかなと思います。たとえばAWS上に、Difyを組み込んだ総合的なLLMアプリケーション開発プラットフォームを構築し、Difyのみに限らずAWSリソースや外部連携サービスも含めてデータ分析を行うような使い方があると思います。
以下の記事に実際の事例があります。
Discussion