character.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """
  2. AI角色相关Schema
  3. """
  4. from pydantic import BaseModel, validator
  5. from typing import Optional, Dict
  6. from datetime import datetime
  7. class CharacterBase(BaseModel):
  8. """角色基础Schema"""
  9. name: str
  10. personality: Optional[str] = None
  11. background_story: Optional[str] = None
  12. avatar_url: Optional[str] = None
  13. language: str = "en"
  14. class CharacterCreate(CharacterBase):
  15. """角色创建Schema"""
  16. llm_provider: str = "openai"
  17. llm_model: str = "gpt-3.5-turbo"
  18. config: Optional[Dict] = {}
  19. @validator("llm_provider")
  20. def validate_provider(cls, v):
  21. allowed = ["openai", "claude", "qwen", "ernie"]
  22. if v not in allowed:
  23. raise ValueError(f"不支持的AI平台: {v}")
  24. return v
  25. class CharacterUpdate(BaseModel):
  26. """角色更新Schema"""
  27. name: Optional[str] = None
  28. personality: Optional[str] = None
  29. background_story: Optional[str] = None
  30. avatar_url: Optional[str] = None
  31. llm_provider: Optional[str] = None
  32. llm_model: Optional[str] = None
  33. config: Optional[Dict] = None
  34. class CharacterResponse(CharacterBase):
  35. """角色响应Schema"""
  36. id: int
  37. user_id: int
  38. llm_provider: str
  39. llm_model: str
  40. system_prompt: str
  41. is_active: bool
  42. created_at: datetime
  43. class Config:
  44. from_attributes = True