du13 / app.py
Mika110587's picture
Update app.py
77063b5 verified
import os
import gradio as gr
from openai import OpenAI
# 1) Ton token Hugging Face (HF_TOKEN doit être défini dans Settings → Secrets)
HF_TOKEN = os.environ.get("HF_TOKEN")
if not HF_TOKEN:
raise RuntimeError(
"La variable d'environnement HF_TOKEN n'est pas définie.\n"
"Va dans Settings → Variables and secrets → Secrets et ajoute HF_TOKEN "
"avec ton token Hugging Face (celui qui a la permission « Inference Providers »)."
)
# 2) Client OpenAI configuré pour passer par le router Hugging Face
client = OpenAI(
base_url="https://router.huggingface.co/v1",
api_key=HF_TOKEN,
)
# 3) Modèle supporté par HF Inference (gratuit dans la limite de la free tier)
MODEL_ID = "katanemo/Arch-Router-1.5B:hf-inference"
SYSTEM_PROMPT = """
Tu es ArtGPT, un assistant spécialisé à 100% dans l'art :
- illustration, dessin, peinture, graphisme,
- composition, couleur, lumière,
- histoire de l'art, mouvements artistiques,
- direction artistique, portfolio,
- conseils logiciels et création visuelle.
Règles :
- Tu réponds uniquement en français.
- Si la question n’est pas liée à l’art ou à la création visuelle,
tu rediriges gentiment vers ces thèmes.
- Tu donnes des réponses claires, structurées, pédagogiques.
- Tu proposes volontiers des exercices pratiques.
"""
def answer(question: str) -> str:
question = (question or "").strip()
if not question:
return "Écris une question sur l’art pour commencer 🙂"
try:
completion = client.chat.completions.create(
model=MODEL_ID,
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": question},
],
max_tokens=512,
temperature=0.7,
top_p=0.95,
)
# Avec la nouvelle lib openai, le contenu est dans .message.content
return completion.choices[0].message.content
except Exception as e:
# On affiche une erreur lisible au lieu du gros JSON
return f"Erreur lors de l'appel au modèle :\n\n{e}"
demo = gr.Interface(
fn=answer,
inputs=gr.Textbox(
label="Pose ta question sur l'art",
placeholder="Ex : Donne-moi un exercice pour progresser en composition d’affiche.",
),
outputs=gr.Markdown(label="Réponse d’ArtGPT"),
title="🎨 ArtGPT — Assistant IA pour artistes",
description=(
"Pose une question sur l'illustration, le dessin, la couleur, la composition, "
"l'histoire de l'art, le graphisme ou la direction artistique. "
"ArtGPT te répond de manière claire et pédagogique."
),
)
if __name__ == "__main__":
demo.launch()