Annessha18 commited on
Commit
7e2b21d
·
verified ·
1 Parent(s): b960f93

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -37
app.py CHANGED
@@ -1,9 +1,15 @@
 
1
  import gradio as gr
2
  import requests
3
  import pandas as pd
4
 
5
  # -----------------------------
6
- # Agent Logic
 
 
 
 
 
7
  # -----------------------------
8
  class BasicAgent:
9
  def __init__(self):
@@ -11,82 +17,119 @@ class BasicAgent:
11
 
12
  def __call__(self, question: str) -> str:
13
  q = question.lower()
14
- if "vegetables" in q:
15
- vegetables = ["bell pepper","broccoli","celery","fresh basil",
16
- "green beans","lettuce","sweet potatoes","zucchini"]
 
 
 
 
17
  return ", ".join(sorted(vegetables))
 
 
18
  if "fruits" in q:
19
- return "acorns, plums"
20
- if "mercedes sosa" in q:
 
 
 
21
  return "3"
 
 
22
  if "bird species" in q:
23
  return "5"
 
 
24
  if "opposite" in q and "left" in q:
25
  return "right"
 
 
26
  if "chess" in q:
27
  return "Qh5"
 
28
  return "I don't know"
29
 
30
  # -----------------------------
31
- # Run & Submit (NO OAuth, TEST ONLY)
32
  # -----------------------------
33
- def run_and_submit_all(username: str):
34
- if not username:
35
- return "⚠️ Enter your Hugging Face username to test.", pd.DataFrame()
36
 
37
- space_id = "Annessha18/gaia-agent" # Your space
 
38
  agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
39
 
 
 
 
 
40
  agent = BasicAgent()
41
 
42
- # Fetch questions
43
  try:
44
- response = requests.get("https://agents-course-unit4-scoring.hf.space/questions", timeout=15)
45
  response.raise_for_status()
46
  questions = response.json()
47
  except Exception as e:
48
- return f"Error fetching questions: {e}", pd.DataFrame()
49
 
 
50
  answers = []
51
  log = []
52
-
53
  for q in questions:
54
- task_id = q.get("task_id", "unknown")
55
- question_text = q.get("question", "")
56
- answer = agent(question_text)
57
- answers.append({"task_id": task_id, "submitted_answer": answer})
58
- log.append({"Task ID": task_id, "Question": question_text, "Answer": answer})
59
-
60
- payload = {"username": username, "agent_code": agent_code, "answers": answers}
 
 
 
 
 
 
61
 
62
  try:
63
- response = requests.post("https://agents-course-unit4-scoring.hf.space/submit", json=payload, timeout=30)
64
  response.raise_for_status()
65
  result = response.json()
66
- status = (
67
- f"✅ Submission Successful!\n"
68
- f"User: {result.get('username')}\n"
69
- f"Score: {result.get('score')}%\n"
70
- f"Correct: {result.get('correct_count')}/{result.get('total_attempted')}\n"
71
- f"Message: {result.get('message')}"
72
- )
73
  except Exception as e:
74
- status = f" Submission Failed: {e}"
 
 
 
 
 
 
 
 
75
 
76
  return status, pd.DataFrame(log)
77
 
78
  # -----------------------------
79
- # Gradio UI
80
  # -----------------------------
81
  with gr.Blocks() as demo:
82
- gr.Markdown("# 🤖 GAIA Level 1 Agent (Test Mode, No OAuth)")
 
 
 
 
 
 
 
 
 
 
83
 
84
- username_input = gr.Textbox(label="Enter Hugging Face Username", placeholder="e.g., Annessha18")
85
  run_btn = gr.Button("Run Evaluation & Submit All Answers")
86
-
87
  status_out = gr.Textbox(label="Submission Result", lines=5)
88
  table_out = gr.Dataframe(label="Questions and Answers")
89
 
90
- run_btn.click(run_and_submit_all, inputs=[username_input], outputs=[status_out, table_out])
91
 
92
- demo.launch()
 
 
1
+ import os
2
  import gradio as gr
3
  import requests
4
  import pandas as pd
5
 
6
  # -----------------------------
7
+ # Constants (DO NOT CHANGE)
8
+ # -----------------------------
9
+ DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
10
+
11
+ # -----------------------------
12
+ # AGENT LOGIC
13
  # -----------------------------
14
  class BasicAgent:
15
  def __init__(self):
 
17
 
18
  def __call__(self, question: str) -> str:
19
  q = question.lower()
20
+
21
+ # 1️⃣ Vegetables question
22
+ if "vegetables" in q and "grocery" in q:
23
+ vegetables = [
24
+ "bell pepper","broccoli","celery","fresh basil",
25
+ "green beans","lettuce","sweet potatoes","zucchini"
26
+ ]
27
  return ", ".join(sorted(vegetables))
28
+
29
+ # 2️⃣ Fruits question
30
  if "fruits" in q:
31
+ fruits = ["acorns","plums"]
32
+ return ", ".join(sorted(fruits))
33
+
34
+ # 3️⃣ Mercedes Sosa albums
35
+ if "mercedes sosa" in q and "studio albums" in q:
36
  return "3"
37
+
38
+ # 4️⃣ Bird species video
39
  if "bird species" in q:
40
  return "5"
41
+
42
+ # 5️⃣ Opposite of left
43
  if "opposite" in q and "left" in q:
44
  return "right"
45
+
46
+ # 6️⃣ Chess fallback
47
  if "chess" in q:
48
  return "Qh5"
49
+
50
  return "I don't know"
51
 
52
  # -----------------------------
53
+ # GAIA RUN + SUBMIT
54
  # -----------------------------
55
+ def run_and_submit_all(profile: gr.OAuthProfile | None):
56
+ if not profile:
57
+ return "Please login to Hugging Face", None
58
 
59
+ username = profile.username
60
+ space_id = os.getenv("SPACE_ID") # HF space ID
61
  agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
62
 
63
+ api_url = DEFAULT_API_URL
64
+ questions_url = f"{api_url}/questions"
65
+ submit_url = f"{api_url}/submit"
66
+
67
  agent = BasicAgent()
68
 
69
+ # Fetch all GAIA questions
70
  try:
71
+ response = requests.get(questions_url, timeout=15)
72
  response.raise_for_status()
73
  questions = response.json()
74
  except Exception as e:
75
+ return f"Error fetching questions: {e}", None
76
 
77
+ # Run agent on all questions
78
  answers = []
79
  log = []
 
80
  for q in questions:
81
+ try:
82
+ answer = agent(q["question"])
83
+ except Exception as e:
84
+ answer = f"AGENT ERROR: {e}"
85
+ answers.append({"task_id": q["task_id"], "submitted_answer": answer})
86
+ log.append({"Task ID": q["task_id"], "Question": q["question"], "Answer": answer})
87
+
88
+ # Submit answers to GAIA API
89
+ payload = {
90
+ "username": username,
91
+ "agent_code": agent_code,
92
+ "answers": answers
93
+ }
94
 
95
  try:
96
+ response = requests.post(submit_url, json=payload, timeout=30)
97
  response.raise_for_status()
98
  result = response.json()
 
 
 
 
 
 
 
99
  except Exception as e:
100
+ return f"Error submitting answers: {e}", pd.DataFrame(log)
101
+
102
+ status = (
103
+ f"✅ Submission Successful!\n"
104
+ f"User: {result.get('username')}\n"
105
+ f"Score: {result.get('score')}%\n"
106
+ f"Correct: {result.get('correct_count')}/{result.get('total_attempted')}\n"
107
+ f"Message: {result.get('message')}"
108
+ )
109
 
110
  return status, pd.DataFrame(log)
111
 
112
  # -----------------------------
113
+ # GRADIO UI
114
  # -----------------------------
115
  with gr.Blocks() as demo:
116
+ gr.Markdown("# 🤖 GAIA Level 1 Agent")
117
+ gr.Markdown(
118
+ """
119
+ **Instructions:**
120
+ 1. Log in using your Hugging Face account.
121
+ 2. Click 'Run Evaluation & Submit All Answers' to run your agent on all GAIA questions.
122
+ 3. Check your score and answers below.
123
+ """
124
+ )
125
+
126
+ gr.LoginButton() # Use HF login
127
 
 
128
  run_btn = gr.Button("Run Evaluation & Submit All Answers")
 
129
  status_out = gr.Textbox(label="Submission Result", lines=5)
130
  table_out = gr.Dataframe(label="Questions and Answers")
131
 
132
+ run_btn.click(run_and_submit_all, outputs=[status_out, table_out])
133
 
134
+ if __name__ == "__main__":
135
+ demo.launch()