MCPcopy Create free account
hub / github.com/BerriAI/litellm / function_setup

Function function_setup

litellm/utils.py:730–1068  ·  view source on GitHub ↗
(
    original_function: str, rules_obj, start_time, *args, **kwargs
)

Source from the content-addressed store, hash-verified

728
729
730def function_setup(
731 original_function: str, rules_obj, start_time, *args, **kwargs
732): # just run once to check if user wants to send their data anywhere - PostHog/Sentry/Slack/etc.
733 ### NOTICES ###
734 if litellm.set_verbose is True:
735 verbose_logger.warning(
736 "`litellm.set_verbose` is deprecated. Please set `os.environ['LITELLM_LOG'] = 'DEBUG'` for debug logs."
737 )
738 try:
739 global callback_list, add_breadcrumb, user_logger_fn, Logging
740
741 ## CUSTOM LLM SETUP ##
742 custom_llm_setup()
743
744 ## GET APPLIED GUARDRAILS
745 applied_guardrails = get_applied_guardrails(kwargs)
746
747 ## LOGGING SETUP
748 function_id: Optional[str] = kwargs["id"] if "id" in kwargs else None
749
750 ## LAZY LOAD COROUTINE CHECKER ##
751 get_coroutine_checker_fn = getattr(sys.modules[__name__], "get_coroutine_checker")
752 coroutine_checker = get_coroutine_checker_fn()
753
754 ## DYNAMIC CALLBACKS ##
755 dynamic_callbacks: Optional[List[Union[str, Callable, "CustomLogger"]]] = kwargs.pop("callbacks", None)
756 all_callbacks = get_dynamic_callbacks(dynamic_callbacks=dynamic_callbacks)
757
758 if len(all_callbacks) > 0:
759 for callback in all_callbacks:
760 # check if callback is a string - e.g. "lago", "openmeter"
761 if isinstance(callback, str):
762 callback = litellm.litellm_core_utils.litellm_logging._init_custom_logger_compatible_class( # type: ignore
763 callback,
764 internal_usage_cache=None,
765 llm_router=None, # type: ignore
766 )
767 if callback is None or any(
768 isinstance(cb, type(callback)) for cb in litellm._async_success_callback
769 ): # don't double add a callback
770 continue
771 if callback not in litellm.input_callback:
772 litellm.input_callback.append(callback) # type: ignore
773 if callback not in litellm.success_callback:
774 litellm.logging_callback_manager.add_litellm_success_callback(callback) # type: ignore
775 if callback not in litellm.failure_callback:
776 litellm.logging_callback_manager.add_litellm_failure_callback(callback) # type: ignore
777 if callback not in litellm._async_success_callback:
778 litellm.logging_callback_manager.add_litellm_async_success_callback(callback) # type: ignore
779 if callback not in litellm._async_failure_callback:
780 litellm.logging_callback_manager.add_litellm_async_failure_callback(callback) # type: ignore
781 print_verbose(f"Initialized litellm callbacks, Async Success Callbacks: {litellm._async_success_callback}")
782
783 if (
784 len(litellm.input_callback) > 0 or len(litellm.success_callback) > 0 or len(litellm.failure_callback) > 0
785 ) and len(
786 callback_list # type: ignore
787 ) == 0: # type: ignore

Calls 15

get_set_callbacksFunction · 0.90
safe_deep_copyFunction · 0.90
get_llm_providerFunction · 0.90
GoogleGenAIAdapterClass · 0.90
get_last_user_messageFunction · 0.90
custom_llm_setupFunction · 0.85
get_applied_guardrailsFunction · 0.85
get_dynamic_callbacksFunction · 0.85
_is_gemini_modelFunction · 0.85