Public Access
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
import os
|
|
import requests
|
|
from modules.logger import log_event
|
|
|
|
def interroger_huggingface(prompt: str, modele_cible="mistralai/Mistral-7B-Instruct-v0.3"):
|
|
"""
|
|
Connecteur pour l'API Serverless gratuite de Hugging Face.
|
|
S'intègre nativement dans la boucle de repli de ai_engine.py.
|
|
"""
|
|
api_key = os.getenv("HUGGINGFACE_API_KEY")
|
|
if not api_key:
|
|
raise Exception("Clé API HuggingFace manquante dans le .env")
|
|
|
|
url = f"https://api-inference.huggingface.co/models/{modele_cible}"
|
|
headers = {
|
|
"Authorization": f"Bearer {api_key}",
|
|
"Content-Type": "application/json"
|
|
}
|
|
|
|
# Paramètres optimisés pour les LLMs d'instruction
|
|
payload = {
|
|
"inputs": prompt,
|
|
"parameters": {
|
|
"max_new_tokens": 2048,
|
|
"return_full_text": False,
|
|
"temperature": 0.7
|
|
}
|
|
}
|
|
|
|
try:
|
|
resp = requests.post(url, headers=headers, json=payload, timeout=60)
|
|
if resp.status_code == 200:
|
|
data = resp.json()
|
|
if isinstance(data, list) and len(data) > 0 and "generated_text" in data[0]:
|
|
texte = data[0]["generated_text"].strip()
|
|
# Renvoie la signature exacte attendue par ai_engine (texte, couleur, fournisseur, modele)
|
|
return texte, "#ffb000", "HuggingFace", modele_cible
|
|
|
|
raise Exception(f"Erreur {resp.status_code} : {resp.text}")
|
|
except Exception as e:
|
|
log_event("WARNING", "HUGGINGFACE", f"Échec de la requête : {e}")
|
|
raise e |