rkihacker commited on
Commit
3830a6b
·
verified ·
1 Parent(s): 13ff1c0

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +67 -17
main.py CHANGED
@@ -20,38 +20,88 @@ app = FastAPI(title="Replicate to OpenAI Compatibility Layer", version="9.2.2 (S
20
 
21
  # --- Pydantic Models ---
22
  class ModelCard(BaseModel):
23
- id: str; object: str = "model"; created: int = Field(default_factory=lambda: int(time.time())); owned_by: str = "replicate"
 
 
 
 
24
  class ModelList(BaseModel):
25
- object: str = "list"; data: List[ModelCard] = []
 
 
26
  class ChatMessage(BaseModel):
27
- role: Literal["system", "user", "assistant", "tool"]; content: Union[str, List[Dict[str, Any]]]; name: Optional[str] = None; tool_calls: Optional[List[Any]] = None
 
 
 
 
28
  class FunctionDefinition(BaseModel):
29
- name: str; description: Optional[str] = None; parameters: Optional[Dict[str, Any]] = None
 
 
 
30
  class ToolDefinition(BaseModel):
31
- type: Literal["function"]; function: FunctionDefinition
 
 
32
  class FunctionCall(BaseModel):
33
- name: str; arguments: str
 
 
34
  class ToolCall(BaseModel):
35
- id: str; type: Literal["function"] = "function"; function: FunctionCall
 
 
 
36
  class ChatCompletionRequest(BaseModel):
37
- model: str; messages: List[ChatMessage]; temperature: Optional[float] = 0.7; top_p: Optional[float] = 1.0
38
- max_tokens: Optional[int] = None; stream: Optional[bool] = False; stop: Optional[Union[str, List[str]]] = None
39
- tools: Optional[List[ToolDefinition]] = None; tool_choice: Optional[Union[str, Dict[str, Any]]] = None
40
- functions: Optional[List[FunctionDefinition]] = None; function_call: Optional[Union[str, Dict[str, str]]] = None
 
 
 
 
 
 
 
41
 
42
  class Choice(BaseModel):
43
- index: int; message: ChatMessage; finish_reason: Optional[str] = None
 
 
 
44
  class Usage(BaseModel):
45
- prompt_tokens: int; completion_tokens: int; total_tokens: int; inference_time: Optional[float] = None
 
 
 
 
46
  class ChatCompletion(BaseModel):
47
- id: str; object: str = "chat.completion"; created: int; model: str; choices: List[Choice]; usage: Usage
 
 
 
 
 
48
 
49
  class DeltaMessage(BaseModel):
50
- role: Optional[str] = None; content: Optional[str] = None; tool_calls: Optional[List[ToolCall]] = None
 
 
 
51
  class ChoiceDelta(BaseModel):
52
- index: int; delta: DeltaMessage; finish_reason: Optional[str] = None
 
 
 
53
  class ChatCompletionChunk(BaseModel):
54
- id: str; object: str = "chat.completion.chunk"; created: int; model: str; choices: List[ChoiceDelta]; usage: Optional[Usage] = None
 
 
 
 
 
55
 
56
  # --- Supported Models ---
57
  SUPPORTED_MODELS = {
 
20
 
21
  # --- Pydantic Models ---
22
  class ModelCard(BaseModel):
23
+ id: str
24
+ object: str = "model"
25
+ created: int = Field(default_factory=lambda: int(time.time()))
26
+ owned_by: str = "replicate"
27
+
28
  class ModelList(BaseModel):
29
+ object: str = "list"
30
+ data: List[ModelCard] = []
31
+
32
  class ChatMessage(BaseModel):
33
+ role: Literal["system", "user", "assistant", "tool"]
34
+ content: Union[str, List[Dict[str, Any]]]
35
+ name: Optional[str] = None
36
+ tool_calls: Optional[List[Any]] = None
37
+
38
  class FunctionDefinition(BaseModel):
39
+ name: str
40
+ description: Optional[str] = None
41
+ parameters: Optional[Dict[str, Any]] = None
42
+
43
  class ToolDefinition(BaseModel):
44
+ type: Literal["function"]
45
+ function: FunctionDefinition
46
+
47
  class FunctionCall(BaseModel):
48
+ name: str
49
+ arguments: str
50
+
51
  class ToolCall(BaseModel):
52
+ id: str
53
+ type: Literal["function"] = "function"
54
+ function: FunctionCall
55
+
56
  class ChatCompletionRequest(BaseModel):
57
+ model: str
58
+ messages: List[ChatMessage]
59
+ temperature: Optional[float] = 0.7
60
+ top_p: Optional[float] = 1.0
61
+ max_tokens: Optional[int] = None
62
+ stream: Optional[bool] = False
63
+ stop: Optional[Union[str, List[str]]] = None
64
+ tools: Optional[List[ToolDefinition]] = None
65
+ tool_choice: Optional[Union[str, Dict[str, Any]]] = None
66
+ functions: Optional[List[FunctionDefinition]] = None
67
+ function_call: Optional[Union[str, Dict[str, str]]] = None
68
 
69
  class Choice(BaseModel):
70
+ index: int
71
+ message: ChatMessage
72
+ finish_reason: Optional[str] = None
73
+
74
  class Usage(BaseModel):
75
+ prompt_tokens: int
76
+ completion_tokens: int
77
+ total_tokens: int
78
+ inference_time: Optional[float] = None
79
+
80
  class ChatCompletion(BaseModel):
81
+ id: str
82
+ object: str = "chat.completion"
83
+ created: int
84
+ model: str
85
+ choices: List[Choice]
86
+ usage: Usage
87
 
88
  class DeltaMessage(BaseModel):
89
+ role: Optional[str] = None
90
+ content: Optional[str] = None
91
+ tool_calls: Optional[List[ToolCall]] = None
92
+
93
  class ChoiceDelta(BaseModel):
94
+ index: int
95
+ delta: DeltaMessage
96
+ finish_reason: Optional[str] = None
97
+
98
  class ChatCompletionChunk(BaseModel):
99
+ id: str
100
+ object: str = "chat.completion.chunk"
101
+ created: int
102
+ model: str
103
+ choices: List[ChoiceDelta]
104
+ usage: Optional[Usage] = None
105
 
106
  # --- Supported Models ---
107
  SUPPORTED_MODELS = {