Spaces:
Sleeping
Sleeping
| 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] | |
| def read_root(): | |
| return {"status": "Le serveur Albert est en ligne"} | |
| 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) |