real-jiakai commited on
Commit
c1758ef
·
verified ·
1 Parent(s): 34606bb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -25
app.py CHANGED
@@ -3,8 +3,10 @@ import gradio as gr
3
  import requests
4
  import inspect
5
  import pandas as pd
 
6
  from agent import ClaudeAgent
7
  from dotenv import load_dotenv
 
8
 
9
  # Load environment variables
10
  load_dotenv()
@@ -19,17 +21,6 @@ else:
19
  # --- Constants ---
20
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
21
 
22
- # --- Basic Agent Definition ---
23
- # ----- THIS IS WERE YOU CAN BUILD WHAT YOU WANT ------
24
- class BasicAgent:
25
- def __init__(self):
26
- print("BasicAgent initialized.")
27
- def __call__(self, question: str) -> str:
28
- print(f"Agent received question (first 50 chars): {question[:50]}...")
29
- fixed_answer = "This is a default answer."
30
- print(f"Agent returning fixed answer: {fixed_answer}")
31
- return fixed_answer
32
-
33
  def run_and_submit_all(profile: gr.OAuthProfile | None):
34
  """
35
  Fetches all questions, runs the BasicAgent on them, submits all answers,
@@ -52,7 +43,7 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
52
  # 1. Instantiate Agent ( modify this part to create your agent)
53
  try:
54
  # agent = BasicAgent()
55
- agent = ClaudeAgent()
56
  except Exception as e:
57
  print(f"Error instantiating agent: {e}")
58
  return f"Error initializing agent: {e}", None
@@ -85,19 +76,42 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
85
  results_log = []
86
  answers_payload = []
87
  print(f"Running agent on {len(questions_data)} questions...")
88
- for item in questions_data:
 
 
89
  task_id = item.get("task_id")
90
  question_text = item.get("question")
91
  if not task_id or question_text is None:
92
  print(f"Skipping item with missing task_id or question: {item}")
93
  continue
 
 
 
 
94
  try:
 
 
 
 
 
 
 
 
95
  submitted_answer = agent(question_text)
96
  answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
97
  results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
 
 
 
98
  except Exception as e:
99
- print(f"Error running agent on task {task_id}: {e}")
100
- results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"AGENT ERROR: {e}"})
 
 
 
 
 
 
101
 
102
  if not answers_payload:
103
  print("Agent did not produce any answers to submit.")
@@ -154,17 +168,18 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
154
 
155
  # --- Build Gradio Interface using Blocks ---
156
  with gr.Blocks() as demo:
157
- gr.Markdown("# Basic Agent Evaluation Runner")
158
  gr.Markdown(
159
  """
160
  **Instructions:**
161
- 1. Please clone this space, then modify the code to define your agent's logic, the tools, the necessary packages, etc ...
162
- 2. Log in to your Hugging Face account using the button below. This uses your HF username for submission.
163
- 3. Click 'Run Evaluation & Submit All Answers' to fetch questions, run your agent, submit answers, and see the score.
164
- ---
165
- **Disclaimers:**
166
- Once clicking on the "submit button, it can take quite some time ( this is the time for the agent to go through all the questions).
167
- This space provides a basic setup and is intentionally sub-optimal to encourage you to develop your own, more robust solution. For instance for the delay process of the submit button, a solution could be to cache the answers and submit in a seperate action or even to answer the questions in async.
 
168
  """
169
  )
170
 
@@ -173,7 +188,6 @@ with gr.Blocks() as demo:
173
  run_button = gr.Button("Run Evaluation & Submit All Answers")
174
 
175
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
176
- # Removed max_rows=10 from DataFrame constructor
177
  results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
178
 
179
  run_button.click(
@@ -202,5 +216,5 @@ if __name__ == "__main__":
202
 
203
  print("-"*(60 + len(" App Starting ")) + "\n")
204
 
205
- print("Launching Gradio Interface for Basic Agent Evaluation...")
206
  demo.launch(debug=True, share=False)
 
3
  import requests
4
  import inspect
5
  import pandas as pd
6
+ import time
7
  from agent import ClaudeAgent
8
  from dotenv import load_dotenv
9
+ import random
10
 
11
  # Load environment variables
12
  load_dotenv()
 
21
  # --- Constants ---
22
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
23
 
 
 
 
 
 
 
 
 
 
 
 
24
  def run_and_submit_all(profile: gr.OAuthProfile | None):
25
  """
26
  Fetches all questions, runs the BasicAgent on them, submits all answers,
 
43
  # 1. Instantiate Agent ( modify this part to create your agent)
44
  try:
45
  # agent = BasicAgent()
46
+ agent = GeminiAgent()
47
  except Exception as e:
48
  print(f"Error instantiating agent: {e}")
49
  return f"Error initializing agent: {e}", None
 
76
  results_log = []
77
  answers_payload = []
78
  print(f"Running agent on {len(questions_data)} questions...")
79
+
80
+ # Process with rate limiting to avoid Anthropic API limits
81
+ for i, item in enumerate(questions_data):
82
  task_id = item.get("task_id")
83
  question_text = item.get("question")
84
  if not task_id or question_text is None:
85
  print(f"Skipping item with missing task_id or question: {item}")
86
  continue
87
+
88
+ # Add a progress indicator
89
+ print(f"Processing question {i+1}/{len(questions_data)}: Task ID {task_id}")
90
+
91
  try:
92
+ # Add a delay between requests to respect rate limits
93
+ if i > 0:
94
+ # Random delay between 2-5 seconds
95
+ sleep_time = random.uniform(2, 5)
96
+ print(f"Waiting {sleep_time:.2f} seconds before next question...")
97
+ time.sleep(sleep_time)
98
+
99
+ # Process the question
100
  submitted_answer = agent(question_text)
101
  answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
102
  results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
103
+
104
+ # Print answer for monitoring
105
+ print(f"Answer for task {task_id}: {submitted_answer[:100]}..." if len(submitted_answer) > 100 else f"Answer: {submitted_answer}")
106
  except Exception as e:
107
+ print(f"Error running agent on task {task_id}: {e}")
108
+ results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"AGENT ERROR: {e}"})
109
+
110
+ # If this was a rate limit error, add a longer cooldown period
111
+ if "rate_limit" in str(e).lower():
112
+ cool_down = 60 # 1 minute cooldown
113
+ print(f"Rate limit detected. Cooling down for {cool_down} seconds...")
114
+ time.sleep(cool_down)
115
 
116
  if not answers_payload:
117
  print("Agent did not produce any answers to submit.")
 
168
 
169
  # --- Build Gradio Interface using Blocks ---
170
  with gr.Blocks() as demo:
171
+ gr.Markdown("# GAIA Agent Evaluation Runner")
172
  gr.Markdown(
173
  """
174
  **Instructions:**
175
+ 1. Make sure your ANTHROPIC_API_KEY is set in the Hugging Face Space secrets
176
+ 2. Log in to your Hugging Face account using the button below
177
+ 3. Click 'Run Evaluation & Submit All Answers' to process all questions
178
+
179
+ **Notes:**
180
+ - This agent uses Claude 3.5 Sonnet with rate limiting to avoid exceeding API limits
181
+ - Questions are processed sequentially with delays between requests
182
+ - The entire process may take several minutes to complete
183
  """
184
  )
185
 
 
188
  run_button = gr.Button("Run Evaluation & Submit All Answers")
189
 
190
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
 
191
  results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
192
 
193
  run_button.click(
 
216
 
217
  print("-"*(60 + len(" App Starting ")) + "\n")
218
 
219
+ print("Launching Gradio Interface for GAIA Agent Evaluation...")
220
  demo.launch(debug=True, share=False)