Spaces:
Paused
Paused
| #### What this does #### | |
| # On success, logs events to Promptlayer | |
| import dotenv, os | |
| import requests | |
| from litellm.proxy._types import UserAPIKeyAuth | |
| from litellm.caching import DualCache | |
| from typing import Literal | |
| dotenv.load_dotenv() # Loading env variables using dotenv | |
| import traceback | |
| class CustomLogger: # https://docs.litellm.ai/docs/observability/custom_callback#callback-class | |
| # Class variables or attributes | |
| def __init__(self): | |
| pass | |
| def log_pre_api_call(self, model, messages, kwargs): | |
| pass | |
| def log_post_api_call(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| def log_stream_event(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| def log_success_event(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| def log_failure_event(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| #### ASYNC #### | |
| async def async_log_stream_event(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| async def async_log_pre_api_call(self, model, messages, kwargs): | |
| pass | |
| async def async_log_success_event(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| async def async_log_failure_event(self, kwargs, response_obj, start_time, end_time): | |
| pass | |
| #### CALL HOOKS - proxy only #### | |
| """ | |
| Control the modify incoming / outgoung data before calling the model | |
| """ | |
| async def async_pre_call_hook( | |
| self, | |
| user_api_key_dict: UserAPIKeyAuth, | |
| cache: DualCache, | |
| data: dict, | |
| call_type: Literal["completion", "embeddings"], | |
| ): | |
| pass | |
| async def async_post_call_failure_hook( | |
| self, original_exception: Exception, user_api_key_dict: UserAPIKeyAuth | |
| ): | |
| pass | |
| #### SINGLE-USE #### - https://docs.litellm.ai/docs/observability/custom_callback#using-your-custom-callback-function | |
| def log_input_event(self, model, messages, kwargs, print_verbose, callback_func): | |
| try: | |
| kwargs["model"] = model | |
| kwargs["messages"] = messages | |
| kwargs["log_event_type"] = "pre_api_call" | |
| callback_func( | |
| kwargs, | |
| ) | |
| print_verbose(f"Custom Logger - model call details: {kwargs}") | |
| except: | |
| traceback.print_exc() | |
| print_verbose(f"Custom Logger Error - {traceback.format_exc()}") | |
| async def async_log_input_event( | |
| self, model, messages, kwargs, print_verbose, callback_func | |
| ): | |
| try: | |
| kwargs["model"] = model | |
| kwargs["messages"] = messages | |
| kwargs["log_event_type"] = "pre_api_call" | |
| await callback_func( | |
| kwargs, | |
| ) | |
| print_verbose(f"Custom Logger - model call details: {kwargs}") | |
| except: | |
| traceback.print_exc() | |
| print_verbose(f"Custom Logger Error - {traceback.format_exc()}") | |
| def log_event( | |
| self, kwargs, response_obj, start_time, end_time, print_verbose, callback_func | |
| ): | |
| # Method definition | |
| try: | |
| kwargs["log_event_type"] = "post_api_call" | |
| callback_func( | |
| kwargs, # kwargs to func | |
| response_obj, | |
| start_time, | |
| end_time, | |
| ) | |
| print_verbose(f"Custom Logger - final response object: {response_obj}") | |
| except: | |
| # traceback.print_exc() | |
| print_verbose(f"Custom Logger Error - {traceback.format_exc()}") | |
| pass | |
| async def async_log_event( | |
| self, kwargs, response_obj, start_time, end_time, print_verbose, callback_func | |
| ): | |
| # Method definition | |
| try: | |
| kwargs["log_event_type"] = "post_api_call" | |
| await callback_func( | |
| kwargs, # kwargs to func | |
| response_obj, | |
| start_time, | |
| end_time, | |
| ) | |
| print_verbose(f"Custom Logger - final response object: {response_obj}") | |
| except: | |
| # traceback.print_exc() | |
| print_verbose(f"Custom Logger Error - {traceback.format_exc()}") | |
| pass | |