Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import os | |
import gradio as gr | |
import json | |
import requests | |
from openai import OpenAI | |
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) | |
MODEL = "gpt-4o" | |
# Charger questions | |
def load_questions(): | |
with open("questions.json", "r", encoding="utf-8") as f: | |
return json.load(f) | |
# Générer réponses | |
def generate_answers(): | |
questions = load_questions() | |
answers = [] | |
for q in questions: | |
prompt = f"Réponds précisément à cette question : {q['question']}" | |
try: | |
response = client.chat.completions.create( | |
model=MODEL, | |
messages=[{"role": "user", "content": prompt}] | |
) | |
answer = response.choices[0].message.content.strip() | |
except Exception as e: | |
answer = f"Erreur: {str(e)}" | |
answers.append({"task_id": q["task_id"], "question": q["question"], "answer": answer}) | |
return answers | |
# Affichage lisible | |
def format_display(answers): | |
return "\n\n".join([f"🟨 Q: {a['question']}\n🟩 A: {a['answer']}" for a in answers]) | |
# Fonction de soumission à GAIA | |
def submit_to_gaia(username, agent_url, answers): | |
payload = { | |
"username": username, | |
"agent_link": agent_url, | |
"answers": [{"task_id": a["task_id"], "answer": a["answer"]} for a in answers] | |
} | |
response = requests.post("https://gaia-benchmark.vercel.app/submit", json=payload) | |
if response.status_code == 200: | |
return f"✅ Soumission réussie ! Score : {response.json().get('score', '?')}" | |
else: | |
return f"❌ Erreur de soumission : {response.text}" | |
# Variables de session | |
answers_state = [] | |
# UI avec Gradio Blocks | |
with gr.Blocks() as demo: | |
gr.Markdown("# 🧠 GAIA Final Agent\nRéponds à 20 questions et soumets-les automatiquement à GAIA") | |
with gr.Row(): | |
username_input = gr.Text(label="👤 Nom d'utilisateur Hugging Face") | |
agent_url_input = gr.Text(label="🔗 URL du Space Hugging Face") | |
output_display = gr.Textbox(label="📄 Résultats (réponses générées)", lines=20) | |
with gr.Row(): | |
gen_btn = gr.Button("🧠 Générer les réponses") | |
submit_btn = gr.Button("📤 Soumettre à GAIA") | |
result_display = gr.Textbox(label="✅ Statut de soumission", lines=2) | |
def handle_generate(): | |
global answers_state | |
answers_state = generate_answers() | |
return format_display(answers_state) | |
def handle_submit(username, agent_url): | |
if not answers_state: | |
return "❌ Veuillez d'abord générer les réponses." | |
return submit_to_gaia(username, agent_url, answers_state) | |
gen_btn.click(fn=handle_generate, outputs=output_display) | |
submit_btn.click(fn=handle_submit, inputs=[username_input, agent_url_input], outputs=result_display) | |
if __name__ == "__main__": | |
demo.launch() | |