MENU

DifyとLangfuse連携!AIの会話ログ分析・監視設定

当ページのリンクには広告が含まれています。

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と通信できるように専用のネットワーク設定を追加します。

  1. ポート 3000 は、Dify が使用しているため、3002 に変更する
  2. 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での連携設定

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

4. 動作確認とトレーシング

Difyのチャットボットで適当な会話を行い、Langfuse側にログが反映されるか確認しましょう。

Langfuseの「Traces」画面を見ると、以下のように会話の流れ、使用されたトークン数、レイテンシ(応答時間)などが詳細に記録されているはずです。

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

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

まとめ

Langfuseを導入することで、ブラックボックスになりがちなLLMアプリの挙動を可視化できます。「どの処理に時間がかかっているか」「コストがかかりすぎている会話はどれか」といった分析が可能になり、サービス改善の大きな助けとなります。

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次