mon-proxy-albert / main.py
stephane000's picture
Update main.py
4969fb6 verified
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
# Assurez-vous d'avoir défini ALBERT_API_KEY dans vos secrets Hugging Face
ALBERT_API_KEY = os.getenv("ALBERT_API_KEY")
ALBERT_BASE_URL = "https://albert.api.etalab.gouv.fr/v1"
# Initialisation du client compatible Albert
client = OpenAI(
api_key=ALBERT_API_KEY,
base_url=ALBERT_BASE_URL
)
app = FastAPI()
# 2. Configuration CORS pour autoriser votre frontend React
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # En production, remplacez par l'URL de votre front
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Modèle de données pour valider les requêtes entrantes
class Message(BaseModel):
role: str
content: str
class ChatRequest(BaseModel):
messages: List[Message]
@app.post("/api/chat")
async def chat_albert(request: ChatRequest):
try:
# On utilise l'alias simplifié qui fonctionne sur tous les comptes Albert
response = client.chat.completions.create(
model="mistralai/Mistral-Small-3.2-24B-Instruct-2506",
messages=[{"role": m.role, "content": m.content} for m in request.messages],
temperature=0.7,
max_tokens=1000
)
return {"content": response.choices[0].message.content}
except Exception as e:
# On imprime l'erreur exacte dans les logs de Hugging Face pour pouvoir la lire
response = client.chat.completions.create(...)
print(f"RÉPONSE IA : {response.choices[0].message.content}") # Ajoute ça !
return {"content": response.choices[0].message.content}
if __name__ == "__main__":
# Hugging Face utilise souvent le port 7860
uvicorn.run(app, host="0.0.0.0", port=7860)