forked from phoenix/litellm-mirror
fix - support dynamic failure callbacks
This commit is contained in:
parent
b6e0f00ed8
commit
53f9d8280f
1 changed files with 24 additions and 4 deletions
|
@ -1079,6 +1079,7 @@ class Logging:
|
||||||
litellm_call_id,
|
litellm_call_id,
|
||||||
function_id,
|
function_id,
|
||||||
dynamic_success_callbacks=None,
|
dynamic_success_callbacks=None,
|
||||||
|
dynamic_failure_callbacks=None,
|
||||||
dynamic_async_success_callbacks=None,
|
dynamic_async_success_callbacks=None,
|
||||||
langfuse_public_key=None,
|
langfuse_public_key=None,
|
||||||
langfuse_secret=None,
|
langfuse_secret=None,
|
||||||
|
@ -1113,7 +1114,7 @@ class Logging:
|
||||||
self.sync_streaming_chunks = [] # for generating complete stream response
|
self.sync_streaming_chunks = [] # for generating complete stream response
|
||||||
self.model_call_details = {}
|
self.model_call_details = {}
|
||||||
self.dynamic_input_callbacks = [] # [TODO] callbacks set for just that call
|
self.dynamic_input_callbacks = [] # [TODO] callbacks set for just that call
|
||||||
self.dynamic_failure_callbacks = [] # [TODO] callbacks set for just that call
|
self.dynamic_failure_callbacks = dynamic_failure_callbacks
|
||||||
self.dynamic_success_callbacks = (
|
self.dynamic_success_callbacks = (
|
||||||
dynamic_success_callbacks # callbacks set for just that call
|
dynamic_success_callbacks # callbacks set for just that call
|
||||||
)
|
)
|
||||||
|
@ -2334,11 +2335,26 @@ class Logging:
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
end_time=end_time,
|
end_time=end_time,
|
||||||
)
|
)
|
||||||
|
callbacks = [] # init this to empty incase it's not created
|
||||||
|
|
||||||
|
if self.dynamic_failure_callbacks is not None and isinstance(
|
||||||
|
self.dynamic_failure_callbacks, list
|
||||||
|
):
|
||||||
|
callbacks = self.dynamic_failure_callbacks
|
||||||
|
## keep the internal functions ##
|
||||||
|
for callback in litellm.failure_callback:
|
||||||
|
if (
|
||||||
|
isinstance(callback, CustomLogger)
|
||||||
|
and "_PROXY_" in callback.__class__.__name__
|
||||||
|
):
|
||||||
|
callbacks.append(callback)
|
||||||
|
else:
|
||||||
|
callbacks = litellm.failure_callback
|
||||||
|
|
||||||
result = None # result sent to all loggers, init this to None incase it's not created
|
result = None # result sent to all loggers, init this to None incase it's not created
|
||||||
|
|
||||||
self.redact_message_input_output_from_logging(result=result)
|
self.redact_message_input_output_from_logging(result=result)
|
||||||
for callback in litellm.failure_callback:
|
for callback in callbacks:
|
||||||
try:
|
try:
|
||||||
if callback == "lite_debugger":
|
if callback == "lite_debugger":
|
||||||
print_verbose("reaches lite_debugger for logging!")
|
print_verbose("reaches lite_debugger for logging!")
|
||||||
|
@ -2713,7 +2729,7 @@ def function_setup(
|
||||||
### DYNAMIC CALLBACKS ###
|
### DYNAMIC CALLBACKS ###
|
||||||
dynamic_success_callbacks = None
|
dynamic_success_callbacks = None
|
||||||
dynamic_async_success_callbacks = None
|
dynamic_async_success_callbacks = None
|
||||||
dyanmic_failure_callbacks = None
|
dynamic_failure_callbacks = None
|
||||||
if kwargs.get("success_callback", None) is not None and isinstance(
|
if kwargs.get("success_callback", None) is not None and isinstance(
|
||||||
kwargs["success_callback"], list
|
kwargs["success_callback"], list
|
||||||
):
|
):
|
||||||
|
@ -2735,7 +2751,10 @@ def function_setup(
|
||||||
for index in reversed(removed_async_items):
|
for index in reversed(removed_async_items):
|
||||||
kwargs["success_callback"].pop(index)
|
kwargs["success_callback"].pop(index)
|
||||||
dynamic_success_callbacks = kwargs.pop("success_callback")
|
dynamic_success_callbacks = kwargs.pop("success_callback")
|
||||||
dyanmic_failure_callbacks = kwargs.pop("failure_callback")
|
if kwargs.get("failure_callback", None) is not None and isinstance(
|
||||||
|
kwargs["failure_callback"], list
|
||||||
|
):
|
||||||
|
dynamic_failure_callbacks = kwargs.pop("failure_callback")
|
||||||
|
|
||||||
if add_breadcrumb:
|
if add_breadcrumb:
|
||||||
try:
|
try:
|
||||||
|
@ -2818,6 +2837,7 @@ def function_setup(
|
||||||
call_type=call_type,
|
call_type=call_type,
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
dynamic_success_callbacks=dynamic_success_callbacks,
|
dynamic_success_callbacks=dynamic_success_callbacks,
|
||||||
|
dynamic_failure_callbacks=dynamic_failure_callbacks,
|
||||||
dynamic_async_success_callbacks=dynamic_async_success_callbacks,
|
dynamic_async_success_callbacks=dynamic_async_success_callbacks,
|
||||||
langfuse_public_key=kwargs.pop("langfuse_public_key", None),
|
langfuse_public_key=kwargs.pop("langfuse_public_key", None),
|
||||||
langfuse_secret=kwargs.pop("langfuse_secret", None)
|
langfuse_secret=kwargs.pop("langfuse_secret", None)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue