aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py')
-rw-r--r--.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py169
1 files changed, 169 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py b/.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py
new file mode 100644
index 00000000..aebe1461
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/litellm/integrations/langfuse/langfuse_handler.py
@@ -0,0 +1,169 @@
+"""
+This file contains the LangFuseHandler class
+
+Used to get the LangFuseLogger for a given request
+
+Handles Key/Team Based Langfuse Logging
+"""
+
+from typing import TYPE_CHECKING, Any, Dict, Optional
+
+from litellm.litellm_core_utils.litellm_logging import StandardCallbackDynamicParams
+
+from .langfuse import LangFuseLogger, LangfuseLoggingConfig
+
+if TYPE_CHECKING:
+ from litellm.litellm_core_utils.litellm_logging import DynamicLoggingCache
+else:
+ DynamicLoggingCache = Any
+
+
+class LangFuseHandler:
+
+ @staticmethod
+ def get_langfuse_logger_for_request(
+ standard_callback_dynamic_params: StandardCallbackDynamicParams,
+ in_memory_dynamic_logger_cache: DynamicLoggingCache,
+ globalLangfuseLogger: Optional[LangFuseLogger] = None,
+ ) -> LangFuseLogger:
+ """
+ This function is used to get the LangFuseLogger for a given request
+
+ 1. If dynamic credentials are passed
+ - check if a LangFuseLogger is cached for the dynamic credentials
+ - if cached LangFuseLogger is not found, create a new LangFuseLogger and cache it
+
+ 2. If dynamic credentials are not passed return the globalLangfuseLogger
+
+ """
+ temp_langfuse_logger: Optional[LangFuseLogger] = globalLangfuseLogger
+ if (
+ LangFuseHandler._dynamic_langfuse_credentials_are_passed(
+ standard_callback_dynamic_params
+ )
+ is False
+ ):
+ return LangFuseHandler._return_global_langfuse_logger(
+ globalLangfuseLogger=globalLangfuseLogger,
+ in_memory_dynamic_logger_cache=in_memory_dynamic_logger_cache,
+ )
+
+ # get langfuse logging config to use for this request, based on standard_callback_dynamic_params
+ _credentials = LangFuseHandler.get_dynamic_langfuse_logging_config(
+ globalLangfuseLogger=globalLangfuseLogger,
+ standard_callback_dynamic_params=standard_callback_dynamic_params,
+ )
+ credentials_dict = dict(_credentials)
+
+ # check if langfuse logger is already cached
+ temp_langfuse_logger = in_memory_dynamic_logger_cache.get_cache(
+ credentials=credentials_dict, service_name="langfuse"
+ )
+
+ # if not cached, create a new langfuse logger and cache it
+ if temp_langfuse_logger is None:
+ temp_langfuse_logger = (
+ LangFuseHandler._create_langfuse_logger_from_credentials(
+ credentials=credentials_dict,
+ in_memory_dynamic_logger_cache=in_memory_dynamic_logger_cache,
+ )
+ )
+
+ return temp_langfuse_logger
+
+ @staticmethod
+ def _return_global_langfuse_logger(
+ globalLangfuseLogger: Optional[LangFuseLogger],
+ in_memory_dynamic_logger_cache: DynamicLoggingCache,
+ ) -> LangFuseLogger:
+ """
+ Returns the Global LangfuseLogger set on litellm
+
+ (this is the default langfuse logger - used when no dynamic credentials are passed)
+
+ If no Global LangfuseLogger is set, it will check in_memory_dynamic_logger_cache for a cached LangFuseLogger
+ This function is used to return the globalLangfuseLogger if it exists, otherwise it will check in_memory_dynamic_logger_cache for a cached LangFuseLogger
+ """
+ if globalLangfuseLogger is not None:
+ return globalLangfuseLogger
+
+ credentials_dict: Dict[str, Any] = (
+ {}
+ ) # the global langfuse logger uses Environment Variables, there are no dynamic credentials
+ globalLangfuseLogger = in_memory_dynamic_logger_cache.get_cache(
+ credentials=credentials_dict,
+ service_name="langfuse",
+ )
+ if globalLangfuseLogger is None:
+ globalLangfuseLogger = (
+ LangFuseHandler._create_langfuse_logger_from_credentials(
+ credentials=credentials_dict,
+ in_memory_dynamic_logger_cache=in_memory_dynamic_logger_cache,
+ )
+ )
+ return globalLangfuseLogger
+
+ @staticmethod
+ def _create_langfuse_logger_from_credentials(
+ credentials: Dict,
+ in_memory_dynamic_logger_cache: DynamicLoggingCache,
+ ) -> LangFuseLogger:
+ """
+ This function is used to
+ 1. create a LangFuseLogger from the credentials
+ 2. cache the LangFuseLogger to prevent re-creating it for the same credentials
+ """
+
+ langfuse_logger = LangFuseLogger(
+ langfuse_public_key=credentials.get("langfuse_public_key"),
+ langfuse_secret=credentials.get("langfuse_secret"),
+ langfuse_host=credentials.get("langfuse_host"),
+ )
+ in_memory_dynamic_logger_cache.set_cache(
+ credentials=credentials,
+ service_name="langfuse",
+ logging_obj=langfuse_logger,
+ )
+ return langfuse_logger
+
+ @staticmethod
+ def get_dynamic_langfuse_logging_config(
+ standard_callback_dynamic_params: StandardCallbackDynamicParams,
+ globalLangfuseLogger: Optional[LangFuseLogger] = None,
+ ) -> LangfuseLoggingConfig:
+ """
+ This function is used to get the Langfuse logging config to use for a given request.
+
+ It checks if the dynamic parameters are provided in the standard_callback_dynamic_params and uses them to get the Langfuse logging config.
+
+ If no dynamic parameters are provided, it uses the `globalLangfuseLogger` values
+ """
+ # only use dynamic params if langfuse credentials are passed dynamically
+ return LangfuseLoggingConfig(
+ langfuse_secret=standard_callback_dynamic_params.get("langfuse_secret")
+ or standard_callback_dynamic_params.get("langfuse_secret_key"),
+ langfuse_public_key=standard_callback_dynamic_params.get(
+ "langfuse_public_key"
+ ),
+ langfuse_host=standard_callback_dynamic_params.get("langfuse_host"),
+ )
+
+ @staticmethod
+ def _dynamic_langfuse_credentials_are_passed(
+ standard_callback_dynamic_params: StandardCallbackDynamicParams,
+ ) -> bool:
+ """
+ This function is used to check if the dynamic langfuse credentials are passed in standard_callback_dynamic_params
+
+ Returns:
+ bool: True if the dynamic langfuse credentials are passed, False otherwise
+ """
+
+ if (
+ standard_callback_dynamic_params.get("langfuse_host") is not None
+ or standard_callback_dynamic_params.get("langfuse_public_key") is not None
+ or standard_callback_dynamic_params.get("langfuse_secret") is not None
+ or standard_callback_dynamic_params.get("langfuse_secret_key") is not None
+ ):
+ return True
+ return False