Skip to content

ccproxy.models

ccproxy.models

Pydantic models for Claude Proxy API Server.

MessageContentBlock

Bases: BaseModel

Content block in a message response.

MessageCreateParams

Bases: BaseModel

Request parameters for creating messages via Anthropic Messages API.

validate_model classmethod

validate_model(v)

Validate that the model is a supported Claude model.

Source code in ccproxy/models/messages.py
@field_validator("model")
@classmethod
def validate_model(cls, v: str) -> str:
    """Validate that the model is a supported Claude model."""
    supported_models = {
        "claude-opus-4-20250514",
        "claude-sonnet-4-20250514",
        "claude-3-7-sonnet-20250219",
        "claude-3-5-sonnet-20241022",
        "claude-3-5-sonnet-20240620",
        "claude-3-5-haiku-20241022",
        "claude-3-opus-20240229",
        "claude-3-sonnet-20240229",
        "claude-3-haiku-20240307",
        "claude-3-5-sonnet",
        "claude-3-5-haiku",
        "claude-3-opus",
        "claude-3-sonnet",
        "claude-3-haiku",
    }

    if v not in supported_models and not v.startswith("claude-"):
        raise ValueError(f"Model {v} is not supported")

    return v

validate_messages classmethod

validate_messages(v)

Validate message alternation and content.

Source code in ccproxy/models/messages.py
@field_validator("messages")
@classmethod
def validate_messages(cls, v: list[Message]) -> list[Message]:
    """Validate message alternation and content."""
    if not v:
        raise ValueError("At least one message is required")

    # First message must be from user
    if v[0].role != "user":
        raise ValueError("First message must be from user")

    # Check for proper alternation
    for i in range(1, len(v)):
        if v[i].role == v[i - 1].role:
            raise ValueError("Messages must alternate between user and assistant")

    return v

validate_stop_sequences classmethod

validate_stop_sequences(v)

Validate stop sequences.

Source code in ccproxy/models/messages.py
@field_validator("stop_sequences")
@classmethod
def validate_stop_sequences(cls, v: list[str] | None) -> list[str] | None:
    """Validate stop sequences."""
    if v is not None:
        if len(v) > 4:
            raise ValueError("Maximum 4 stop sequences allowed")
        for seq in v:
            if len(seq) > 100:
                raise ValueError("Stop sequences must be 100 characters or less")
    return v

MessageResponse

Bases: BaseModel

Response model for Anthropic Messages API endpoint.

MetadataParams

Bases: BaseModel

Metadata about the request.

SystemMessage

Bases: BaseModel

System message content block.

ThinkingConfig

Bases: BaseModel

Configuration for extended thinking process.

ToolChoiceParams

Bases: BaseModel

Tool choice configuration.

ImageContent

Bases: BaseModel

Image content block for multimodal messages.

Message

Bases: BaseModel

Individual message in the conversation.

TextContent

Bases: BaseModel

Text content block for messages.

ToolDefinition

Bases: BaseModel

Tool definition for function calling.

Usage

Bases: BaseModel

Token usage information.

APIError

Bases: BaseModel

API error details.

AuthenticationError

Bases: APIError

Authentication error.

ChatCompletionResponse

Bases: BaseModel

Response model for Claude chat completions compatible with Anthropic's API.

Choice

Bases: BaseModel

Individual choice in a non-streaming response.

ErrorResponse

Bases: BaseModel

Error response model.

InternalServerError

Bases: APIError

Internal server error.

InvalidRequestError

Bases: APIError

Invalid request error.

NotFoundError

Bases: APIError

Not found error.

OverloadedError

Bases: APIError

Overloaded error.

RateLimitError

Bases: APIError

Rate limit error.

StreamingChatCompletionResponse

Bases: BaseModel

Streaming response model for Claude chat completions.

StreamingChoice

Bases: BaseModel

Individual choice in a streaming response.

TextResponse

Bases: BaseModel

Text response content block.

ToolCall

Bases: BaseModel

Tool call made by the model.

ToolUse

Bases: BaseModel

Tool use content block.