| """Pydantic models for API responses.""" | |
| from typing import Any, Literal | |
| from pydantic import BaseModel | |
| from .anthropic import ContentBlockText, ContentBlockThinking, ContentBlockToolUse | |
| class TokenCountResponse(BaseModel): | |
| input_tokens: int | |
| class ModelResponse(BaseModel): | |
| created_at: str | |
| display_name: str | |
| id: str | |
| type: Literal["model"] = "model" | |
| class ModelsListResponse(BaseModel): | |
| data: list[ModelResponse] | |
| first_id: str | None | |
| has_more: bool | |
| last_id: str | None | |
| class Usage(BaseModel): | |
| input_tokens: int | |
| output_tokens: int | |
| cache_creation_input_tokens: int = 0 | |
| cache_read_input_tokens: int = 0 | |
| class MessagesResponse(BaseModel): | |
| id: str | |
| model: str | |
| role: Literal["assistant"] = "assistant" | |
| content: list[ | |
| ContentBlockText | ContentBlockToolUse | ContentBlockThinking | dict[str, Any] | |
| ] | |
| type: Literal["message"] = "message" | |
| stop_reason: ( | |
| Literal["end_turn", "max_tokens", "stop_sequence", "tool_use"] | None | |
| ) = None | |
| stop_sequence: str | None = None | |
| usage: Usage | |