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"]])