Source code for axio.messages
"""Message: the fundamental unit of conversation history."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Literal
from .blocks import ContentBlock, from_dict, to_dict
[docs]
@dataclass(slots=True)
class Message:
role: Literal["user", "assistant", "system"]
content: list[ContentBlock] = field(default_factory=list)
[docs]
def to_dict(self) -> dict[str, Any]:
return {"role": self.role, "content": [to_dict(b) for b in self.content]}
[docs]
@classmethod
def from_dict(cls, data: dict[str, Any]) -> Message:
return cls(role=data["role"], content=[from_dict(b) for b in data["content"]])