risques / main.py
stephane000's picture
Update main.py
a01b654 verified
Raw History Blame Contribute Delete
2.11 kB
import os
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from openai import OpenAI
from pydantic import BaseModel
from typing import List
# 1. Configuration des accès
# On récupère votre secret nommé HF_RISQUES
API_KEY = os.getenv("HF_RISQUES")
ALBERT_BASE_URL = "https://albert.api.etalab.gouv.fr/v1"
# Initialisation du client (avec vérification pour éviter l'erreur de clé vide)
if not API_KEY:
print("ERREUR : Le secret HF_RISQUES n'est pas défini dans les paramètres du Space.")
client = None
else:
client = OpenAI(
api_key=API_KEY,
base_url=ALBERT_BASE_URL
)
app = FastAPI()
# 2. Configuration CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Modèle de données
class Message(BaseModel):
role: str
content: str
class ChatRequest(BaseModel):
messages: List[Message]
@app.get("/")
def read_root():
return {"status": "Le serveur Albert est en ligne"}
@app.post("/api/chat")
async def chat_albert(request: ChatRequest):
if not client:
return {"content": "Erreur : La clé API HF_RISQUES est manquante dans la configuration."}
try:
# Appel à l'API Albert
response = client.chat.completions.create(
model="mistralai/Mistral-Small-3.2-24B-Instruct-2506", # Modèle standard Albert
messages=[{"role": m.role, "content": m.content} for m in request.messages],
temperature=0.7,
max_tokens=1000
)
reponse_texte = response.choices[0].message.content
print(f"RÉPONSE ALBERT : {reponse_texte}") # Pour voir dans les logs HF
return {"content": reponse_texte}
except Exception as e:
print(f"ERREUR API : {str(e)}")
return {"content": f"Désolé, une erreur est survenue lors de la communication avec l'IA : {str(e)}"}
if __name__ == "__main__":
# Port 7860 obligatoire pour Hugging Face Spaces
uvicorn.run(app, host="0.0.0.0", port=7860)