Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -4,6 +4,7 @@ import torch
|
|
4 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
5 |
import time
|
6 |
import uuid
|
|
|
7 |
|
8 |
# --- Configuration ---
|
9 |
MODEL_ID = "deepseek-ai/deepseek-coder-1.3b-instruct"
|
@@ -28,9 +29,10 @@ class ChatMessage(BaseModel):
|
|
28 |
content: str
|
29 |
|
30 |
class ChatCompletionRequest(BaseModel):
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
34 |
|
35 |
class ChatCompletionResponseChoice(BaseModel):
|
36 |
index: int = 0
|
@@ -42,15 +44,29 @@ class ChatCompletionResponse(BaseModel):
|
|
42 |
object: str = "chat.completion"
|
43 |
created: int
|
44 |
model: str
|
45 |
-
choices:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
-
|
48 |
-
# LA SEULE LIGNE QUI CHANGE EST CELLE-CI : on a enlevé le "/v1"
|
49 |
-
@app.post("/chat/completions")
|
50 |
async def create_chat_completion(request: ChatCompletionRequest):
|
51 |
-
"""
|
52 |
-
Endpoint compatible avec l'API OpenAI Chat Completions.
|
53 |
-
"""
|
54 |
user_prompt = ""
|
55 |
if request.messages and request.messages[-1].role == "user":
|
56 |
user_prompt = request.messages[-1].content
|
@@ -70,7 +86,7 @@ async def create_chat_completion(request: ChatCompletionRequest):
|
|
70 |
completion_response = ChatCompletionResponse(
|
71 |
id=f"chatcmpl-{uuid.uuid4()}",
|
72 |
created=int(time.time()),
|
73 |
-
model=
|
74 |
choices=[choice]
|
75 |
)
|
76 |
|
|
|
4 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
5 |
import time
|
6 |
import uuid
|
7 |
+
from typing import Optional, List
|
8 |
|
9 |
# --- Configuration ---
|
10 |
MODEL_ID = "deepseek-ai/deepseek-coder-1.3b-instruct"
|
|
|
29 |
content: str
|
30 |
|
31 |
class ChatCompletionRequest(BaseModel):
|
32 |
+
# CHANGEMENT 1: Rendre le champ 'model' optionnel pour éviter l'erreur 422
|
33 |
+
model: Optional[str] = None
|
34 |
+
messages: List[ChatMessage]
|
35 |
+
max_tokens: Optional[int] = 250
|
36 |
|
37 |
class ChatCompletionResponseChoice(BaseModel):
|
38 |
index: int = 0
|
|
|
44 |
object: str = "chat.completion"
|
45 |
created: int
|
46 |
model: str
|
47 |
+
choices: List[ChatCompletionResponseChoice]
|
48 |
+
|
49 |
+
class ModelData(BaseModel):
|
50 |
+
id: str
|
51 |
+
object: str = "model"
|
52 |
+
created: int = int(time.time())
|
53 |
+
owned_by: str = "user"
|
54 |
+
|
55 |
+
class ModelList(BaseModel):
|
56 |
+
object: str = "list"
|
57 |
+
data: List[ModelData]
|
58 |
+
|
59 |
+
# --- Définition des API ---
|
60 |
+
|
61 |
+
# CHANGEMENT 2: Ajouter un endpoint /models pour satisfaire l'extension
|
62 |
+
@app.get("/models", response_model=ModelList)
|
63 |
+
async def list_models():
|
64 |
+
"""Endpoint pour lister les modèles disponibles."""
|
65 |
+
return ModelList(data=[ModelData(id=MODEL_ID)])
|
66 |
|
67 |
+
@app.post("/chat/completions", response_model=ChatCompletionResponse)
|
|
|
|
|
68 |
async def create_chat_completion(request: ChatCompletionRequest):
|
69 |
+
"""Endpoint principal pour la génération de texte."""
|
|
|
|
|
70 |
user_prompt = ""
|
71 |
if request.messages and request.messages[-1].role == "user":
|
72 |
user_prompt = request.messages[-1].content
|
|
|
86 |
completion_response = ChatCompletionResponse(
|
87 |
id=f"chatcmpl-{uuid.uuid4()}",
|
88 |
created=int(time.time()),
|
89 |
+
model=MODEL_ID,
|
90 |
choices=[choice]
|
91 |
)
|
92 |
|