Spaces:
Sleeping
Sleeping
File size: 2,105 Bytes
ffabbb2 bde4d33 4969fb6 ffabbb2 57a5bec 4969fb6 ffabbb2 4969fb6 8eb21a5 7bae4bb 57a5bec 8eb21a5 ffabbb2 8eb21a5 ffabbb2 8eb21a5 4969fb6 ffabbb2 8eb21a5 4969fb6 795c92a 8eb21a5 4969fb6 8eb21a5 795c92a 8eb21a5 4969fb6 a01b654 4969fb6 343ddc8 8eb21a5 ffabbb2 8eb21a5 818b3fd 8eb21a5 bde4d33 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 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) |