Spaces:
Restarting
Restarting
File size: 2,099 Bytes
5f30ad7 10e9b7d 5f30ad7 10e9b7d eccf8e4 3c4371f 10e9b7d 5f30ad7 e80aab9 31243f4 5f30ad7 31243f4 5f30ad7 e80aab9 31243f4 7e4a06b 5f30ad7 e80aab9 5f30ad7 e80aab9 |
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 |
# app.py
import os
from dotenv import load_dotenv
import gradio as gr
import requests
import pandas as pd
from agent import GeminiAgent
# Load environment variables
load_dotenv()
API_URL = os.getenv("API_URL", "https://agents-course-unit4-scoring.hf.space")
SPACE_ID = os.getenv("SPACE_ID")
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
class BasicAgent:
def __init__(self, api_key: str):
if not api_key:
raise ValueError("GOOGLE_API_KEY environment variable not set.")
self.agent = GeminiAgent(api_key)
def __call__(self, question: str) -> str:
return self.agent.run(question)
def run_and_submit(profile):
if not profile:
return "Please log in to Hugging Face.", None
username = profile.username
# Fetch questions
resp = requests.get(f"{API_URL}/questions", timeout=15)
resp.raise_for_status()
questions = resp.json() or []
# Run agent
basic = BasicAgent(GOOGLE_API_KEY)
results, answers = [], []
for q in questions:
ans = basic(q.get("question", ""))
results.append({"Task ID": q.get("task_id"), "Question": q.get("question"), "Answer": ans})
answers.append({"task_id": q.get("task_id"), "submitted_answer": ans})
# Submit answers
submission = {
"username": username,
"agent_code": f"https://huggingface.co./spaces/{SPACE_ID}/tree/main",
"answers": answers
}
resp2 = requests.post(f"{API_URL}/submit", json=submission, timeout=60)
resp2.raise_for_status()
data = resp2.json()
status = f"Score: {data.get('score')}% ({data.get('correct_count')}/{data.get('total_attempted')})"
return status, pd.DataFrame(results)
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("# Basic Agent Evaluation Runner")
gr.LoginButton()
run_btn = gr.Button("Run Evaluation & Submit All Answers")
status_out = gr.Textbox(label="Run Status", lines=5)
table_out = gr.DataFrame(label="Results")
run_btn.click(run_and_submit, outputs=[status_out, table_out])
if __name__ == "__main__":
demo.launch(debug=True)
|