diff --git a/vllm/entrypoints/anthropic/protocol.py b/vllm/entrypoints/anthropic/protocol.py index 3445f709109f..52eb77b51167 100644 --- a/vllm/entrypoints/anthropic/protocol.py +++ b/vllm/entrypoints/anthropic/protocol.py @@ -117,6 +117,13 @@ class AnthropicMessagesRequest(BaseModel): default=None, description="KVTransfer parameters used for disaggregated serving.", ) + chat_template_kwargs: dict[str, Any] | None = Field( + default=None, + description=( + "Additional keyword args to pass to the chat template renderer. " + "Will be accessible by the template." + ), + ) @field_validator("model") @classmethod @@ -212,6 +219,15 @@ class AnthropicCountTokensRequest(BaseModel): tool_choice: AnthropicToolChoice | None = None tools: list[AnthropicTool] | None = None + # vLLM-specific fields that are not in Anthropic spec + chat_template_kwargs: dict[str, Any] | None = Field( + default=None, + description=( + "Additional keyword args to pass to the chat template renderer. " + "Will be accessible by the template." + ), + ) + @field_validator("model") @classmethod def validate_model(cls, v): diff --git a/vllm/entrypoints/anthropic/serving.py b/vllm/entrypoints/anthropic/serving.py index 5635cfbd3596..2baf4f64cc14 100644 --- a/vllm/entrypoints/anthropic/serving.py +++ b/vllm/entrypoints/anthropic/serving.py @@ -323,6 +323,7 @@ def _build_base_request( return ChatCompletionRequest( model=anthropic_request.model, messages=openai_messages, + chat_template_kwargs=anthropic_request.chat_template_kwargs, ) return ChatCompletionRequest( @@ -335,6 +336,7 @@ def _build_base_request( top_p=anthropic_request.top_p, top_k=anthropic_request.top_k, kv_transfer_params=anthropic_request.kv_transfer_params, + chat_template_kwargs=anthropic_request.chat_template_kwargs, ) @classmethod