fix(langsmith.py): support langsmith 'extra' field object

Closes https://github.com/BerriAI/litellm/issues/5179
This commit is contained in:
Krrish Dholakia 2024-08-13 15:20:50 -07:00
parent ec3bf3eda6
commit a181af3d2e
2 changed files with 22 additions and 2 deletions

View file

@ -66,9 +66,28 @@ class LangsmithLogger(CustomLogger):
def _prepare_log_data(self, kwargs, response_obj, start_time, end_time): def _prepare_log_data(self, kwargs, response_obj, start_time, end_time):
import datetime import datetime
from datetime import datetime as dt
from datetime import timezone from datetime import timezone
metadata = kwargs.get("litellm_params", {}).get("metadata", {}) or {} metadata = kwargs.get("litellm_params", {}).get("metadata", {}) or {}
new_metadata = {}
for key, value in metadata.items():
if (
isinstance(value, list)
or isinstance(value, str)
or isinstance(value, int)
or isinstance(value, float)
):
new_metadata[key] = value
elif isinstance(value, BaseModel):
new_metadata[key] = value.model_dump_json()
elif isinstance(value, dict):
for k, v in value.items():
if isinstance(v, dt):
value[k] = v.isoformat()
new_metadata[key] = value
metadata = new_metadata
kwargs["user_api_key"] = metadata.get("user_api_key", None) kwargs["user_api_key"] = metadata.get("user_api_key", None)
kwargs["user_api_key_user_id"] = metadata.get("user_api_key_user_id", None) kwargs["user_api_key_user_id"] = metadata.get("user_api_key_user_id", None)
@ -124,6 +143,7 @@ class LangsmithLogger(CustomLogger):
"start_time": start_time, "start_time": start_time,
"end_time": end_time, "end_time": end_time,
"tags": tags, "tags": tags,
"extra": metadata,
} }
if run_id: if run_id:

View file

@ -3,5 +3,5 @@ model_list:
litellm_params: litellm_params:
model: "*" model: "*"
general_settings: litellm_settings:
disable_spend_logs: true success_callback: ["langsmith"]