feat allow controlling logged tags on langfuse

This commit is contained in:
Ishaan Jaff 2024-08-13 12:24:01 -07:00
parent 526b196f83
commit 42bd5de7c0
2 changed files with 33 additions and 19 deletions

View file

@ -53,18 +53,7 @@ _known_custom_logger_compatible_callbacks: List = list(
get_args(_custom_logger_compatible_callbacks_literal)
)
callbacks: List[Union[Callable, _custom_logger_compatible_callbacks_literal]] = []
_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
langfuse_default_tags: Optional[List[str]] = None
_async_input_callback: List[Callable] = (
[]
) # internal variable - async custom callbacks are routed here.

View file

@ -366,12 +366,11 @@ class LangFuseLogger:
clean_metadata = {}
if isinstance(metadata, dict):
for key, value in metadata.items():
# 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
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}")
@ -386,6 +385,11 @@ class LangFuseLogger:
else:
clean_metadata[key] = value
# Add default langfuse tags
tags = self.add_default_langfuse_tags(
tags=tags, kwargs=kwargs, metadata=metadata
)
session_id = clean_metadata.pop("session_id", None)
trace_name = clean_metadata.pop("trace_name", None)
trace_id = clean_metadata.pop("trace_id", litellm_call_id)
@ -468,9 +472,9 @@ class LangFuseLogger:
clean_metadata["litellm_response_cost"] = cost
if (
litellm._langfuse_default_tags is not None
and isinstance(litellm._langfuse_default_tags, list)
and "proxy_base_url" in litellm._langfuse_default_tags
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:
@ -583,6 +587,27 @@ class LangFuseLogger:
verbose_logger.error(f"Langfuse Layer Error - {traceback.format_exc()}")
return None, None
def add_default_langfuse_tags(self, tags, kwargs, metadata):
"""
Helper function to add litellm default langfuse tags
- Special LiteLLM tags:
- cache_hit
- cache_key
"""
if litellm.langfuse_default_tags is not None and isinstance(
litellm.langfuse_default_tags, list
):
if "cache_hit" in litellm.langfuse_default_tags:
_cache_hit_value = kwargs.get("cache_hit", False)
tags.append(f"cache_hit:{_cache_hit_value}")
if "cache_key" in litellm.langfuse_default_tags:
_hidden_params = metadata.get("hidden_params", {}) or {}
_cache_key = _hidden_params.get("cache_key", None)
tags.append(f"cache_key:{_cache_key}")
return tags
def _add_prompt_to_generation_params(
generation_params: dict, clean_metadata: dict