base.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from typing import List, Optional, Literal
  2. from pydantic import BaseModel, Field
  3. Role = Literal["system", "user", "assistant"]
  4. class ChatMessage(BaseModel):
  5. role: Role
  6. content: str
  7. class ChatRequest(BaseModel):
  8. messages: List[ChatMessage] = Field(min_length=1)
  9. model: Optional[str] = None
  10. temperature: Optional[float] = Field(default=None, ge=0, le=2)
  11. max_tokens: Optional[int] = Field(default=None, gt=0)
  12. class Usage(BaseModel):
  13. prompt_tokens: int
  14. completion_tokens: int
  15. total_tokens: int
  16. class ChatResponse(BaseModel):
  17. content: str
  18. model: Optional[str] = None
  19. usage: Optional[Usage] = None
  20. class TextToSpeechPayload(BaseModel):
  21. audio_url: str
  22. class CopywritingEvaluationPayload(BaseModel):
  23. content: bool
  24. reason: str
  25. corrected_msg: str
  26. class BusinessLicensePayload(BaseModel):
  27. company_name: str
  28. unified_social_credit_code: str
  29. legal_representative: str
  30. business_address: str
  31. need_manual_review: bool
  32. inaccurate_fields: List[str]
  33. inaccurate_fields_zh: List[str]
  34. class DataResponse(BaseModel):
  35. code: int
  36. data: object
  37. msg: Optional[str] = None
  38. class TextToSpeechRequest(BaseModel):
  39. volume: int = 1
  40. pitch: float = 1
  41. rate: float = 1
  42. filename: str
  43. text: str
  44. model: str
  45. class UnderstandImageRequest(BaseModel):
  46. image_url: str
  47. model: str
  48. class BusinessLicenseExtractRequest(BaseModel):
  49. image_url: str
  50. model: str
  51. class CopywritingEvaluationRequest(BaseModel):
  52. image_url: str
  53. text: str
  54. model: str