mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-17 19:44:45 +08:00
feat: add LangSmith tracing integration (#878)
* feat: add LangSmith tracing integration Add optional LangSmith tracing support that can be enabled via environment variables (LANGSMITH_TRACING, LANGSMITH_API_KEY, LANGSMITH_PROJECT, LANGSMITH_ENDPOINT). When enabled, a LangChainTracer callback is attached to chat models and run metadata is injected for trace tagging. Co-Authored-By: Claude <noreply@anthropic.com> * Update backend/src/config/tracing_config.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update backend/src/agents/lead_agent/agent.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update backend/src/agents/lead_agent/agent.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update backend/src/models/factory.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add threading lock to ensure thread-safe access to tracing configuration --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Willem Jiang <willem.jiang@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import logging
|
||||
from langchain.chat_models import BaseChatModel
|
||||
|
||||
from src.config import get_app_config
|
||||
from src.config import get_app_config, get_tracing_config, is_tracing_enabled
|
||||
from src.reflection import resolve_class
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def create_chat_model(name: str | None = None, thinking_enabled: bool = False, **kwargs) -> BaseChatModel:
|
||||
"""Create a chat model instance from the config.
|
||||
@@ -37,4 +39,20 @@ def create_chat_model(name: str | None = None, thinking_enabled: bool = False, *
|
||||
raise ValueError(f"Model {name} does not support thinking. Set `supports_thinking` to true in the `config.yaml` to enable thinking.") from None
|
||||
model_settings_from_config.update(model_config.when_thinking_enabled)
|
||||
model_instance = model_class(**kwargs, **model_settings_from_config)
|
||||
|
||||
if is_tracing_enabled():
|
||||
try:
|
||||
from langchain_core.tracers.langchain import LangChainTracer
|
||||
|
||||
tracing_config = get_tracing_config()
|
||||
tracer = LangChainTracer(
|
||||
project_name=tracing_config.project,
|
||||
)
|
||||
existing_callbacks = model_instance.callbacks or []
|
||||
model_instance.callbacks = [*existing_callbacks, tracer]
|
||||
logger.debug(
|
||||
f"LangSmith tracing attached to model '{name}' (project='{tracing_config.project}')"
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to attach LangSmith tracing to model '{name}': {e}")
|
||||
return model_instance
|
||||
|
||||
Reference in New Issue
Block a user