diff --git a/letta/server/rest_api/routers/v1/telemetry.py b/letta/server/rest_api/routers/v1/telemetry.py index 75e8de95..d17a378b 100644 --- a/letta/server/rest_api/routers/v1/telemetry.py +++ b/letta/server/rest_api/routers/v1/telemetry.py @@ -1,18 +1,28 @@ +from typing import Optional + from fastapi import APIRouter, Depends, Header from letta.schemas.provider_trace import ProviderTrace from letta.server.rest_api.utils import get_letta_server from letta.server.server import SyncServer +from letta.settings import settings router = APIRouter(prefix="/telemetry", tags=["telemetry"]) -@router.get("/{step_id}", response_model=ProviderTrace, operation_id="retrieve_provider_trace") +@router.get("/{step_id}", response_model=Optional[ProviderTrace], operation_id="retrieve_provider_trace") async def retrieve_provider_trace_by_step_id( step_id: str, server: SyncServer = Depends(get_letta_server), actor_id: str | None = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present ): - return await server.telemetry_manager.get_provider_trace_by_step_id_async( - step_id=step_id, actor=await server.user_manager.get_actor_or_default_async(actor_id=actor_id) - ) + provider_trace = None + if settings.track_provider_trace: + try: + provider_trace = await server.telemetry_manager.get_provider_trace_by_step_id_async( + step_id=step_id, actor=await server.user_manager.get_actor_or_default_async(actor_id=actor_id) + ) + except: + pass + + return provider_trace diff --git a/letta/settings.py b/letta/settings.py index f497e6fd..2e052a3d 100644 --- a/letta/settings.py +++ b/letta/settings.py @@ -252,6 +252,7 @@ class Settings(BaseSettings): track_errored_messages: bool = Field(default=True, description="Enable tracking for errored messages") track_stop_reason: bool = Field(default=True, description="Enable tracking stop reason on steps.") track_agent_run: bool = Field(default=True, description="Enable tracking agent run with cancellation support") + track_provider_trace: bool = Field(default=True, description="Enable tracking raw llm request and response at each step") # FastAPI Application Settings uvicorn_workers: int = 1