From 141d2219e2ef6a820f0397b421b073d695b198f6 Mon Sep 17 00:00:00 2001 From: Tim Asp <707699+timothyasp@users.noreply.github.com> Date: Fri, 19 Jan 2024 11:37:15 -0800 Subject: [PATCH 1/4] Add env for project wide langsmith default project settings --- litellm/integrations/langsmith.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/litellm/integrations/langsmith.py b/litellm/integrations/langsmith.py index d951d69244a..6f796b58c27 100644 --- a/litellm/integrations/langsmith.py +++ b/litellm/integrations/langsmith.py @@ -13,6 +13,10 @@ 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 @@ -23,9 +27,9 @@ class LangsmithLogger: # 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}" ) From 27087e5662b3266dfefbfeb076c75864d634f322 Mon Sep 17 00:00:00 2001 From: Tim Asp <707699+timothyasp@users.noreply.github.com> Date: Fri, 19 Jan 2024 11:37:45 -0800 Subject: [PATCH 2/4] fix error when metadata is none, prevents logging silently --- litellm/integrations/langsmith.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/litellm/integrations/langsmith.py b/litellm/integrations/langsmith.py index 6f796b58c27..82fe4be0aa1 100644 --- a/litellm/integrations/langsmith.py +++ b/litellm/integrations/langsmith.py @@ -21,9 +21,10 @@ class LangsmithLogger: 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", {}) + if metadata is None: + metadata = {} + # 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"}) From 315fbcd09f0a4bb05244d970e90f8e6c3365cef6 Mon Sep 17 00:00:00 2001 From: Tim Asp <707699+timothyasp@users.noreply.github.com> Date: Fri, 19 Jan 2024 11:39:39 -0800 Subject: [PATCH 3/4] update docs --- docs/my-website/docs/observability/langsmith_integration.md | 2 ++ 1 file changed, 2 insertions(+) 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']="" From 9d6a8b5de318f458cf2f816d5e7d8440335ed6a9 Mon Sep 17 00:00:00 2001 From: Tim Asp <707699+timothyasp@users.noreply.github.com> Date: Fri, 19 Jan 2024 11:56:45 -0800 Subject: [PATCH 4/4] Cleaner fallback --- litellm/integrations/langsmith.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/litellm/integrations/langsmith.py b/litellm/integrations/langsmith.py index 82fe4be0aa1..4c76ba80b38 100644 --- a/litellm/integrations/langsmith.py +++ b/litellm/integrations/langsmith.py @@ -21,9 +21,7 @@ class LangsmithLogger: 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 = kwargs.get('litellm_params', {}).get("metadata", {}) - if metadata is None: - 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()