From 5a736b74ffbd595c468cd6a45d5b01bf05e4c7df Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 10 Dec 2025 17:39:13 -0800 Subject: [PATCH] fix: partially working generic api prompt management --- litellm/integrations/custom_logger.py | 2 + .../generic_prompt_manager.py | 29 ++++++++++++++ .../integrations/prompt_management_base.py | 38 +++++++++---------- litellm/types/prompts/init_prompts.py | 5 ++- 4 files changed, 53 insertions(+), 21 deletions(-) diff --git a/litellm/integrations/custom_logger.py b/litellm/integrations/custom_logger.py index 07ed71aeaf..6488128b21 100644 --- a/litellm/integrations/custom_logger.py +++ b/litellm/integrations/custom_logger.py @@ -163,6 +163,8 @@ class CustomLogger: # https://docs.litellm.ai/docs/observability/custom_callbac tools: Optional[List[Dict]] = None, prompt_label: Optional[str] = None, prompt_version: Optional[int] = None, + ignore_prompt_manager_model: Optional[bool] = False, + ignore_prompt_manager_optional_params: Optional[bool] = False, ) -> Tuple[str, List[AllMessageValues], dict]: """ Returns: diff --git a/litellm/integrations/generic_prompt_management/generic_prompt_manager.py b/litellm/integrations/generic_prompt_management/generic_prompt_manager.py index 7dee3f2c81..9490d9fde1 100644 --- a/litellm/integrations/generic_prompt_management/generic_prompt_manager.py +++ b/litellm/integrations/generic_prompt_management/generic_prompt_manager.py @@ -420,10 +420,13 @@ class GenericPromptManager(CustomPromptManagement): tools: Optional[List[Dict]] = None, prompt_label: Optional[str] = None, prompt_version: Optional[int] = None, + ignore_prompt_manager_model: Optional[bool] = False, + ignore_prompt_manager_optional_params: Optional[bool] = False, ) -> Tuple[str, List[AllMessageValues], dict]: """ Get chat completion prompt and return processed model, messages, and parameters. """ + return await PromptManagementBase.async_get_chat_completion_prompt( self, model, @@ -437,6 +440,18 @@ class GenericPromptManager(CustomPromptManagement): tools=tools, prompt_label=prompt_label, prompt_version=prompt_version, + ignore_prompt_manager_model=( + ignore_prompt_manager_model + or prompt_spec.litellm_params.ignore_prompt_manager_model + if prompt_spec + else False + ), + ignore_prompt_manager_optional_params=( + ignore_prompt_manager_optional_params + or prompt_spec.litellm_params.ignore_prompt_manager_optional_params + if prompt_spec + else False + ), ) def get_chat_completion_prompt( @@ -450,6 +465,8 @@ class GenericPromptManager(CustomPromptManagement): prompt_spec: Optional[PromptSpec] = None, prompt_label: Optional[str] = None, prompt_version: Optional[int] = None, + ignore_prompt_manager_model: Optional[bool] = False, + ignore_prompt_manager_optional_params: Optional[bool] = False, ) -> Tuple[str, List[AllMessageValues], dict]: """ Get chat completion prompt and return processed model, messages, and parameters. @@ -465,6 +482,18 @@ class GenericPromptManager(CustomPromptManagement): prompt_spec=prompt_spec, prompt_label=prompt_label, prompt_version=prompt_version, + ignore_prompt_manager_model=( + ignore_prompt_manager_model + or prompt_spec.litellm_params.ignore_prompt_manager_model + if prompt_spec + else False + ), + ignore_prompt_manager_optional_params=( + ignore_prompt_manager_optional_params + or prompt_spec.litellm_params.ignore_prompt_manager_optional_params + if prompt_spec + else False + ), ) def clear_cache(self) -> None: diff --git a/litellm/integrations/prompt_management_base.py b/litellm/integrations/prompt_management_base.py index 1386247546..b32f78c0de 100644 --- a/litellm/integrations/prompt_management_base.py +++ b/litellm/integrations/prompt_management_base.py @@ -138,6 +138,8 @@ class PromptManagementBase(ABC): messages: List[AllMessageValues], non_default_params: dict, model: str, + ignore_prompt_manager_model: Optional[bool] = False, + ignore_prompt_manager_optional_params: Optional[bool] = False, ): completed_messages = prompt_template["completed_messages"] or messages @@ -147,12 +149,19 @@ class PromptManagementBase(ABC): updated_non_default_params = { **non_default_params, - **prompt_template_optional_params, + **( + prompt_template_optional_params + if not ignore_prompt_manager_optional_params + else {} + ), } - model = self._get_model_from_prompt( - prompt_management_client=prompt_template, model=model - ) + if not ignore_prompt_manager_model: + model = self._get_model_from_prompt( + prompt_management_client=prompt_template, model=model + ) + else: + model = model return model, completed_messages, updated_non_default_params @@ -194,6 +203,8 @@ class PromptManagementBase(ABC): messages=messages, non_default_params=non_default_params, model=model, + ignore_prompt_manager_model=ignore_prompt_manager_model, + ignore_prompt_manager_optional_params=ignore_prompt_manager_optional_params, ) async def async_get_chat_completion_prompt( @@ -209,6 +220,8 @@ class PromptManagementBase(ABC): tools: Optional[List[Dict]] = None, prompt_label: Optional[str] = None, prompt_version: Optional[int] = None, + ignore_prompt_manager_model: Optional[bool] = False, + ignore_prompt_manager_optional_params: Optional[bool] = False, ) -> Tuple[str, List[AllMessageValues], dict]: if not self.should_run_prompt_management( prompt_id=prompt_id, @@ -226,25 +239,12 @@ class PromptManagementBase(ABC): prompt_label=prompt_label, prompt_version=prompt_version, ) - if not ignore_prompt_manager_optional_params: - updated_non_default_params = { - **non_default_params, - **prompt_template_optional_params, - } - else: - updated_non_default_params = non_default_params - - if not ignore_prompt_manager_model: - model = self._get_model_from_prompt( - prompt_management_client=prompt_template, model=model - ) - else: - model = model - return self.post_compile_prompt_processing( prompt_template=prompt_template, messages=messages, non_default_params=non_default_params, model=model, + ignore_prompt_manager_model=ignore_prompt_manager_model, + ignore_prompt_manager_optional_params=ignore_prompt_manager_optional_params, ) diff --git a/litellm/types/prompts/init_prompts.py b/litellm/types/prompts/init_prompts.py index eaeef0c1e5..2d9f807bc2 100644 --- a/litellm/types/prompts/init_prompts.py +++ b/litellm/types/prompts/init_prompts.py @@ -24,14 +24,15 @@ class PromptInfo(BaseModel): class PromptLiteLLMParams(BaseModel): prompt_id: Optional[str] = None prompt_integration: str - api_key: Optional[str] = None - api_base: Optional[str] = None api_base: Optional[str] = None api_key: Optional[str] = None provider_specific_query_params: Optional[Dict[str, Any]] = None + ignore_prompt_manager_model: Optional[bool] = False + ignore_prompt_manager_optional_params: Optional[bool] = False + dotprompt_content: Optional[str] = None """ allows saving the dotprompt file content