Bases: BaseModel
Request parameters for creating messages via Anthropic Messages API.
validate_model
classmethod
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 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
|