mon-proxy-albert / main.py
stephane000's picture
Update main.py
4969fb6 verified
Raw History Blame Contribute Delete
1.9 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
# 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)