| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | from typing import Optional, Unionfrom pydantic import Field as PDFieldfrom sqlalchemy import Columnfrom sqlmodel import Field, JSON, TEXTfrom app.models.base_model import BaseModel, TimeStampMixin, PrimaryKeyMixinclass AssistantBase(BaseModel):    model: str = Field(nullable=False)    description: Optional[str] = Field(default=None)    file_ids: Optional[list] = Field(default=None, sa_column=Column(JSON))    instructions: Optional[str] = Field(        default=None, max_length=32768, sa_column=Column(TEXT)    )    metadata_: Optional[dict] = Field(        default=None,        sa_column=Column("metadata", JSON),        schema_extra={"validation_alias": "metadata"},    )    name: Optional[str] = Field(default=None)    tools: Optional[list] = Field(default=None, sa_column=Column(JSON))    extra_body: Optional[dict] = Field(default={}, sa_column=Column(JSON))    response_format: Optional[Union[str, dict]] = Field(        default="auto", sa_column=Column(JSON)    )  # 响应格式    tool_resources: Optional[dict] = Field(        default=None, sa_column=Column(JSON)    )  # 工具资源    temperature: Optional[float] = Field(default=None)  # 温度    top_p: Optional[float] = Field(default=None)  # top_p    object: str = Field(nullable=False, default="assistant")class Assistant(AssistantBase, PrimaryKeyMixin, TimeStampMixin, table=True):    passclass AssistantCreate(AssistantBase):    passclass AssistantUpdate(BaseModel):    model: Optional[str] = Field(default=None)    description: Optional[str] = Field(default=None)    file_ids: Optional[list] = Field(default=None, sa_column=Column(JSON))    instructions: Optional[str] = Field(        default=None, max_length=32768, sa_column=Column(TEXT)    )    metadata_: Optional[dict] = Field(        default=None, schema_extra={"validation_alias": "metadata"}    )    name: Optional[str] = Field(default=None)    tools: Optional[list] = Field(default=None, sa_column=Column(JSON))    extra_body: Optional[dict] = Field(default={}, sa_column=Column(JSON))    response_format: Optional[Union[str, dict]] = Field(        default="auto", sa_column=Column(JSON)    )  # 响应格式    tool_resources: Optional[dict] = Field(        default=None, sa_column=Column(JSON)    )  # 工具资源    temperature: Optional[float] = Field(default=None)  # 温度    top_p: Optional[float] = Field(default=None)  # top_pclass AssistantRead(AssistantBase, PrimaryKeyMixin, TimeStampMixin):    metadata_: Optional[dict] = PDField(default=None, alias="metadata")
 |