feat: introduce helper functions for dynamic tracer import (#2778)

* fix: remove unused import in langwatch.py

* feat(tracing/service.py): introduce helper functions _get_langsmith_tracer and _get_langwatch_tracer to dynamically import tracers
This commit is contained in:
Gabriel Luiz Freitas Almeida 2024-07-17 20:55:47 -03:00 • committed by GitHub
commit 6d291c88c1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 5 deletions

View file

@ -3,7 +3,6 @@ from typing import TYPE_CHECKING, Any, Dict, Optional, cast
from uuid import UUID from uuid import UUID
import nanoid # type: ignore import nanoid # type: ignore
from langwatch.tracer import ContextSpan
from loguru import logger from loguru import logger
from langflow.schema.data import Data from langflow.schema.data import Data

View file

@ -9,8 +9,6 @@ from loguru import logger
from langflow.services.base import Service from langflow.services.base import Service
from langflow.services.tracing.base import BaseTracer from langflow.services.tracing.base import BaseTracer
from langflow.services.tracing.langsmith import LangSmithTracer
from langflow.services.tracing.langwatch import LangWatchTracer
from langflow.services.tracing.schema import Log from langflow.services.tracing.schema import Log
if TYPE_CHECKING: if TYPE_CHECKING:
@ -20,6 +18,18 @@ if TYPE_CHECKING:
from langflow.services.settings.service import SettingsService from langflow.services.settings.service import SettingsService
def _get_langsmith_tracer():
from langflow.services.tracing.langsmith import LangSmithTracer
return LangSmithTracer
def _get_langwatch_tracer():
from langflow.services.tracing.langwatch import LangWatchTracer
return LangWatchTracer
class TracingService(Service): class TracingService(Service):
name = "tracing_service" name = "tracing_service"
@ -95,7 +105,8 @@ class TracingService(Service):
def _initialize_langsmith_tracer(self): def _initialize_langsmith_tracer(self):
project_name = os.getenv("LANGCHAIN_PROJECT", "Langflow") project_name = os.getenv("LANGCHAIN_PROJECT", "Langflow")
self.project_name = project_name self.project_name = project_name
self._tracers["langsmith"] = LangSmithTracer( langsmith_tracer = _get_langsmith_tracer()
self._tracers["langsmith"] = langsmith_tracer(
trace_name=self.run_name, trace_name=self.run_name,
trace_type="chain", trace_type="chain",
project_name=self.project_name, project_name=self.project_name,
@ -108,7 +119,8 @@ class TracingService(Service):
and "langwatch" not in self._tracers and "langwatch" not in self._tracers
or self._tracers["langwatch"].trace_id != self.run_id # type: ignore or self._tracers["langwatch"].trace_id != self.run_id # type: ignore
): ):
self._tracers["langwatch"] = LangWatchTracer( langwatch_tracer = _get_langwatch_tracer()
self._tracers["langwatch"] = langwatch_tracer(
trace_name=self.run_name, trace_name=self.run_name,
trace_type="chain", trace_type="chain",
project_name=self.project_name, project_name=self.project_name,