diff --git a/litellm/__init__.py b/litellm/__init__.py index 21f98e8b364..b9d9891ca25 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -16,11 +16,24 @@ dotenv.load_dotenv() if set_verbose == True: _turn_on_debug() ############################################# +### Callbacks /Logging / Success / Failure Handlers ### input_callback: List[Union[str, Callable]] = [] success_callback: List[Union[str, Callable]] = [] failure_callback: List[Union[str, Callable]] = [] service_callback: List[Union[str, Callable]] = [] callbacks: List[Callable] = [] +_langfuse_default_tags: Optional[ + List[ + Literal[ + "user_api_key_alias", + "user_api_key_user_id", + "user_api_key_user_email", + "user_api_key_team_alias", + "semantic-similarity", + "proxy_base_url", + ] + ] +] = None _async_input_callback: List[Callable] = ( [] ) # internal variable - async custom callbacks are routed here. @@ -32,6 +45,8 @@ _async_failure_callback: List[Callable] = ( ) # internal variable - async custom callbacks are routed here. pre_call_rules: List[Callable] = [] post_call_rules: List[Callable] = [] +## end of callbacks ############# + email: Optional[str] = ( None # Not used anymore, will be removed in next MAJOR release - https://github.com/BerriAI/litellm/discussions/648 ) diff --git a/litellm/integrations/langfuse.py b/litellm/integrations/langfuse.py index 3b13446a6a7..38ab9c994b2 100644 --- a/litellm/integrations/langfuse.py +++ b/litellm/integrations/langfuse.py @@ -280,13 +280,13 @@ class LangFuseLogger: clean_metadata = {} if isinstance(metadata, dict): for key, value in metadata.items(): - # generate langfuse tags - if key in [ - "user_api_key_alias", - "user_api_key_user_id", - "user_api_key_team_alias", - "semantic-similarity", - ]: + + # generate langfuse tags - Default Tags sent to Langfuse from LiteLLM Proxy + if ( + litellm._langfuse_default_tags is not None + and isinstance(litellm._langfuse_default_tags, list) + and key in litellm._langfuse_default_tags + ): tags.append(f"{key}:{value}") # clean litellm metadata before logging @@ -300,6 +300,15 @@ class LangFuseLogger: else: clean_metadata[key] = value + if ( + litellm._langfuse_default_tags is not None + and isinstance(litellm._langfuse_default_tags, list) + and "proxy_base_url" in litellm._langfuse_default_tags + ): + proxy_base_url = os.environ.get("PROXY_BASE_URL", None) + if proxy_base_url is not None: + tags.append(f"proxy_base_url:{proxy_base_url}") + api_base = litellm_params.get("api_base", None) if api_base: clean_metadata["api_base"] = api_base diff --git a/litellm/proxy/proxy_config.yaml b/litellm/proxy/proxy_config.yaml index d1bf53a6bf8..cd625564934 100644 --- a/litellm/proxy/proxy_config.yaml +++ b/litellm/proxy/proxy_config.yaml @@ -13,4 +13,8 @@ model_list: general_settings: store_model_in_db: true master_key: sk-1234 - alerting: ["slack"] \ No newline at end of file + alerting: ["slack"] + +litellm_settings: + success_callback: ["langfuse"] + _langfuse_default_tags: ["user_api_key_alias", "user_api_key_user_id", "user_api_key_user_email", "user_api_key_team_alias", "semantic-similarity", "proxy_base_url"] \ No newline at end of file