EnzGamers commited on
Commit
2b674d2
·
verified ·
1 Parent(s): ee60681

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -7
app.py CHANGED
@@ -1,10 +1,10 @@
1
  from fastapi import FastAPI, Request
2
- from pydantic import BaseModel
3
  import torch
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,11 +29,16 @@ class ChatMessage(BaseModel):
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
39
  message: ChatMessage
@@ -58,7 +63,6 @@ class ModelList(BaseModel):
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."""
@@ -68,11 +72,14 @@ async def list_models():
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
73
 
74
  if not user_prompt:
75
- return {"error": "No user prompt found"}
76
 
77
  messages_for_model = [{'role': 'user', 'content': user_prompt}]
78
  inputs = tokenizer.apply_chat_template(messages_for_model, add_generation_prompt=True, return_tensors="pt").to(DEVICE)
 
1
  from fastapi import FastAPI, Request
2
+ from pydantic import BaseModel, Extra
3
  import torch
4
  from transformers import AutoModelForCausalLM, AutoTokenizer
5
  import time
6
  import uuid
7
+ from typing import Optional, List, Any
8
 
9
  # --- Configuration ---
10
  MODEL_ID = "deepseek-ai/deepseek-coder-1.3b-instruct"
 
29
  content: str
30
 
31
  class ChatCompletionRequest(BaseModel):
32
+ # On rend presque tout optionnel pour maximiser la compatibilité
33
  model: Optional[str] = None
34
+ messages: Optional[List[ChatMessage]] = None
35
+ prompt: Optional[str] = None # Certaines extensions envoient "prompt" au lieu de "messages"
36
  max_tokens: Optional[int] = 250
37
 
38
+ # LA MODIFICATION LA PLUS IMPORTANTE : Ignorer les champs inconnus
39
+ class Config:
40
+ extra = Extra.ignore
41
+
42
  class ChatCompletionResponseChoice(BaseModel):
43
  index: int = 0
44
  message: ChatMessage
 
63
 
64
  # --- Définition des API ---
65
 
 
66
  @app.get("/models", response_model=ModelList)
67
  async def list_models():
68
  """Endpoint pour lister les modèles disponibles."""
 
72
  async def create_chat_completion(request: ChatCompletionRequest):
73
  """Endpoint principal pour la génération de texte."""
74
  user_prompt = ""
75
+ # On cherche le prompt de l'utilisateur de plusieurs manières possibles
76
+ if request.prompt:
77
+ user_prompt = request.prompt
78
+ elif request.messages and request.messages[-1].role == "user":
79
  user_prompt = request.messages[-1].content
80
 
81
  if not user_prompt:
82
+ return {"error": "Could not find a valid prompt in the request."}
83
 
84
  messages_for_model = [{'role': 'user', 'content': user_prompt}]
85
  inputs = tokenizer.apply_chat_template(messages_for_model, add_generation_prompt=True, return_tensors="pt").to(DEVICE)