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

Function function_setup

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

Source from the content-addressed store, hash-verified

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