Freddolin commited on
Commit
02907ae
·
verified ·
1 Parent(s): e0fa687

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -16
app.py CHANGED
@@ -1,42 +1,63 @@
 
1
  import os
 
2
  import gradio as gr
3
  import requests
4
- import inspect # Behåll denna, mallen använder den kanske internt
5
  import pandas as pd
 
 
6
 
7
- # Importera din GaiaAgent från den separata agent.py filen
8
- from agent import GaiaAgent
9
 
 
 
10
  # --- Constants ---
11
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
12
 
13
- # --- Main Evaluation Function ---
14
- def run_and_submit_all(profile: gr.OAuthProfile | None):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  """
16
- Fetches all questions, runs the GaiaAgent on them, submits all answers,
17
  and displays the results.
18
  """
19
  # --- Determine HF Space Runtime URL and Repo URL ---
20
  space_id = os.getenv("SPACE_ID") # Get the SPACE_ID for sending link to the code
 
21
  if profile:
22
  username= f"{profile.username}"
23
  print(f"User logged in: {username}")
24
  else:
25
  print("User not logged in.")
26
  return "Please Login to Hugging Face with the button.", None
 
27
  api_url = DEFAULT_API_URL
28
  questions_url = f"{api_url}/questions"
29
  submit_url = f"{api_url}/submit"
30
 
31
- # 1. Instantiate Agent (MODIFY THIS PART to create your agent)
32
  try:
33
- # Instantiera din GaiaAgent här istället för BasicAgent
34
- agent = GaiaAgent()
35
  except Exception as e:
36
  print(f"Error instantiating agent: {e}")
37
  return f"Error initializing agent: {e}", None
38
-
39
- # In the case of an app running as a hugging Face space, this link points toward your codebase ( useful for others so please keep it public)
40
  agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
41
  print(agent_code)
42
 
@@ -72,7 +93,6 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
72
  print(f"Skipping item with missing task_id or question: {item}")
73
  continue
74
  try:
75
- # Anropa din GaiaAgent med frågan
76
  submitted_answer = agent(question_text)
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})
@@ -84,7 +104,7 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
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
- # 4. Prepare Submission
88
  submission_data = {"username": username.strip(), "agent_code": agent_code, "answers": answers_payload}
89
  status_update = f"Agent finished. Submitting {len(answers_payload)} answers for user '{username}'..."
90
  print(status_update)
@@ -132,25 +152,32 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
132
  results_df = pd.DataFrame(results_log)
133
  return status_message, results_df
134
 
 
135
  # --- Build Gradio Interface using Blocks ---
136
  with gr.Blocks() as demo:
137
  gr.Markdown("# Basic Agent Evaluation Runner")
138
  gr.Markdown(
139
  """
140
  **Instructions:**
 
141
  1. Please clone this space, then modify the code to define your agent's logic, the tools, the necessary packages, etc ...
142
  2. Log in to your Hugging Face account using the button below. This uses your HF username for submission.
143
  3. Click 'Run Evaluation & Submit All Answers' to fetch questions, run your agent, submit answers, and see the score.
 
144
  ---
145
  **Disclaimers:**
146
  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).
147
  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.
148
  """
149
  )
 
150
  gr.LoginButton()
 
151
  run_button = gr.Button("Run Evaluation & Submit All Answers")
 
152
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
153
- results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True) # Ensure max_rows is not breaking it
 
154
 
155
  run_button.click(
156
  fn=run_and_submit_all,
@@ -159,20 +186,25 @@ with gr.Blocks() as demo:
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
  if space_host_startup:
165
  print(f"✅ SPACE_HOST found: {space_host_startup}")
166
  print(f" Runtime URL should be: https://{space_host_startup}.hf.space")
167
  else:
168
  print("ℹ️ SPACE_HOST environment variable not found (running locally?).")
169
- if space_id_startup:
 
170
  print(f"✅ SPACE_ID found: {space_id_startup}")
171
  print(f" Repo URL: https://huggingface.co/spaces/{space_id_startup}")
172
  print(f" Repo Tree URL: https://huggingface.co/spaces/{space_id_startup}/tree/main")
173
  else:
174
  print("ℹ️ SPACE_ID environment variable not found (running locally?). Repo URL cannot be determined.")
 
175
  print("-"*(60 + len(" App Starting ")) + "\n")
 
176
  print("Launching Gradio Interface for Basic Agent Evaluation...")
177
  demo.launch(debug=True, share=False)
178
 
 
1
+ """ Basic Agent Evaluation Runner"""
2
  import os
3
+ import inspect
4
  import gradio as gr
5
  import requests
 
6
  import pandas as pd
7
+ from langchain_core.messages import HumanMessage
8
+ from agent import build_graph
9
 
 
 
10
 
11
+
12
+ # (Keep Constants as is)
13
  # --- Constants ---
14
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
15
 
16
+ # --- Basic Agent Definition ---
17
+ # ----- THIS IS WERE YOU CAN BUILD WHAT YOU WANT ------
18
+
19
+
20
+ class BasicAgent:
21
+ """A langgraph agent."""
22
+ def __init__(self):
23
+ print("BasicAgent initialized.")
24
+ self.graph = build_graph()
25
+
26
+ def __call__(self, question: str) -> str:
27
+ print(f"Agent received question (first 50 chars): {question[:50]}...")
28
+ messages = [HumanMessage(content=question)]
29
+ result = self.graph.invoke({"messages": messages})
30
+ answer = result['messages'][-1].content
31
+ return answer # kein [14:] mehr nötig!
32
+
33
+
34
+
35
+ def run_and_submit_all( profile: gr.OAuthProfile | None):
36
  """
37
+ Fetches all questions, runs the BasicAgent on them, submits all answers,
38
  and displays the results.
39
  """
40
  # --- Determine HF Space Runtime URL and Repo URL ---
41
  space_id = os.getenv("SPACE_ID") # Get the SPACE_ID for sending link to the code
42
+
43
  if profile:
44
  username= f"{profile.username}"
45
  print(f"User logged in: {username}")
46
  else:
47
  print("User not logged in.")
48
  return "Please Login to Hugging Face with the button.", None
49
+
50
  api_url = DEFAULT_API_URL
51
  questions_url = f"{api_url}/questions"
52
  submit_url = f"{api_url}/submit"
53
 
54
+ # 1. Instantiate Agent ( modify this part to create your agent)
55
  try:
56
+ agent = BasicAgent()
 
57
  except Exception as e:
58
  print(f"Error instantiating agent: {e}")
59
  return f"Error initializing agent: {e}", None
60
+ # 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)
 
61
  agent_code = f"https://huggingface.co/spaces/{space_id}/tree/main"
62
  print(agent_code)
63
 
 
93
  print(f"Skipping item with missing task_id or question: {item}")
94
  continue
95
  try:
 
96
  submitted_answer = agent(question_text)
97
  answers_payload.append({"task_id": task_id, "submitted_answer": submitted_answer})
98
  results_log.append({"Task ID": task_id, "Question": question_text, "Submitted Answer": submitted_answer})
 
104
  print("Agent did not produce any answers to submit.")
105
  return "Agent did not produce any answers to submit.", pd.DataFrame(results_log)
106
 
107
+ # 4. Prepare Submission
108
  submission_data = {"username": username.strip(), "agent_code": agent_code, "answers": answers_payload}
109
  status_update = f"Agent finished. Submitting {len(answers_payload)} answers for user '{username}'..."
110
  print(status_update)
 
152
  results_df = pd.DataFrame(results_log)
153
  return status_message, results_df
154
 
155
+
156
  # --- Build Gradio Interface using Blocks ---
157
  with gr.Blocks() as demo:
158
  gr.Markdown("# Basic Agent Evaluation Runner")
159
  gr.Markdown(
160
  """
161
  **Instructions:**
162
+
163
  1. Please clone this space, then modify the code to define your agent's logic, the tools, the necessary packages, etc ...
164
  2. Log in to your Hugging Face account using the button below. This uses your HF username for submission.
165
  3. Click 'Run Evaluation & Submit All Answers' to fetch questions, run your agent, submit answers, and see the score.
166
+
167
  ---
168
  **Disclaimers:**
169
  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).
170
  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.
171
  """
172
  )
173
+
174
  gr.LoginButton()
175
+
176
  run_button = gr.Button("Run Evaluation & Submit All Answers")
177
+
178
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
179
+ # Removed max_rows=10 from DataFrame constructor
180
+ results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
181
 
182
  run_button.click(
183
  fn=run_and_submit_all,
 
186
 
187
  if __name__ == "__main__":
188
  print("\n" + "-"*30 + " App Starting " + "-"*30)
189
+ # Check for SPACE_HOST and SPACE_ID at startup for information
190
  space_host_startup = os.getenv("SPACE_HOST")
191
+ space_id_startup = os.getenv("SPACE_ID") # Get SPACE_ID at startup
192
+
193
  if space_host_startup:
194
  print(f"✅ SPACE_HOST found: {space_host_startup}")
195
  print(f" Runtime URL should be: https://{space_host_startup}.hf.space")
196
  else:
197
  print("ℹ️ SPACE_HOST environment variable not found (running locally?).")
198
+
199
+ if space_id_startup: # Print repo URLs if SPACE_ID is found
200
  print(f"✅ SPACE_ID found: {space_id_startup}")
201
  print(f" Repo URL: https://huggingface.co/spaces/{space_id_startup}")
202
  print(f" Repo Tree URL: https://huggingface.co/spaces/{space_id_startup}/tree/main")
203
  else:
204
  print("ℹ️ SPACE_ID environment variable not found (running locally?). Repo URL cannot be determined.")
205
+
206
  print("-"*(60 + len(" App Starting ")) + "\n")
207
+
208
  print("Launching Gradio Interface for Basic Agent Evaluation...")
209
  demo.launch(debug=True, share=False)
210