"""消息系统""" from typing import Optional, Dict, Any, Literal from datetime import datetime from pydantic import BaseModel MessageRole = Literal["user", "assistant", "system", "tool"] class Message(BaseModel): """消息类""" content: str role: MessageRole timestamp: datetime = None metadata: Optional[Dict[str, Any]] = None def __init__(self, content: str, role: MessageRole, **kwargs): super().__init__( content=content, role=role, timestamp=kwargs.get('timestamp', datetime.now()), metadata=kwargs.get('metadata', {}) ) def to_dict(self) -> Dict[str, Any]: """转换为字典格式(OpenAI API格式)""" return { "role": self.role, "content": self.content } def __str__(self) -> str: return f"[{self.role}] {self.content}"