image_schema.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. """
  2. 图片生成数据传输对象定义
  3. 定义图片生成API请求和响应的数据结构
  4. """
  5. from datetime import datetime
  6. from typing import List, Optional
  7. from decimal import Decimal
  8. from pydantic import BaseModel, ConfigDict, Field
  9. class TextToImageRequest(BaseModel):
  10. """文生图请求"""
  11. prompt: str = Field(..., min_length=1, description="文本提示词")
  12. model: str = Field(default="wanx2.1-t2i-turbo", description="模型名称")
  13. n: int = Field(default=1, ge=1, le=4, description="生成图片数量")
  14. size: str = Field(default="1024*1024", description="图片尺寸")
  15. negative_prompt: Optional[str] = Field(default=None, description="负面提示词")
  16. prompt_extend: bool = Field(default=True, description="是否开启提示词智能改写(wan2.6)")
  17. watermark: bool = Field(default=False, description="是否添加水印")
  18. seed: Optional[int] = Field(default=None, description="随机数种子")
  19. class TextToImageResponse(BaseModel):
  20. """文生图响应"""
  21. success: bool
  22. images: List[str] = Field(default_factory=list, description="OSS图片URL列表")
  23. bill: Decimal = Field(default=Decimal("0"), description="费用")
  24. record_id: int = Field(default=0, description="记录ID")
  25. error: Optional[str] = Field(default=None, description="错误信息")
  26. class ImageToImageRequest(BaseModel):
  27. """图生图请求"""
  28. prompt: str = Field(..., min_length=1, description="文本提示词")
  29. model: str = Field(default="wanx2.1-imageedit", description="模型名称")
  30. n: int = Field(default=1, ge=1, le=4, description="生成图片数量")
  31. size: str = Field(default="1024*1024", description="图片尺寸")
  32. class ImageToImageResponse(BaseModel):
  33. """图生图响应"""
  34. success: bool
  35. images: List[str] = Field(default_factory=list, description="OSS图片URL列表")
  36. bill: Decimal = Field(default=Decimal("0"), description="费用")
  37. record_id: int = Field(default=0, description="记录ID")
  38. error: Optional[str] = Field(default=None, description="错误信息")
  39. class ImageModelInfo(BaseModel):
  40. """图片模型信息"""
  41. model_id: str = Field(..., description="模型ID")
  42. model_name: str = Field(..., description="模型名称")
  43. description: str = Field(default="", description="模型描述")
  44. price_per_image: Decimal = Field(..., description="每张图片价格")
  45. supported_sizes: List[str] = Field(default_factory=list, description="支持的尺寸")
  46. class ImageHistoryItem(BaseModel):
  47. """历史记录项"""
  48. id: int
  49. model_name: str
  50. input_type: str
  51. input_data: str
  52. image_count: int
  53. output_images: List[str]
  54. bill: Decimal
  55. created_at: datetime
  56. model_config = ConfigDict(from_attributes=True)
  57. class ImageHistoryResponse(BaseModel):
  58. """历史记录响应"""
  59. items: List[ImageHistoryItem]
  60. total: int
  61. page: int
  62. page_size: int