File size: 3,301 Bytes
10e9b7d eccf8e4 3c4371f 10e9b7d e80aab9 3db6293 e80aab9 7b7429c 31243f4 7b7429c 31243f4 7b7429c 3c4371f 7e4a06b 7b7429c 3c4371f 7e4a06b 7d65c66 3c4371f 7e4a06b 31243f4 e80aab9 7b7429c 36ed51a 7b7429c 7d65c66 7b7429c 31243f4 7b7429c 31243f4 7b7429c 31243f4 7b7429c e80aab9 31243f4 e80aab9 7e4a06b e80aab9 31243f4 e80aab9 7b7429c e80aab9 31243f4 e80aab9 7b7429c | 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 | import os
import gradio as gr
import requests
import pandas as pd
# --- Constants ---
DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
# --- YOUR AGENT (MODIFIED) ---
class BasicAgent:
def __init__(self):
print("BasicAgent initialized.")
def __call__(self, question: str) -> str:
q = question.lower()
# --- EASY MATH (BIG POINTS) ---
try:
if any(op in q for op in ["+", "-", "*", "/"]):
clean_q = q.replace("what is", "").replace("?", "").strip()
return str(eval(clean_q))
except:
pass
# --- MULTIPLY WORDS ---
if "multiply" in q:
try:
numbers = [int(s) for s in q.split() if s.isdigit()]
if len(numbers) >= 2:
return str(numbers[0] * numbers[1])
except:
pass
# --- SIMPLE FACTS ---
if "capital of france" in q:
return "Paris"
if "morocco" in q:
return "Rabat"
# --- DEFAULT ---
return "I don't know"
def run_and_submit_all(profile: gr.OAuthProfile | None):
space_id = os.getenv("SPACE_ID")
if profile:
username = f"{profile.username}"
print(f"User logged in: {username}")
else:
return "Please Login to Hugging Face with the button.", None
api_url = DEFAULT_API_URL
questions_url = f"{api_url}/questions"
submit_url = f"{api_url}/submit"
# Create agent
agent = BasicAgent()
agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
# Fetch questions
response = requests.get(questions_url)
questions_data = response.json()
results_log = []
answers_payload = []
for item in questions_data:
task_id = item.get("task_id")
question_text = item.get("question")
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"ERROR: {e}"
})
submission_data = {
"username": username.strip(),
"agent_code": agent_code,
"answers": answers_payload
}
response = requests.post(submit_url, json=submission_data)
result = response.json()
final_status = (
f"Score: {result.get('score')}% | "
f"{result.get('correct_count')}/{result.get('total_attempted')} correct"
)
return final_status, pd.DataFrame(results_log)
# --- UI ---
with gr.Blocks() as demo:
gr.Markdown("# Basic Agent Evaluation Runner")
gr.LoginButton()
run_button = gr.Button("Run Evaluation & Submit All Answers")
status_output = gr.Textbox(label="Result", lines=5)
results_table = gr.DataFrame()
run_button.click(
fn=run_and_submit_all,
outputs=[status_output, results_table]
)
if __name__ == "__main__":
demo.launch() |