jack 1 tháng trước cách đây
mục cha
commit
e9accd5b09
1 tập tin đã thay đổi với 38 bổ sung24 xóa
  1. 38 24
      app/models/run.py

+ 38 - 24
app/models/run.py

@@ -12,19 +12,38 @@ from pydantic import model_validator
 from app.models.base_model import BaseModel, TimeStampMixin, PrimaryKeyMixin
 from app.models.message import MessageCreate
 from app.schemas.tool.authentication import Authentication
-from typing_extensions import Literal, Required, TypedDict, TypeAlias
 
+# from typing_extensions import Literal, Required, TypedDict, TypeAlias
 
-class ChatCompletionAudioParam(TypedDict, total=False):
-    format: Required[Literal["wav", "mp3", "flac", "opus", "pcm16"]]
+
+class ChatCompletionAudioParam(BaseModel):
+    # format: Required[Literal["wav", "mp3", "flac", "opus", "pcm16"]]
+    format: str = Field(
+        sa_column=Column(Enum("wav", "mp3", "flac", "opus", "pcm16"), nullable=False)
+    )
     """Specifies the output audio format.
 
     Must be one of `wav`, `mp3`, `flac`, `opus`, or `pcm16`.
     """
 
-    voice: Required[
-        Literal["alloy", "ash", "ballad", "coral", "echo", "sage", "shimmer", "verse"]
-    ]
+    # voice: Required[
+    #    Literal["alloy", "ash", "ballad", "coral", "echo", "sage", "shimmer", "verse"]
+    # ]
+    voice: str = Field(
+        sa_column=Column(
+            Enum(
+                "alloy",
+                "ash",
+                "ballad",
+                "coral",
+                "echo",
+                "sage",
+                "shimmer",
+                "verse",
+            ),
+            nullable=False,
+        )
+    )
     """The voice the model uses to respond.
 
     Supported voices are `ash`, `ballad`, `coral`, `sage`, and `verse` (also
@@ -33,18 +52,9 @@ class ChatCompletionAudioParam(TypedDict, total=False):
     """
 
 
-ChatCompletionModality: TypeAlias = Literal["text", "audio"]
-
-
-class StatusEnum(Enum):
-    cancelled = "cancelled"
-    cancelling = "cancelling"
-    completed = "completed"
-    expired = "expired"
-    failed = "failed"
-    in_progress = "in_progress"
-    queued = "queued"
-    requires_action = "requires_action"
+class ChatCompletionModality(Enum):
+    text = "text"
+    audio = "audio"
 
 
 class RunBase(BaseModel):
@@ -104,9 +114,11 @@ class RunBase(BaseModel):
     usage: Optional[dict] = Field(default=None, sa_column=Column(JSON))  # 调用使用情况
     temperature: Optional[float] = Field(default=None)  # 温度
     top_p: Optional[float] = Field(default=None)  # top_p
-    # parallel_tool_calls: bool = Field(default=False)  # parallel_tool_calls
-    # audio: Optional[ChatCompletionAudioParam] = Field(default=None, sa_column=Column(JSON))  # audio
-    # modalities: Optional[List[ChatCompletionModality]] = Field(default=None)
+    parallel_tool_calls: bool = Field(default=False)  # parallel_tool_calls
+    audio: Optional[ChatCompletionAudioParam] = Field(default=None)  # audio
+    modalities: Optional[List[ChatCompletionModality]] = Field(
+        default=None, sa_column=Column(JSON)
+    )
 
 
 class Run(RunBase, PrimaryKeyMixin, TimeStampMixin, table=True):
@@ -143,9 +155,11 @@ class RunCreate(BaseModel):
     tool_choice: Optional[str] = Field(default=None)  # 工具选择
     temperature: Optional[float] = Field(default=None)  # 温度
     top_p: Optional[float] = Field(default=None)  # top_p
-    # parallel_tool_calls: bool = Field(default=False)  # parallel_tool_calls
-    # audio: Optional[ChatCompletionAudioParam] = Field(default=None, sa_column=Column(JSON))  # audio
-    # modalities: Optional[List[ChatCompletionModality]] = Field(default=None)
+    parallel_tool_calls: bool = Field(default=False)  # parallel_tool_calls
+    audio: Optional[ChatCompletionAudioParam] = Field(default=None)  # audio
+    modalities: Optional[List[ChatCompletionModality]] = Field(
+        default=None, sa_column=Column(JSON)
+    )
 
     @model_validator(mode="before")
     def model_validator(cls, data: Any):