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)