Litellm dev 12 20 2024 p3 (#7339)

* fix(proxy_track_cost_callback.py): log to db if only end user param given

* fix: allows for jwt-auth based end user id spend tracking to work

* fix(utils.py): fix 'get_end_user_id_for_cost_tracking' to use 'user_api_key_end_user_id'

more stable - works with jwt-auth based end user tracking as well

* test(test_jwt.py): add e2e unit test to confirm end user cost tracking works for spend logs

* test: update test to use end_user api key hash param

* fix(langfuse.py): support end user cost tracking via jwt auth + langfuse

logs end user to langfuse if decoded from jwt token

* fix: fix linting errors

* test: fix test

* test: fix test

* fix: fix end user id extraction

* fix: run test earlier
This commit is contained in:
Krish Dholakia 2024-12-20 21:13:32 -08:00 committed by GitHub
parent 6107f9f3f3
commit 522da384b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 149 additions and 36 deletions

View file

@ -6269,7 +6269,13 @@ def get_end_user_id_for_cost_tracking(
service_type: "litellm_logging" or "prometheus" - used to allow prometheus only disable cost tracking.
"""
proxy_server_request = litellm_params.get("proxy_server_request") or {}
_metadata = cast(dict, litellm_params.get("metadata", {}) or {})
end_user_id = cast(
Optional[str],
litellm_params.get("user_api_key_end_user_id")
or _metadata.get("user_api_key_end_user_id"),
)
if litellm.disable_end_user_cost_tracking:
return None
if (
@ -6277,7 +6283,7 @@ def get_end_user_id_for_cost_tracking(
and litellm.disable_end_user_cost_tracking_prometheus_only
):
return None
return proxy_server_request.get("body", {}).get("user", None)
return end_user_id
def is_prompt_caching_valid_prompt(