diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 16cdd9da64b..046ac45793d 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -12,6 +12,7 @@ import traceback import warnings from datetime import datetime, timedelta +import enum from typing import ( TYPE_CHECKING, Any, @@ -28,7 +29,41 @@ get_origin, get_type_hints, ) - +from pydantic import BaseModel, Json + +from litellm.proxy._types import ( + ProxyException, + UserAPIKeyAuth, + LiteLLM_UserTable, + CommonProxyErrors, + LitellmUserRoles, + ConfigList, + ConfigYAML, + ConfigFieldUpdate, + ConfigGeneralSettings, + ConfigFieldInfo, + PassThroughGenericEndpoint, + FieldDetail, + ConfigFieldDelete, + CallbackDelete, + InvitationClaim, + InvitationModel, + InvitationNew, + InvitationUpdate, + InvitationDelete, + CallInfo, + Litellm_EntityType, + TeamDefaultSettings, + RoleBasedPermissions, + SupportedDBObjectType, + ProxyErrorTypes, + EnterpriseLicenseData, + LiteLLM_JWTAuth, + TokenCountRequest, + TransformRequestBody, + LiteLLM_TeamTable, + SpecialModelNames, +) from litellm._uuid import uuid from litellm.constants import ( AIOHTTP_CONNECTOR_LIMIT, @@ -45,6 +80,9 @@ LITELLM_EMBEDDING_PROVIDERS_SUPPORTING_INPUT_ARRAY_OF_TOKENS, LITELLM_SETTINGS_SAFE_DB_OVERRIDES, ) +from litellm.litellm_core_utils.litellm_logging import ( + _init_custom_logger_compatible_class, +) from litellm.litellm_core_utils.safe_json_dumps import safe_dumps from litellm.proxy.common_utils.callback_utils import ( normalize_callback_names, @@ -2145,6 +2183,12 @@ def parse_search_tools(self, config: dict) -> Optional[List[SearchToolTypedDict] List of validated SearchToolTypedDict or None if not configured """ search_tools_raw = config.get("search_tools", None) + if not search_tools_raw: + # Check in general_settings + general_settings = config.get("general_settings", {}) + if general_settings: + search_tools_raw = general_settings.get("search_tools", None) + if not search_tools_raw: return None @@ -2886,9 +2930,6 @@ def _load_alerting_settings(self, general_settings: dict): """ Initialize alerting settings """ - from litellm.litellm_core_utils.litellm_logging import ( - _init_custom_logger_compatible_class, - ) _alerting_callbacks = general_settings.get("alerting", None) verbose_proxy_logger.debug(f"_alerting_callbacks: {general_settings}") @@ -3186,6 +3227,8 @@ async def _update_llm_router( verbose_proxy_logger.debug(f"updated llm_router: {llm_router}") else: verbose_proxy_logger.debug(f"len new_models: {len(models_list)}") + if search_tools is not None and llm_router is not None: + llm_router.search_tools = search_tools ## DELETE MODEL LOGIC await self._delete_deployment(db_models=models_list)