assistant.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from typing import Optional, Union
  2. from pydantic import Field as PDField
  3. from sqlalchemy import Column
  4. from sqlmodel import Field, JSON, TEXT
  5. from app.models.base_model import BaseModel, TimeStampMixin, PrimaryKeyMixin
  6. class AssistantBase(BaseModel):
  7. model: str = Field(nullable=False)
  8. description: Optional[str] = Field(default=None)
  9. file_ids: Optional[list] = Field(default=None, sa_column=Column(JSON))
  10. instructions: Optional[str] = Field(default=None, max_length=32768, sa_column=Column(TEXT))
  11. metadata_: Optional[dict] = Field(default=None, sa_column=Column("metadata", JSON), schema_extra={"validation_alias": "metadata"})
  12. name: Optional[str] = Field(default=None)
  13. tools: Optional[list] = Field(default=None, sa_column=Column(JSON))
  14. extra_body: Optional[dict] = Field(default={}, sa_column=Column(JSON))
  15. response_format: Optional[Union[str, dict]] = Field(default="auto", sa_column=Column(JSON)) # 响应格式
  16. tool_resources: Optional[dict] = Field(default=None, sa_column=Column(JSON)) # 工具资源
  17. temperature: Optional[float] = Field(default=None) # 温度
  18. top_p: Optional[float] = Field(default=None) # top_p
  19. object: str = Field(nullable=False, default="assistant")
  20. class Assistant(AssistantBase, PrimaryKeyMixin, TimeStampMixin, table=True):
  21. pass
  22. class AssistantCreate(AssistantBase):
  23. pass
  24. class AssistantUpdate(BaseModel):
  25. model: Optional[str] = Field(default=None)
  26. description: Optional[str] = Field(default=None)
  27. file_ids: Optional[list] = Field(default=None, sa_column=Column(JSON))
  28. instructions: Optional[str] = Field(default=None, max_length=32768, sa_column=Column(TEXT))
  29. metadata_: Optional[dict] = Field(default=None, schema_extra={"validation_alias": "metadata"})
  30. name: Optional[str] = Field(default=None)
  31. tools: Optional[list] = Field(default=None, sa_column=Column(JSON))
  32. extra_body: Optional[dict] = Field(default={}, sa_column=Column(JSON))
  33. response_format: Optional[Union[str, dict]] = Field(default="auto", sa_column=Column(JSON)) # 响应格式
  34. tool_resources: Optional[dict] = Field(default=None, sa_column=Column(JSON)) # 工具资源
  35. temperature: Optional[float] = Field(default=None) # 温度
  36. top_p: Optional[float] = Field(default=None) # top_p
  37. class AssistantRead(AssistantBase, PrimaryKeyMixin, TimeStampMixin):
  38. metadata_: Optional[dict] = PDField(default=None, alias="metadata")