conversation.py 995 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """
  2. 对话和消息相关Schema
  3. """
  4. from pydantic import BaseModel
  5. from typing import Optional, List
  6. from datetime import datetime
  7. class MessageCreate(BaseModel):
  8. """消息创建Schema"""
  9. content: str
  10. stream: bool = False # 是否使用流式返回
  11. class MessageResponse(BaseModel):
  12. """消息响应Schema"""
  13. id: int
  14. conversation_id: int
  15. role: str
  16. content: str
  17. tokens_used: int
  18. is_proactive: bool
  19. created_at: datetime
  20. affection_change: Optional[int] = None # 好感度变化
  21. class Config:
  22. from_attributes = True
  23. class ConversationResponse(BaseModel):
  24. """对话响应Schema"""
  25. id: int
  26. user_id: int
  27. character_id: int
  28. title: Optional[str]
  29. created_at: datetime
  30. updated_at: datetime
  31. last_message: Optional[MessageResponse] = None
  32. class Config:
  33. from_attributes = True
  34. class ConversationDetail(ConversationResponse):
  35. """对话详情Schema"""
  36. messages: List[MessageResponse] = []