leaderboard / app.py
ahmedab98's picture
Create app.py
b75a70f verified
raw
history blame
2.84 kB
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()