File size: 1,489 Bytes
317cceb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from typing import Any, Literal

from pydantic import BaseModel


class ChatMessage(BaseModel):
    content: str | list[dict[str, Any]]
    name: str | None = None
    role: Literal["system", "user", "assistant", "tool", "function"]


class ChatCompletionRequest(BaseModel):
    model: str
    messages: list[ChatMessage]
    max_completion_tokens: int | None = None
    modalities: list[str] | None = None
    response_format: dict[str, Any] | None = None
    seed: int | None = None
    stop: str | list[str] | None = None
    stream: bool | None = False
    stream_options: dict[str, Any] | None = None
    temperature: float | None = 1
    tool_choice: Literal["none", "auto", "required"] | dict[str, Any] | None = None
    tools: list[dict[str, Any]] | None = None
    top_k: int | None = 20
    top_p: float | None = 1
    web_search_options: dict[str, Any] | None = None


class ChatCompletionChunkChoice(BaseModel):
    delta: dict[str, Any]
    finish_reason: str | None = None
    index: int = 0
    logprobs: dict[str, Any] | None = None


class ChatCompletionChunk(BaseModel):
    choices: list[ChatCompletionChunkChoice]
    created: int
    id: str
    model: str
    object: str = "chat.completion.chunk"
    service_tier: str | None = None
    system_fingerprint: str = ""
    usage: dict[str, Any] | None = None


class Model(BaseModel):
    created: int
    id: str
    object: str = "model"
    owned_by: str = "trae"