diff --git a/litellm/llms/anthropic/experimental_pass_through/messages/transformation.py b/litellm/llms/anthropic/experimental_pass_through/messages/transformation.py index 7135102db01..308bf367d06 100644 --- a/litellm/llms/anthropic/experimental_pass_through/messages/transformation.py +++ b/litellm/llms/anthropic/experimental_pass_through/messages/transformation.py @@ -42,6 +42,7 @@ class AnthropicMessagesConfig(BaseAnthropicMessagesConfig): "tool_choice", "thinking", "context_management", + "output_format", # TODO: Add Anthropic `metadata` support # "metadata", ] @@ -169,27 +170,32 @@ class AnthropicMessagesConfig(BaseAnthropicMessagesConfig): ) -> dict: """ Auto-inject anthropic-beta headers based on features used. - + Handles: - context_management: adds 'context-management-2025-06-27' - tool_search: adds provider-specific tool search header - + - output_format: adds 'structured-outputs-2025-11-13' + Args: headers: Request headers dict - optional_params: Optional parameters including tools, context_management + optional_params: Optional parameters including tools, context_management, output_format custom_llm_provider: Provider name for looking up correct tool search header """ beta_values: set = set() - + # Get existing beta headers if any existing_beta = headers.get("anthropic-beta") if existing_beta: beta_values.update(b.strip() for b in existing_beta.split(",")) - + # Check for context management if optional_params.get("context_management") is not None: beta_values.add(ANTHROPIC_BETA_HEADER_VALUES.CONTEXT_MANAGEMENT_2025_06_27.value) - + + # Check for structured outputs + if optional_params.get("output_format") is not None: + beta_values.add(ANTHROPIC_BETA_HEADER_VALUES.STRUCTURED_OUTPUT_2025_09_25.value) + # Check for tool search tools tools = optional_params.get("tools") if tools: @@ -198,8 +204,8 @@ class AnthropicMessagesConfig(BaseAnthropicMessagesConfig): # Use provider-specific tool search header tool_search_header = get_tool_search_beta_header(custom_llm_provider) beta_values.add(tool_search_header) - + if beta_values: headers["anthropic-beta"] = ",".join(sorted(beta_values)) - + return headers