diff --git a/docs/my-website/docs/observability/langsmith_integration.md b/docs/my-website/docs/observability/langsmith_integration.md index 247cb8015a3..ca0421b1584 100644 --- a/docs/my-website/docs/observability/langsmith_integration.md +++ b/docs/my-website/docs/observability/langsmith_integration.md @@ -28,6 +28,8 @@ import litellm import os os.environ["LANGSMITH_API_KEY"] = "" +os.environ["LANGSMITH_PROJECT"] = "" # defaults to litellm-completion +os.environ["LANGSMITH_DEFAULT_RUN_NAME"] = "" # defaults to LLMRun # LLM API Keys os.environ['OPENAI_API_KEY']="" diff --git a/litellm/integrations/langsmith.py b/litellm/integrations/langsmith.py index d951d69244a..4c76ba80b38 100644 --- a/litellm/integrations/langsmith.py +++ b/litellm/integrations/langsmith.py @@ -13,19 +13,22 @@ class LangsmithLogger: # Class variables or attributes def __init__(self): self.langsmith_api_key = os.getenv("LANGSMITH_API_KEY") + self.langsmith_project = os.getenv("LANGSMITH_PROJECT", "litellm-completion") + self.langsmith_default_run_name = os.getenv( + "LANGSMITH_DEFAULT_RUN_NAME", "LLMRun" + ) def log_event(self, kwargs, response_obj, start_time, end_time, print_verbose): # Method definition # inspired by Langsmith http api here: https://github.com/langchain-ai/langsmith-cookbook/blob/main/tracing-examples/rest/rest.ipynb - metadata = {} - if "litellm_params" in kwargs: - metadata = kwargs["litellm_params"].get("metadata", {}) + metadata = kwargs.get('litellm_params', {}).get("metadata", {}) or {} # if metadata is None + # set project name and run_name for langsmith logging # users can pass project_name and run name to litellm.completion() # Example: litellm.completion(model, messages, metadata={"project_name": "my-litellm-project", "run_name": "my-langsmith-run"}) - # if not set litellm will use default project_name = litellm-completion, run_name = LLMRun - project_name = metadata.get("project_name", "litellm-completion") - run_name = metadata.get("run_name", "LLMRun") + # if not set litellm will fallback to the environment variable LANGSMITH_PROJECT, then to the default project_name = litellm-completion, run_name = LLMRun + project_name = metadata.get("project_name", self.langsmith_project) + run_name = metadata.get("run_name", self.langsmith_default_run_name) print_verbose( f"Langsmith Logging - project_name: {project_name}, run_name {run_name}" )