Spaces:
Runtime error
Runtime error
File size: 4,618 Bytes
10e9b7d eccf8e4 3c4371f 10e9b7d 4b78dea 3db6293 e80aab9 4b78dea 31243f4 4b78dea 31243f4 4b78dea 4021bf3 4b78dea 31243f4 4b78dea 31243f4 4b78dea 3c4371f 4b78dea 3c4371f 4b78dea 7e4a06b 4b78dea 31243f4 e80aab9 4b78dea 31243f4 4b78dea 36ed51a 3c4371f 4b78dea eccf8e4 4b78dea 7d65c66 4b78dea e80aab9 4b78dea 7d65c66 4b78dea 31243f4 4b78dea 31243f4 4b78dea 31243f4 4b78dea 31243f4 4b78dea 31243f4 4b78dea 31243f4 4b78dea e80aab9 4b78dea e80aab9 4b78dea e80aab9 4b78dea e80aab9 4b78dea 7d65c66 4b78dea e80aab9 4b78dea e80aab9 4b78dea 0ee0419 4b78dea e80aab9 7e4a06b 4b78dea e80aab9 4b78dea e80aab9 4b78dea 31243f4 4b78dea e80aab9 3c4371f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | import os
import gradio as gr
import requests
import pandas as pd
# =====================================================
# Constants (DO NOT CHANGE)
# =====================================================
DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
# =====================================================
# Agent Definition (THIS IS THE ONLY PART YOU EDIT)
# =====================================================
from agent import agent as gaia_agent
class BasicAgent:
def __init__(self):
"""
Initialize your GAIA agent here.
"""
pass
def __call__(self, question: str) -> str:
"""
Required interface for HF Unit 4 scoring.
"""
return gaia_agent(question, files=None)
# =====================================================
# Evaluation & Submission Logic (DO NOT CHANGE)
# =====================================================
def run_and_submit_all(profile: gr.OAuthProfile | None):
"""
Fetches all GAIA questions, runs the agent, submits answers,
and returns the official score.
"""
space_id = os.getenv("SPACE_ID")
if not profile:
return "β Please log in with Hugging Face.", None
username = profile.username
api_url = DEFAULT_API_URL
questions_url = f"{api_url}/questions"
submit_url = f"{api_url}/submit"
# 1. Load agent
try:
agent = BasicAgent()
except Exception as e:
return f"β Error initializing agent: {e}", None
agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
# 2. Fetch questions
try:
resp = requests.get(questions_url, timeout=15)
resp.raise_for_status()
questions = resp.json()
except Exception as e:
return f"β Error fetching questions: {e}", None
if not questions:
return "β No questions returned.", None
# 3. Run agent
results_log = []
answers_payload = []
for item in questions:
task_id = item.get("task_id")
question_text = item.get("question")
if not task_id or question_text is None:
continue
try:
answer = agent(question_text)
answers_payload.append({
"task_id": task_id,
"submitted_answer": answer
})
results_log.append({
"Task ID": task_id,
"Question": question_text,
"Submitted Answer": answer
})
except Exception as e:
results_log.append({
"Task ID": task_id,
"Question": question_text,
"Submitted Answer": f"AGENT ERROR: {e}"
})
if not answers_payload:
return "β Agent produced no answers.", pd.DataFrame(results_log)
# 4. Submit
submission = {
"username": username.strip(),
"agent_code": agent_code,
"answers": answers_payload
}
try:
resp = requests.post(submit_url, json=submission, timeout=180)
resp.raise_for_status()
result = resp.json()
status = (
f"β
Submission Successful\n"
f"User: {result.get('username')}\n"
f"Score: {result.get('score')}%\n"
f"Correct: {result.get('correct_count')} / {result.get('total_attempted')}\n"
f"Message: {result.get('message')}"
)
return status, pd.DataFrame(results_log)
except requests.exceptions.HTTPError as e:
detail = e.response.text
try:
detail = e.response.json().get("detail", detail)
except Exception:
pass
return f"β Submission failed: {detail}", pd.DataFrame(results_log)
except Exception as e:
return f"β Unexpected error: {e}", pd.DataFrame(results_log)
# =====================================================
# Gradio Interface (DO NOT CHANGE)
# =====================================================
with gr.Blocks() as demo:
gr.Markdown("# π§ HF Agents Course β Unit 4 Evaluation")
gr.Markdown(
"1. Log in with Hugging Face\n"
"2. Click **Run Evaluation & Submit All Answers**\n"
"3. Wait for your GAIA score"
)
gr.LoginButton()
run_btn = gr.Button("Run Evaluation & Submit All Answers")
status = gr.Textbox(label="Submission Result", lines=6, interactive=False)
table = gr.DataFrame(label="Agent Output", wrap=True)
run_btn.click(
fn=run_and_submit_all,
outputs=[status, table]
)
if __name__ == "__main__":
demo.launch(debug=True, share=False) |