From 949c106250d43169434319c55c47aa8fb54b5799 Mon Sep 17 00:00:00 2001 From: Hua Date: Mon, 23 Mar 2026 15:08:07 +0800 Subject: [PATCH] fix(litellm): initialize langsmith flag --- nanobot/providers/litellm_provider.py | 1 + tests/test_litellm_provider.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/test_litellm_provider.py diff --git a/nanobot/providers/litellm_provider.py b/nanobot/providers/litellm_provider.py index bd6a2d3..16f2f7d 100644 --- a/nanobot/providers/litellm_provider.py +++ b/nanobot/providers/litellm_provider.py @@ -62,6 +62,7 @@ class LiteLLMProvider(LLMProvider): litellm.suppress_debug_info = True # Drop unsupported parameters for providers (e.g., gpt-5 rejects some params) litellm.drop_params = True + self._langsmith_enabled = bool(os.getenv("LANGSMITH_API_KEY")) def _setup_env(self, api_key: str, api_base: str | None, model: str) -> None: """Set environment variables based on detected provider.""" diff --git a/tests/test_litellm_provider.py b/tests/test_litellm_provider.py new file mode 100644 index 0000000..999072d --- /dev/null +++ b/tests/test_litellm_provider.py @@ -0,0 +1,26 @@ +from nanobot.providers.litellm_provider import LiteLLMProvider + + +def test_litellm_provider_initializes_langsmith_flag(monkeypatch) -> None: + monkeypatch.setenv("LANGSMITH_API_KEY", "ls-test") + + provider = LiteLLMProvider(default_model="openai/gpt-4o-mini") + + assert provider._langsmith_enabled is True + + +def test_litellm_provider_build_chat_kwargs_adds_langsmith_callback(monkeypatch) -> None: + monkeypatch.setenv("LANGSMITH_API_KEY", "ls-test") + + provider = LiteLLMProvider(default_model="openai/gpt-4o-mini") + kwargs, _ = provider._build_chat_kwargs( + messages=[{"role": "user", "content": "hello"}], + tools=None, + model=None, + max_tokens=128, + temperature=0.1, + reasoning_effort=None, + tool_choice=None, + ) + + assert kwargs["callbacks"] == ["langsmith"]