stephane000 commited on
Commit
4969fb6
·
verified ·
1 Parent(s): 1eca6b0

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +35 -32
main.py CHANGED
@@ -1,55 +1,58 @@
1
  import os
2
  import uvicorn
3
- from fastapi import FastAPI, Request
4
  from fastapi.middleware.cors import CORSMiddleware
5
  from openai import OpenAI
 
 
6
 
7
- # Secrets HF
8
- ALBERT_KEY_PRINCIPALE = os.getenv("ALBERT_API_KEY")
9
- ALBERT_KEY_RISQUE = os.getenv("ALBERT_API_RISQUE")
10
  ALBERT_BASE_URL = "https://albert.api.etalab.gouv.fr/v1"
11
- MODEL_ID = "mistralai/Mistral-Small-3.2-24B-Instruct-2506"
12
 
13
- # Clients
14
- client_antibio = OpenAI(api_key=ALBERT_KEY_PRINCIPALE, base_url=ALBERT_BASE_URL)
15
- client_sismo = OpenAI(api_key=ALBERT_KEY_RISQUE, base_url=ALBERT_BASE_URL)
 
 
16
 
17
  app = FastAPI()
18
 
 
19
  app.add_middleware(
20
  CORSMiddleware,
21
- allow_origins=["*"],
 
22
  allow_methods=["*"],
23
  allow_headers=["*"],
24
  )
25
 
26
- @app.post("/api/chat")
27
- async def chat_antibio(request: Request):
28
- data = await request.json()
29
- try:
30
- response = client_antibio.chat.completions.create(
31
- model=MODEL_ID,
32
- messages=data.get("messages", []),
33
- temperature=0.7
34
- )
35
- # On renvoie une clé simple "reply"
36
- return {"reply": response.choices[0].message.content}
37
- except Exception as e:
38
- return {"reply": "Erreur technique Albert."}
39
 
40
- @app.post("/verify")
41
- async def verify_seisme(request: Request):
42
- data = await request.json()
43
  try:
44
- response = client_sismo.chat.completions.create(
45
- model=MODEL_ID,
46
- messages=[{"role": "user", "content": data.get("userLatex", "")}],
47
- temperature=0.1
 
 
48
  )
49
- # On renvoie la même clé "reply" pour la cohérence
50
- return {"reply": response.choices[0].message.content}
51
  except Exception as e:
52
- return {"reply": "Albert est indisponible."}
 
 
 
53
 
54
  if __name__ == "__main__":
 
55
  uvicorn.run(app, host="0.0.0.0", port=7860)
 
1
  import os
2
  import uvicorn
3
+ from fastapi import FastAPI
4
  from fastapi.middleware.cors import CORSMiddleware
5
  from openai import OpenAI
6
+ from pydantic import BaseModel
7
+ from typing import List
8
 
9
+ # 1. Configuration des accès
10
+ # Assurez-vous d'avoir défini ALBERT_API_KEY dans vos secrets Hugging Face
11
+ ALBERT_API_KEY = os.getenv("ALBERT_API_KEY")
12
  ALBERT_BASE_URL = "https://albert.api.etalab.gouv.fr/v1"
 
13
 
14
+ # Initialisation du client compatible Albert
15
+ client = OpenAI(
16
+ api_key=ALBERT_API_KEY,
17
+ base_url=ALBERT_BASE_URL
18
+ )
19
 
20
  app = FastAPI()
21
 
22
+ # 2. Configuration CORS pour autoriser votre frontend React
23
  app.add_middleware(
24
  CORSMiddleware,
25
+ allow_origins=["*"], # En production, remplacez par l'URL de votre front
26
+ allow_credentials=True,
27
  allow_methods=["*"],
28
  allow_headers=["*"],
29
  )
30
 
31
+ # Modèle de données pour valider les requêtes entrantes
32
+ class Message(BaseModel):
33
+ role: str
34
+ content: str
35
+
36
+ class ChatRequest(BaseModel):
37
+ messages: List[Message]
 
 
 
 
 
 
38
 
39
+ @app.post("/api/chat")
40
+ async def chat_albert(request: ChatRequest):
 
41
  try:
42
+ # On utilise l'alias simplifié qui fonctionne sur tous les comptes Albert
43
+ response = client.chat.completions.create(
44
+ model="mistralai/Mistral-Small-3.2-24B-Instruct-2506",
45
+ messages=[{"role": m.role, "content": m.content} for m in request.messages],
46
+ temperature=0.7,
47
+ max_tokens=1000
48
  )
49
+ return {"content": response.choices[0].message.content}
 
50
  except Exception as e:
51
+ # On imprime l'erreur exacte dans les logs de Hugging Face pour pouvoir la lire
52
+ response = client.chat.completions.create(...)
53
+ print(f"RÉPONSE IA : {response.choices[0].message.content}") # Ajoute ça !
54
+ return {"content": response.choices[0].message.content}
55
 
56
  if __name__ == "__main__":
57
+ # Hugging Face utilise souvent le port 7860
58
  uvicorn.run(app, host="0.0.0.0", port=7860)