jan01 commited on
Commit
ab695d4
·
verified ·
1 Parent(s): 81917a3

Updated_app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -44
app.py CHANGED
@@ -1,34 +1,37 @@
1
  import os
2
  import gradio as gr
3
  import requests
4
- import inspect
5
  import pandas as pd
 
6
 
7
- # (Keep Constants as is)
8
  # --- Constants ---
9
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
10
 
11
  # --- Basic Agent Definition ---
12
- # ----- THIS IS WERE YOU CAN BUILD WHAT YOU WANT ------
13
  class BasicAgent:
14
  def __init__(self):
15
  print("BasicAgent initialized.")
 
 
 
16
  def __call__(self, question: str) -> str:
17
  print(f"Agent received question (first 50 chars): {question[:50]}...")
18
- fixed_answer = "This is a default answer."
19
- print(f"Agent returning fixed answer: {fixed_answer}")
20
- return fixed_answer
 
 
21
 
22
- def run_and_submit_all( profile: gr.OAuthProfile | None):
23
  """
24
  Fetches all questions, runs the BasicAgent on them, submits all answers,
25
  and displays the results.
26
  """
27
- # --- Determine HF Space Runtime URL and Repo URL ---
28
- space_id = os.getenv("SPACE_ID") # Get the SPACE_ID for sending link to the code
29
 
30
  if profile:
31
- username= f"{profile.username}"
32
  print(f"User logged in: {username}")
33
  else:
34
  print("User not logged in.")
@@ -38,38 +41,28 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
38
  questions_url = f"{api_url}/questions"
39
  submit_url = f"{api_url}/submit"
40
 
41
- # 1. Instantiate Agent ( modify this part to create your agent)
42
  try:
43
  agent = BasicAgent()
44
  except Exception as e:
45
  print(f"Error instantiating agent: {e}")
46
  return f"Error initializing agent: {e}", None
47
- # In the case of an app running as a hugging Face space, this link points toward your codebase ( usefull for others so please keep it public)
48
- agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
49
  print(agent_code)
50
 
51
- # 2. Fetch Questions
52
- print(f"Fetching questions from: {questions_url}")
53
  try:
54
  response = requests.get(questions_url, timeout=15)
55
  response.raise_for_status()
56
  questions_data = response.json()
57
  if not questions_data:
58
- print("Fetched questions list is empty.")
59
- return "Fetched questions list is empty or invalid format.", None
60
  print(f"Fetched {len(questions_data)} questions.")
61
- except requests.exceptions.RequestException as e:
62
  print(f"Error fetching questions: {e}")
63
  return f"Error fetching questions: {e}", None
64
- except requests.exceptions.JSONDecodeError as e:
65
- print(f"Error decoding JSON response from questions endpoint: {e}")
66
- print(f"Response text: {response.text[:500]}")
67
- return f"Error decoding server response for questions: {e}", None
68
- except Exception as e:
69
- print(f"An unexpected error occurred fetching questions: {e}")
70
- return f"An unexpected error occurred fetching questions: {e}", None
71
 
72
- # 3. Run your Agent
73
  results_log = []
74
  answers_payload = []
75
  print(f"Running agent on {len(questions_data)} questions...")
@@ -84,20 +77,16 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
84
  answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
85
  results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
86
  except Exception as e:
87
- print(f"Error running agent on task {task_id}: {e}")
88
- results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"AGENT ERROR: {e}"})
89
 
90
  if not answers_payload:
91
  print("Agent did not produce any answers to submit.")
92
  return "Agent did not produce any answers to submit.", pd.DataFrame(results_log)
93
 
94
- # 4. Prepare Submission
95
  submission_data = {"username": username.strip(), "agent_code": agent_code, "answers": answers_payload}
96
- status_update = f"Agent finished. Submitting {len(answers_payload)} answers for user '{username}'..."
97
- print(status_update)
98
 
99
- # 5. Submit
100
- print(f"Submitting {len(answers_payload)} answers to: {submit_url}")
101
  try:
102
  response = requests.post(submit_url, json=submission_data, timeout=60)
103
  response.raise_for_status()
@@ -117,7 +106,7 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
117
  try:
118
  error_json = e.response.json()
119
  error_detail += f" Detail: {error_json.get('detail', e.response.text)}"
120
- except requests.exceptions.JSONDecodeError:
121
  error_detail += f" Response: {e.response.text[:500]}"
122
  status_message = f"Submission Failed: {error_detail}"
123
  print(status_message)
@@ -140,17 +129,14 @@ def run_and_submit_all( profile: gr.OAuthProfile | None):
140
  return status_message, results_df
141
 
142
 
143
- # --- Build Gradio Interface using Blocks ---
144
  with gr.Blocks() as demo:
145
  gr.Markdown("# Basic Agent Evaluation Runner")
146
  gr.Markdown(
147
  """
148
  **Instructions:**
149
-
150
  1. Please clone this space, then modify the code to define your agent's logic, the tools, the necessary packages, etc ...
151
  2. Log in to your Hugging Face account using the button below. This uses your HF username for submission.
152
  3. Click 'Run Evaluation & Submit All Answers' to fetch questions, run your agent, submit answers, and see the score.
153
-
154
  ---
155
  **Disclaimers:**
156
  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).
@@ -163,7 +149,6 @@ with gr.Blocks() as demo:
163
  run_button = gr.Button("Run Evaluation & Submit All Answers")
164
 
165
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
166
- # Removed max_rows=10 from DataFrame constructor
167
  results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
168
 
169
  run_button.click(
@@ -171,11 +156,11 @@ with gr.Blocks() as demo:
171
  outputs=[status_output, results_table]
172
  )
173
 
 
174
  if __name__ == "__main__":
175
- print("\n" + "-"*30 + " App Starting " + "-"*30)
176
- # Check for SPACE_HOST and SPACE_ID at startup for information
177
  space_host_startup = os.getenv("SPACE_HOST")
178
- space_id_startup = os.getenv("SPACE_ID") # Get SPACE_ID at startup
179
 
180
  if space_host_startup:
181
  print(f"✅ SPACE_HOST found: {space_host_startup}")
@@ -183,14 +168,14 @@ if __name__ == "__main__":
183
  else:
184
  print("ℹ️ SPACE_HOST environment variable not found (running locally?).")
185
 
186
- if space_id_startup: # Print repo URLs if SPACE_ID is found
187
  print(f"✅ SPACE_ID found: {space_id_startup}")
188
  print(f" Repo URL: https://huggingface.co/spaces/{space_id_startup}")
189
  print(f" Repo Tree URL: https://huggingface.co/spaces/{space_id_startup}/tree/main")
190
  else:
191
  print("ℹ️ SPACE_ID environment variable not found (running locally?). Repo URL cannot be determined.")
192
 
193
- print("-"*(60 + len(" App Starting ")) + "\n")
194
 
195
  print("Launching Gradio Interface for Basic Agent Evaluation...")
196
- demo.launch(debug=True, share=False)
 
1
  import os
2
  import gradio as gr
3
  import requests
 
4
  import pandas as pd
5
+ from transformers import pipeline
6
 
 
7
  # --- Constants ---
8
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
9
 
10
  # --- Basic Agent Definition ---
11
+ # Modified to use HF transformers pipeline for Q&A
12
  class BasicAgent:
13
  def __init__(self):
14
  print("BasicAgent initialized.")
15
+ # Load the model pipeline for text2text-generation (question answering)
16
+ self.qa_pipeline = pipeline("text2text-generation", model="google/flan-t5-small")
17
+
18
  def __call__(self, question: str) -> str:
19
  print(f"Agent received question (first 50 chars): {question[:50]}...")
20
+ # Run the question through the pipeline to get answer
21
+ output = self.qa_pipeline(question, max_length=64)
22
+ answer = output[0]['generated_text']
23
+ print(f"Agent returning answer: {answer}")
24
+ return answer
25
 
26
+ def run_and_submit_all(profile: gr.OAuthProfile | None):
27
  """
28
  Fetches all questions, runs the BasicAgent on them, submits all answers,
29
  and displays the results.
30
  """
31
+ space_id = os.getenv("SPACE_ID") # For link to your codebase
 
32
 
33
  if profile:
34
+ username = f"{profile.username}"
35
  print(f"User logged in: {username}")
36
  else:
37
  print("User not logged in.")
 
41
  questions_url = f"{api_url}/questions"
42
  submit_url = f"{api_url}/submit"
43
 
 
44
  try:
45
  agent = BasicAgent()
46
  except Exception as e:
47
  print(f"Error instantiating agent: {e}")
48
  return f"Error initializing agent: {e}", None
49
+
50
+ agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main" if space_id else "Code repo link unavailable"
51
  print(agent_code)
52
 
53
+ # Fetch questions
 
54
  try:
55
  response = requests.get(questions_url, timeout=15)
56
  response.raise_for_status()
57
  questions_data = response.json()
58
  if not questions_data:
59
+ print("Fetched questions list is empty.")
60
+ return "Fetched questions list is empty or invalid format.", None
61
  print(f"Fetched {len(questions_data)} questions.")
62
+ except Exception as e:
63
  print(f"Error fetching questions: {e}")
64
  return f"Error fetching questions: {e}", None
 
 
 
 
 
 
 
65
 
 
66
  results_log = []
67
  answers_payload = []
68
  print(f"Running agent on {len(questions_data)} questions...")
 
77
  answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
78
  results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
79
  except Exception as e:
80
+ print(f"Error running agent on task {task_id}: {e}")
81
+ results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": f"AGENT ERROR: {e}"})
82
 
83
  if not answers_payload:
84
  print("Agent did not produce any answers to submit.")
85
  return "Agent did not produce any answers to submit.", pd.DataFrame(results_log)
86
 
 
87
  submission_data = {"username": username.strip(), "agent_code": agent_code, "answers": answers_payload}
88
+ print(f"Agent finished. Submitting {len(answers_payload)} answers for user '{username}'...")
 
89
 
 
 
90
  try:
91
  response = requests.post(submit_url, json=submission_data, timeout=60)
92
  response.raise_for_status()
 
106
  try:
107
  error_json = e.response.json()
108
  error_detail += f" Detail: {error_json.get('detail', e.response.text)}"
109
+ except Exception:
110
  error_detail += f" Response: {e.response.text[:500]}"
111
  status_message = f"Submission Failed: {error_detail}"
112
  print(status_message)
 
129
  return status_message, results_df
130
 
131
 
 
132
  with gr.Blocks() as demo:
133
  gr.Markdown("# Basic Agent Evaluation Runner")
134
  gr.Markdown(
135
  """
136
  **Instructions:**
 
137
  1. Please clone this space, then modify the code to define your agent's logic, the tools, the necessary packages, etc ...
138
  2. Log in to your Hugging Face account using the button below. This uses your HF username for submission.
139
  3. Click 'Run Evaluation & Submit All Answers' to fetch questions, run your agent, submit answers, and see the score.
 
140
  ---
141
  **Disclaimers:**
142
  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).
 
149
  run_button = gr.Button("Run Evaluation & Submit All Answers")
150
 
151
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
 
152
  results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
153
 
154
  run_button.click(
 
156
  outputs=[status_output, results_table]
157
  )
158
 
159
+
160
  if __name__ == "__main__":
161
+ print("\n" + "-" * 30 + " App Starting " + "-" * 30)
 
162
  space_host_startup = os.getenv("SPACE_HOST")
163
+ space_id_startup = os.getenv("SPACE_ID")
164
 
165
  if space_host_startup:
166
  print(f"✅ SPACE_HOST found: {space_host_startup}")
 
168
  else:
169
  print("ℹ️ SPACE_HOST environment variable not found (running locally?).")
170
 
171
+ if space_id_startup:
172
  print(f"✅ SPACE_ID found: {space_id_startup}")
173
  print(f" Repo URL: https://huggingface.co/spaces/{space_id_startup}")
174
  print(f" Repo Tree URL: https://huggingface.co/spaces/{space_id_startup}/tree/main")
175
  else:
176
  print("ℹ️ SPACE_ID environment variable not found (running locally?). Repo URL cannot be determined.")
177
 
178
+ print("-" * (60 + len(" App Starting ")) + "\n")
179
 
180
  print("Launching Gradio Interface for Basic Agent Evaluation...")
181
+ demo.launch(debug=True, share=False)