Pydantic v2 request/response models for LLM interactions.
Message
Bases: BaseModel
A single message in a conversation.
Source code in src/agenticraft_types/models.py
| class Message(BaseModel):
"""A single message in a conversation."""
role: MessageRole
content: str | None = None
tool_calls: list[dict[str, Any]] | None = None
name: str | None = None
tool_call_id: str | None = None
|
Usage
Bases: BaseModel
Token usage statistics.
Source code in src/agenticraft_types/models.py
| class Usage(BaseModel):
"""Token usage statistics."""
prompt_tokens: int = 0
completion_tokens: int = 0
total_tokens: int = 0
cost_usd: float | None = None
|
CompletionRequest
Bases: BaseModel
Canonical LLM completion request.
Source code in src/agenticraft_types/models.py
| class CompletionRequest(BaseModel):
"""Canonical LLM completion request."""
messages: list[Message]
model: str | None = None
temperature: float | None = None
max_tokens: int | None = None
top_p: float | None = None
stream: bool = False
tools: list[dict[str, Any]] | None = None
tool_choice: str | dict[str, Any] | None = None
system_prompt: str | None = None
stop: list[str] | None = None
metadata: dict[str, Any] = Field(default_factory=dict)
|
CompletionResponse
Bases: BaseModel
Canonical LLM completion response.
Source code in src/agenticraft_types/models.py
| class CompletionResponse(BaseModel):
"""Canonical LLM completion response."""
content: str
usage: Usage | None = None
provider: str | None = None
model: str | None = None
latency_ms: float | None = None
cost: float | None = None
finish_reason: str | None = None
tool_calls: list[dict[str, Any]] | None = None
|
StreamChunk
Bases: BaseModel
Streaming response chunk.
Source code in src/agenticraft_types/models.py
| class StreamChunk(BaseModel):
"""Streaming response chunk."""
delta: str = ""
finish_reason: str | None = None
tool_call_delta: dict[str, Any] | None = None
|
ProviderConfig
Bases: BaseModel
Configuration for an LLM provider.
Source code in src/agenticraft_types/models.py
| class ProviderConfig(BaseModel):
"""Configuration for an LLM provider."""
name: str
api_key: str | None = None
base_url: str | None = None
models: list[str] = Field(default_factory=list)
timeout: int = 60
max_retries: int = 3
|