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()