Skip to content

vllm.entrypoints.anthropic.protocol

Pydantic models for Anthropic API protocol

AnthropicContentBlock

Bases: BaseModel

Content block in message

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicContentBlock(BaseModel):
    """Content block in message"""

    type: Literal["text", "image", "tool_use", "tool_result"]
    text: str | None = None
    # For image content
    source: dict[str, Any] | None = None
    # For tool use/result
    id: str | None = None
    name: str | None = None
    input: dict[str, Any] | None = None
    content: str | list[dict[str, Any]] | None = None
    is_error: bool | None = None

content class-attribute instance-attribute

content: str | list[dict[str, Any]] | None = None

id class-attribute instance-attribute

id: str | None = None

input class-attribute instance-attribute

input: dict[str, Any] | None = None

is_error class-attribute instance-attribute

is_error: bool | None = None

name class-attribute instance-attribute

name: str | None = None

source class-attribute instance-attribute

source: dict[str, Any] | None = None

text class-attribute instance-attribute

text: str | None = None

type instance-attribute

type: Literal['text', 'image', 'tool_use', 'tool_result']

AnthropicDelta

Bases: BaseModel

Delta for streaming responses

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicDelta(BaseModel):
    """Delta for streaming responses"""

    type: Literal["text_delta", "input_json_delta"] | None = None
    text: str | None = None
    partial_json: str | None = None

    # Message delta
    stop_reason: (
        Literal["end_turn", "max_tokens", "stop_sequence", "tool_use"] | None
    ) = None
    stop_sequence: str | None = None

partial_json class-attribute instance-attribute

partial_json: str | None = None

stop_reason class-attribute instance-attribute

stop_reason: (
    Literal[
        "end_turn",
        "max_tokens",
        "stop_sequence",
        "tool_use",
    ]
    | None
) = None

stop_sequence class-attribute instance-attribute

stop_sequence: str | None = None

text class-attribute instance-attribute

text: str | None = None

type class-attribute instance-attribute

type: Literal["text_delta", "input_json_delta"] | None = (
    None
)

AnthropicError

Bases: BaseModel

Error structure for Anthropic API

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicError(BaseModel):
    """Error structure for Anthropic API"""

    type: str
    message: str

message instance-attribute

message: str

type instance-attribute

type: str

AnthropicErrorResponse

Bases: BaseModel

Error response structure for Anthropic API

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicErrorResponse(BaseModel):
    """Error response structure for Anthropic API"""

    type: Literal["error"] = "error"
    error: AnthropicError

error instance-attribute

type class-attribute instance-attribute

type: Literal['error'] = 'error'

AnthropicMessage

Bases: BaseModel

Message structure

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicMessage(BaseModel):
    """Message structure"""

    role: Literal["user", "assistant"]
    content: str | list[AnthropicContentBlock]

content instance-attribute

role instance-attribute

role: Literal['user', 'assistant']

AnthropicMessagesRequest

Bases: BaseModel

Anthropic Messages API request

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicMessagesRequest(BaseModel):
    """Anthropic Messages API request"""

    model: str
    messages: list[AnthropicMessage]
    max_tokens: int
    metadata: dict[str, Any] | None = None
    stop_sequences: list[str] | None = None
    stream: bool | None = False
    system: str | list[AnthropicContentBlock] | None = None
    temperature: float | None = None
    tool_choice: AnthropicToolChoice | None = None
    tools: list[AnthropicTool] | None = None
    top_k: int | None = None
    top_p: float | None = None

    @field_validator("model")
    @classmethod
    def validate_model(cls, v):
        if not v:
            raise ValueError("Model is required")
        return v

    @field_validator("max_tokens")
    @classmethod
    def validate_max_tokens(cls, v):
        if v <= 0:
            raise ValueError("max_tokens must be positive")
        return v

max_tokens instance-attribute

max_tokens: int

messages instance-attribute

metadata class-attribute instance-attribute

metadata: dict[str, Any] | None = None

model instance-attribute

model: str

stop_sequences class-attribute instance-attribute

stop_sequences: list[str] | None = None

stream class-attribute instance-attribute

stream: bool | None = False

system class-attribute instance-attribute

system: str | list[AnthropicContentBlock] | None = None

temperature class-attribute instance-attribute

temperature: float | None = None

tool_choice class-attribute instance-attribute

tool_choice: AnthropicToolChoice | None = None

tools class-attribute instance-attribute

tools: list[AnthropicTool] | None = None

top_k class-attribute instance-attribute

top_k: int | None = None

top_p class-attribute instance-attribute

top_p: float | None = None

validate_max_tokens classmethod

validate_max_tokens(v)
Source code in vllm/entrypoints/anthropic/protocol.py
@field_validator("max_tokens")
@classmethod
def validate_max_tokens(cls, v):
    if v <= 0:
        raise ValueError("max_tokens must be positive")
    return v

validate_model classmethod

validate_model(v)
Source code in vllm/entrypoints/anthropic/protocol.py
@field_validator("model")
@classmethod
def validate_model(cls, v):
    if not v:
        raise ValueError("Model is required")
    return v

AnthropicMessagesResponse

Bases: BaseModel

Anthropic Messages API response

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicMessagesResponse(BaseModel):
    """Anthropic Messages API response"""

    id: str
    type: Literal["message"] = "message"
    role: Literal["assistant"] = "assistant"
    content: list[AnthropicContentBlock]
    model: str
    stop_reason: (
        Literal["end_turn", "max_tokens", "stop_sequence", "tool_use"] | None
    ) = None
    stop_sequence: str | None = None
    usage: AnthropicUsage | None = None

    def model_post_init(self, __context):
        if not self.id:
            self.id = f"msg_{int(time.time() * 1000)}"

content instance-attribute

id instance-attribute

id: str

model instance-attribute

model: str

role class-attribute instance-attribute

role: Literal['assistant'] = 'assistant'

stop_reason class-attribute instance-attribute

stop_reason: (
    Literal[
        "end_turn",
        "max_tokens",
        "stop_sequence",
        "tool_use",
    ]
    | None
) = None

stop_sequence class-attribute instance-attribute

stop_sequence: str | None = None

type class-attribute instance-attribute

type: Literal['message'] = 'message'

usage class-attribute instance-attribute

usage: AnthropicUsage | None = None

model_post_init

model_post_init(__context)
Source code in vllm/entrypoints/anthropic/protocol.py
def model_post_init(self, __context):
    if not self.id:
        self.id = f"msg_{int(time.time() * 1000)}"

AnthropicStreamEvent

Bases: BaseModel

Streaming event

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicStreamEvent(BaseModel):
    """Streaming event"""

    type: Literal[
        "message_start",
        "message_delta",
        "message_stop",
        "content_block_start",
        "content_block_delta",
        "content_block_stop",
        "ping",
        "error",
    ]
    message: Optional["AnthropicMessagesResponse"] = None
    delta: AnthropicDelta | None = None
    content_block: AnthropicContentBlock | None = None
    index: int | None = None
    error: AnthropicError | None = None
    usage: AnthropicUsage | None = None

content_block class-attribute instance-attribute

content_block: AnthropicContentBlock | None = None

delta class-attribute instance-attribute

delta: AnthropicDelta | None = None

error class-attribute instance-attribute

error: AnthropicError | None = None

index class-attribute instance-attribute

index: int | None = None

message class-attribute instance-attribute

type instance-attribute

type: Literal[
    "message_start",
    "message_delta",
    "message_stop",
    "content_block_start",
    "content_block_delta",
    "content_block_stop",
    "ping",
    "error",
]

usage class-attribute instance-attribute

usage: AnthropicUsage | None = None

AnthropicTool

Bases: BaseModel

Tool definition

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicTool(BaseModel):
    """Tool definition"""

    name: str
    description: str | None = None
    input_schema: dict[str, Any]

    @field_validator("input_schema")
    @classmethod
    def validate_input_schema(cls, v):
        if not isinstance(v, dict):
            raise ValueError("input_schema must be a dictionary")
        if "type" not in v:
            v["type"] = "object"  # Default to object type
        return v

description class-attribute instance-attribute

description: str | None = None

input_schema instance-attribute

input_schema: dict[str, Any]

name instance-attribute

name: str

validate_input_schema classmethod

validate_input_schema(v)
Source code in vllm/entrypoints/anthropic/protocol.py
@field_validator("input_schema")
@classmethod
def validate_input_schema(cls, v):
    if not isinstance(v, dict):
        raise ValueError("input_schema must be a dictionary")
    if "type" not in v:
        v["type"] = "object"  # Default to object type
    return v

AnthropicToolChoice

Bases: BaseModel

Tool Choice definition

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicToolChoice(BaseModel):
    """Tool Choice definition"""

    type: Literal["auto", "any", "tool"]
    name: str | None = None

name class-attribute instance-attribute

name: str | None = None

type instance-attribute

type: Literal['auto', 'any', 'tool']

AnthropicUsage

Bases: BaseModel

Token usage information

Source code in vllm/entrypoints/anthropic/protocol.py
class AnthropicUsage(BaseModel):
    """Token usage information"""

    input_tokens: int
    output_tokens: int
    cache_creation_input_tokens: int | None = None
    cache_read_input_tokens: int | None = None

cache_creation_input_tokens class-attribute instance-attribute

cache_creation_input_tokens: int | None = None

cache_read_input_tokens class-attribute instance-attribute

cache_read_input_tokens: int | None = None

input_tokens instance-attribute

input_tokens: int

output_tokens instance-attribute

output_tokens: int