Dify(ディファイ)で作成したAIチャットボットの利用状況やトークン消費量、会話の品質を詳しく分析したいと思ったことはありませんか?
この記事では、オープンソースのLLMエンジニアリングプラットフォーム「Langfuse(ラングフューズ)」を構築し、Difyと連携させる手順を解説します。これにより、AIの挙動を可視化(オブザーバビリティ)し、コスト管理や品質改善に役立てることができます。
1. Langfuseの環境構築(Docker)
まずは、LangfuseをDocker Composeを使ってセルフホストで立ち上げます。Difyと同じサーバー上に同居させる構成を想定しています。
リポジトリのクローンと設定ファイルの修正
Langfuseの公式リポジトリをクローンし、docker-compose.ymlを環境に合わせて修正します。
sudo -s
cd
git clone https://github.com/langfuse/langfuse.git
cd langfuse
vi docker-compose.yml
修正のポイント:
Difyがポート3000を使用している場合が多いため、Langfuseのポートを3002に変更し、Difyと通信できるように専用のネットワーク設定を追加します。
- ポート 3000 は、Dify が使用しているため、3002 に変更する
- network を追加して、Dify と Langfuse を同じネットワークに配置する
以下にdocker-compose.ymlの修正例を表示します。
services:
langfuse-server:
image: langfuse/langfuse:2
depends_on:
db:
condition: service_healthy
ports:
- "3002:3000" # 変更
environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/postgres
- NEXTAUTH_SECRET=mysecret
- SALT=mysalt
- ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000
- NEXTAUTH_URL=http://localhost:3002 # 変更
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-true}
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
networks: # 追加
- langfuse_network # 追加
db:
image: postgres
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 3s
timeout: 3s
retries: 10
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres
ports:
- 5432:5432
volumes:
- database_data:/var/lib/postgresql/data
networks: # 追加
- langfuse_network # 追加
volumes:
database_data:
driver: local
networks: # 追加
langfuse_network: # 追加
name: langfuse_network # 追加
driver: bridge # 追加
Langfuseの起動
docker-compose up -d
起動後、ブラウザで http://{サーバーIP}:3002/ にアクセスし、Langfuseのログイン画面が表示されることを確認します。
2. Dify側のネットワーク設定
DifyのコンテナからLangfuseのコンテナへ通信できるように、Dify側のdocker-compose.yamlも修正します。
docker-compose.yamlの編集
cd /root/dify/docker
vi docker-compose.yaml
api サービスと worker サービスのネットワーク設定に、先ほど作成した langfuse_network を追加します。
services:
api:
image: langgenius/dify-api:0.9.1
restart: always
environment:
<<: *shared-api-worker-env
MODE: api
depends_on:
- db
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
networks:
- ssrf_proxy_network
- default
- langfuse_network # 追加
worker:
image: langgenius/dify-api:0.9.1
restart: always
environment:
<<: *shared-api-worker-env
MODE: worker
depends_on:
- db
- redis
volumes:
- ./volumes/app/storage:/app/api/storage
networks:
- ssrf_proxy_network
- default
- langfuse_network # 追加
ファイル末尾のネットワーク定義にも以下を追加します。
networks:
ssrf_proxy_network:
driver: bridge
internal: true
milvus:
driver: bridge
opensearch-net:
driver: bridge
internal: true
langfuse_network: # 追加
name: langfuse_network # 追加
external: true # 追加
修正が完了したら、Difyを再起動して設定を反映させます。
docker-compose down
docker-compose up -d
docker-compose ps
3. LangfuseとDifyの連携設定
いよいよ両者を連携させます。LangfuseでAPIキーを発行し、Difyに登録します。
LangfuseでAPIキー取得
1.Langfuseへのアクセス
Langfuse(ポート3002)にアクセスし、アカウントを作成・ログインします。


2. プロジェクトの作成
新しいプロジェクトを作成します。




3.APIキーを発行
「Settings」→「API Keys」から新しいAPIキー(Public Key, Secret Key)を発行します。


Difyでの連携設定
- Difyのアプリ設定画面を開き、「モニタリング」または「外部データツール」設定からLangfuseを選択します。
- APIキー情報を入力します。
- Host: Dockerネットワーク内での通信となるため、
http://langfuse-server:3000と入力します。



4. 動作確認とトレーシング
Difyのチャットボットで適当な会話を行い、Langfuse側にログが反映されるか確認しましょう。
Langfuseの「Traces」画面を見ると、以下のように会話の流れ、使用されたトークン数、レイテンシ(応答時間)などが詳細に記録されているはずです。

Langfuse の画面に移動し、Trace を確認する


チャット内容や Token 数が確認できる

まとめ
Langfuseを導入することで、ブラックボックスになりがちなLLMアプリの挙動を可視化できます。「どの処理に時間がかかっているか」「コストがかかりすぎている会話はどれか」といった分析が可能になり、サービス改善の大きな助けとなります。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー



VPSサーバの選定





コメント