diff --git a/README_fr.md b/README_fr.md index dc2ad541d..a94377517 100644 --- a/README_fr.md +++ b/README_fr.md @@ -56,6 +56,8 @@ DeerFlow intègre désormais le toolkit de recherche et de crawling intelligent - [Serveur MCP](#serveur-mcp) - [Canaux de messagerie](#canaux-de-messagerie) - [Traçage LangSmith](#traçage-langsmith) + - [Traçage Langfuse](#traçage-langfuse) + - [Utiliser les deux fournisseurs](#utiliser-les-deux-fournisseurs) - [Du Deep Research au Super Agent Harness](#du-deep-research-au-super-agent-harness) - [Fonctionnalités principales](#fonctionnalités-principales) - [Skills et outils](#skills-et-outils) @@ -472,6 +474,37 @@ LANGSMITH_API_KEY=lsv2_pt_xxxxxxxxxxxxxxxx LANGSMITH_PROJECT=xxx ``` +#### Traçage Langfuse + +DeerFlow prend également en charge l'observabilité via [Langfuse](https://langfuse.com) pour les exécutions compatibles LangChain. + +Ajoutez les lignes suivantes à votre fichier `.env` : + +```bash +LANGFUSE_TRACING=true +LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxxxxxxxxxx +LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxxxxxxxxxx +LANGFUSE_BASE_URL=https://cloud.langfuse.com +``` + +Si vous utilisez une instance Langfuse auto-hébergée, définissez `LANGFUSE_BASE_URL` sur l'URL de votre déploiement. + +**Champs de corrélation des traces.** Chaque exécution d'agent est annotée avec les attributs de trace réservés de Langfuse afin que les pages Sessions et Users se remplissent automatiquement : + +- `session_id` = `thread_id` de LangGraph — regroupe toutes les traces d'une même conversation +- `user_id` = utilisateur effectif issu de `get_effective_user_id()` (revient à `default` en mode sans authentification) +- `trace_name` = assistant id (par défaut `lead-agent`) +- `tags` = `[env:, model:]` (omis lorsqu'ils ne sont pas définis) +- `metadata.deerflow_trace_id` = id de corrélation de requête DeerFlow, identique à `X-Trace-Id` lorsque la corrélation de trace des requêtes est activée + +Ces champs sont injectés dans `RunnableConfig.metadata` à la racine de l'invocation du graphe, à la fois pour le chemin gateway (`runtime/runs/worker.py::run_agent`) et le chemin embarqué (`client.py::DeerFlowClient.stream`), de sorte que tout callback compatible LangChain puisse les lire. Définissez `DEER_FLOW_ENV` (ou `ENVIRONMENT`) pour étiqueter les traces par environnement de déploiement. + +#### Utiliser les deux fournisseurs + +Si LangSmith et Langfuse sont tous deux activés, DeerFlow attache les deux callbacks de traçage et rapporte la même activité de modèle aux deux systèmes. + +Si un fournisseur est explicitement activé mais qu'il manque les identifiants requis, ou si son callback échoue à s'initialiser, DeerFlow échoue immédiatement (fail fast) lors de l'initialisation du traçage à la création du modèle, et le message d'erreur indique le fournisseur à l'origine de l'échec. + Pour les déploiements Docker, le traçage est désactivé par défaut. Définissez `LANGSMITH_TRACING=true` et `LANGSMITH_API_KEY` dans votre `.env` pour l'activer. ## Du Deep Research au Super Agent Harness diff --git a/README_ja.md b/README_ja.md index ca854bd7b..b34a67781 100644 --- a/README_ja.md +++ b/README_ja.md @@ -56,6 +56,8 @@ DeerFlowは、BytePlusが独自に開発したインテリジェント検索・ - [MCPサーバー](#mcpサーバー) - [IMチャネル](#imチャネル) - [LangSmithトレーシング](#langsmithトレーシング) + - [Langfuseトレーシング](#langfuseトレーシング) + - [両方のプロバイダーを使用する](#両方のプロバイダーを使用する) - [Deep Researchからスーパーエージェントハーネスへ](#deep-researchからスーパーエージェントハーネスへ) - [コア機能](#コア機能) - [スキルとツール](#スキルとツール) @@ -459,6 +461,37 @@ LANGSMITH_API_KEY=lsv2_pt_xxxxxxxxxxxxxxxx LANGSMITH_PROJECT=xxx ``` +#### Langfuseトレーシング + +DeerFlowは、LangChain互換の実行に対して[Langfuse](https://langfuse.com)による可観測性もサポートしています。 + +`.env`ファイルに以下を追加します: + +```bash +LANGFUSE_TRACING=true +LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxxxxxxxxxx +LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxxxxxxxxxx +LANGFUSE_BASE_URL=https://cloud.langfuse.com +``` + +セルフホストのLangfuseインスタンスを使用している場合は、`LANGFUSE_BASE_URL`をデプロイ先のURLに設定します。 + +**トレース関連付けフィールド。** 各エージェント実行には、Langfuseの予約済みトレース属性が付与されるため、SessionsページとUsersページが自動的に表示されます: + +- `session_id` = LangGraphの`thread_id`——同一会話のすべてのトレースをグループ化します +- `user_id` = `get_effective_user_id()`から取得した有効なユーザー(認証なしモードでは`default`にフォールバック) +- `trace_name` = assistant id(デフォルトは`lead-agent`) +- `tags` = `[env:, model:]`(未設定の場合は省略) +- `metadata.deerflow_trace_id` = DeerFlowのリクエスト関連付けid。リクエストトレース関連付けが有効な場合は`X-Trace-Id`と一致します + +これらは、gatewayパス(`runtime/runs/worker.py::run_agent`)と埋め込みパス(`client.py::DeerFlowClient.stream`)の両方で、グラフ呼び出しのルートで`RunnableConfig.metadata`に注入されるため、LangChain互換の任意のcallbackから読み取れます。`DEER_FLOW_ENV`(または`ENVIRONMENT`)を設定すると、デプロイ環境ごとにトレースにタグを付けられます。 + +#### 両方のプロバイダーを使用する + +LangSmithとLangfuseの両方を有効にすると、DeerFlowは両方のトレーシングcallbackを取り付け、同じモデルアクティビティを両方のシステムに報告します。 + +あるプロバイダーが明示的に有効化されているにもかかわらず必要な認証情報が欠けている場合、またはそのcallbackの初期化に失敗した場合、DeerFlowはモデル作成時のトレーシング初期化中に早期に失敗(fail fast)し、エラーメッセージには失敗の原因となったプロバイダー名が示されます。 + Dockerデプロイでは、トレーシングはデフォルトで無効です。`.env`で`LANGSMITH_TRACING=true`と`LANGSMITH_API_KEY`を設定して有効にします。 ## Deep Researchからスーパーエージェントハーネスへ diff --git a/README_ru.md b/README_ru.md index 59a29ff2a..ea8ae442c 100644 --- a/README_ru.md +++ b/README_ru.md @@ -58,6 +58,8 @@ DeerFlow интегрирован с инструментарием для ум - [MCP-сервер](#mcp-сервер) - [Мессенджеры](#мессенджеры) - [Трассировка LangSmith](#трассировка-langsmith) + - [Трассировка Langfuse](#трассировка-langfuse) + - [Использование обоих провайдеров](#использование-обоих-провайдеров) - [От Deep Research к Super Agent Harness](#от-deep-research-к-super-agent-harness) - [Core Features](#core-features) - [Skills & Tools](#skills--tools) @@ -416,6 +418,37 @@ LANGSMITH_PROJECT=deer-flow `LANGSMITH_ENDPOINT` по умолчанию `https://api.smith.langchain.com` и может быть переопределён при необходимости. Устаревшие переменные `LANGCHAIN_*` (`LANGCHAIN_TRACING_V2`, `LANGCHAIN_API_KEY` и т.д.) также поддерживаются для обратной совместимости; `LANGSMITH_*` имеет приоритет, когда заданы обе. +#### Трассировка Langfuse + +DeerFlow также поддерживает наблюдаемость через [Langfuse](https://langfuse.com) для запусков, совместимых с LangChain. + +Добавьте в файл `.env`: + +```bash +LANGFUSE_TRACING=true +LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxxxxxxxxxx +LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxxxxxxxxxx +LANGFUSE_BASE_URL=https://cloud.langfuse.com +``` + +Если вы используете собственный экземпляр Langfuse, укажите `LANGFUSE_BASE_URL` в качестве URL вашего развёртывания. + +**Поля корреляции трасс.** Каждый запуск агента аннотируется зарезервированными атрибутами трассировки Langfuse, поэтому страницы Sessions и Users заполняются автоматически: + +- `session_id` = `thread_id` LangGraph — группирует все трассы одного диалога +- `user_id` = эффективный пользователь из `get_effective_user_id()` (возвращается к `default` в режиме без аутентификации) +- `trace_name` = assistant id (по умолчанию `lead-agent`) +- `tags` = `[env:, model:]` (опускается, если не заданы) +- `metadata.deerflow_trace_id` = идентификатор корреляции запросов DeerFlow, совпадающий с `X-Trace-Id`, когда корреляция трассировки запросов включена + +Эти поля внедряются в `RunnableConfig.metadata` в корне вызова графа как для gateway-пути (`runtime/runs/worker.py::run_agent`), так и для встроенного пути (`client.py::DeerFlowClient.stream`), поэтому любой LangChain-совместимый callback может их прочитать. Установите `DEER_FLOW_ENV` (или `ENVIRONMENT`) для тегирования трасс по среде развёртывания. + +#### Использование обоих провайдеров + +Если и LangSmith, и Langfuse включены, DeerFlow подключает оба callback'а трассировки и отправляет одну и ту же активность модели в обе системы. + +Если провайдер явно включён, но отсутствуют необходимые учётные данные, или если его callback не может инициализироваться, DeerFlow завершает работу с ошибкой (fail fast) при инициализации трассировки во время создания модели, а сообщение об ошибке указывает провайдера, вызвавшего сбой. + В Docker-развёртываниях трассировка отключена по умолчанию. Установите `LANGSMITH_TRACING=true` и `LANGSMITH_API_KEY` в `.env` для включения. ## От Deep Research к Super Agent Harness