message.py 910 B

123456789101112131415161718192021222324252627282930313233
  1. """消息系统"""
  2. from typing import Optional, Dict, Any, Literal
  3. from datetime import datetime
  4. from pydantic import BaseModel
  5. MessageRole = Literal["user", "assistant", "system", "tool"]
  6. class Message(BaseModel):
  7. """消息类"""
  8. content: str
  9. role: MessageRole
  10. timestamp: datetime = None
  11. metadata: Optional[Dict[str, Any]] = None
  12. def __init__(self, content: str, role: MessageRole, **kwargs):
  13. super().__init__(
  14. content=content,
  15. role=role,
  16. timestamp=kwargs.get('timestamp', datetime.now()),
  17. metadata=kwargs.get('metadata', {})
  18. )
  19. def to_dict(self) -> Dict[str, Any]:
  20. """转换为字典格式(OpenAI API格式)"""
  21. return {
  22. "role": self.role,
  23. "content": self.content
  24. }
  25. def __str__(self) -> str:
  26. return f"[{self.role}] {self.content}"