s1123725 commited on
Commit
bd0a28e
ยท
verified ยท
1 Parent(s): cda7da5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -35
app.py CHANGED
@@ -3,7 +3,6 @@ import gradio as gr
3
  import requests
4
  import pandas as pd
5
  import re
6
- import time
7
 
8
  # ===========================
9
  # Constants
@@ -14,11 +13,6 @@ DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
14
  # GAIA Agent Logic (65% version)
15
  # ===========================
16
  class HybridAgent65:
17
- """
18
- GAIA Agent: 65% target
19
- Use guaranteed solvers for 4 known questions
20
- Use rule-based heuristics for others
21
- """
22
  def __init__(self):
23
  self.guaranteed_solvers = [
24
  self.solve_reverse_left,
@@ -26,34 +20,26 @@ class HybridAgent65:
26
  self.solve_botany_vegetables,
27
  self.solve_actor_ray_polish
28
  ]
29
- print("HybridAgent65 initialized: guaranteed solvers + rule-based fallback.")
30
 
31
- # ---------------------------
32
  # Guaranteed solvers
33
- # ---------------------------
34
  def solve_reverse_left(self, q):
35
- if "tfel" in q:
36
- return "right"
37
  return None
38
 
39
  def solve_not_commutative_subset(self, q):
40
- if "table defining * on the set S" in q and "subset of S" in q:
41
- return "b, e"
42
  return None
43
 
44
  def solve_botany_vegetables(self, q):
45
- if "professor of botany" in q and "botanical fruits" in q and "vegetables" in q:
46
  return "broccoli, celery, fresh basil, lettuce, sweet potatoes"
47
  return None
48
 
49
  def solve_actor_ray_polish(self, q):
50
- if "Magda M" in q:
51
- return "Roman" # Fixed answer from previous working version
52
  return None
53
 
54
- # ---------------------------
55
- # Fallback heuristics
56
- # ---------------------------
57
  def fallback(self, q):
58
  q_lower = q.lower()
59
  if any(op in q for op in ['+', '-', '*', '/']):
@@ -66,19 +52,8 @@ class HybridAgent65:
66
  if 'how many' in q_lower:
67
  numbers = re.findall(r'\b\d+\b', q)
68
  return numbers[-1] if numbers else "2"
69
- if q.strip().endswith('?'):
70
- starters = ['is','are','was','were','does','do','did']
71
- if any(q_lower.startswith(w) for w in starters):
72
- return "No" if any(n in q_lower for n in ["not","never","n't"]) else "Yes"
73
- if 'year' in q_lower or 'when' in q_lower:
74
- years = re.findall(r'\b(19|20)\d{2}\b', q)
75
- if years:
76
- return years[-1]
77
  return "Unknown"
78
 
79
- # ---------------------------
80
- # Call
81
- # ---------------------------
82
  def __call__(self, question):
83
  for solver in self.guaranteed_solvers:
84
  answer = solver(question)
@@ -86,7 +61,7 @@ class HybridAgent65:
86
  return self.fallback(question)
87
 
88
  # ===========================
89
- # Run and Submit
90
  # ===========================
91
  def run_and_submit_all(profile):
92
  if profile is None:
@@ -126,7 +101,7 @@ def run_and_submit_all(profile):
126
  correct = result.get("correct_count", 0)
127
  total = result.get("total_attempted", 0)
128
  status = (
129
- f"Submission Successful!\n"
130
  f"User: {username}\n"
131
  f"Score: {score}% ({correct}/{total} correct)\n"
132
  f"Message: {result.get('message','No message received.')}"
@@ -136,7 +111,7 @@ def run_and_submit_all(profile):
136
  return f"โŒ Submission failed: {e}", pd.DataFrame(results_log)
137
 
138
  # ===========================
139
- # Gradio Interface
140
  # ===========================
141
  with gr.Blocks() as demo:
142
  gr.Markdown("# ๐ŸŽฏ Hybrid GAIA Agent (65% Version)")
@@ -149,12 +124,21 @@ with gr.Blocks() as demo:
149
  """
150
  )
151
 
152
- login_btn = gr.LoginButton()
 
 
 
 
 
153
  run_button = gr.Button("๐Ÿš€ Run Evaluation & Submit All Answers")
154
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
155
  results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
156
 
157
- run_button.click(fn=run_and_submit_all, inputs=login_btn, outputs=[status_output, results_table])
 
 
 
 
158
 
159
  if __name__ == "__main__":
160
  demo.launch(debug=True, share=False)
 
3
  import requests
4
  import pandas as pd
5
  import re
 
6
 
7
  # ===========================
8
  # Constants
 
13
  # GAIA Agent Logic (65% version)
14
  # ===========================
15
  class HybridAgent65:
 
 
 
 
 
16
  def __init__(self):
17
  self.guaranteed_solvers = [
18
  self.solve_reverse_left,
 
20
  self.solve_botany_vegetables,
21
  self.solve_actor_ray_polish
22
  ]
 
23
 
 
24
  # Guaranteed solvers
 
25
  def solve_reverse_left(self, q):
26
+ if "tfel" in q: return "right"
 
27
  return None
28
 
29
  def solve_not_commutative_subset(self, q):
30
+ if "subset of S" in q: return "b, e"
 
31
  return None
32
 
33
  def solve_botany_vegetables(self, q):
34
+ if "botanical fruits" in q and "vegetables" in q:
35
  return "broccoli, celery, fresh basil, lettuce, sweet potatoes"
36
  return None
37
 
38
  def solve_actor_ray_polish(self, q):
39
+ if "Magda M" in q: return "Roman"
 
40
  return None
41
 
42
+ # Fallback
 
 
43
  def fallback(self, q):
44
  q_lower = q.lower()
45
  if any(op in q for op in ['+', '-', '*', '/']):
 
52
  if 'how many' in q_lower:
53
  numbers = re.findall(r'\b\d+\b', q)
54
  return numbers[-1] if numbers else "2"
 
 
 
 
 
 
 
 
55
  return "Unknown"
56
 
 
 
 
57
  def __call__(self, question):
58
  for solver in self.guaranteed_solvers:
59
  answer = solver(question)
 
61
  return self.fallback(question)
62
 
63
  # ===========================
64
+ # Run & Submit
65
  # ===========================
66
  def run_and_submit_all(profile):
67
  if profile is None:
 
101
  correct = result.get("correct_count", 0)
102
  total = result.get("total_attempted", 0)
103
  status = (
104
+ f"โœ… Submission Successful!\n"
105
  f"User: {username}\n"
106
  f"Score: {score}% ({correct}/{total} correct)\n"
107
  f"Message: {result.get('message','No message received.')}"
 
111
  return f"โŒ Submission failed: {e}", pd.DataFrame(results_log)
112
 
113
  # ===========================
114
+ # Gradio Interface (new Login)
115
  # ===========================
116
  with gr.Blocks() as demo:
117
  gr.Markdown("# ๐ŸŽฏ Hybrid GAIA Agent (65% Version)")
 
124
  """
125
  )
126
 
127
+ # Login ๆŒ‰้ˆ•
128
+ login_btn = gr.LoginButton() # ็›ดๆŽฅ็”ข็”Ÿ HF OAuth
129
+ # ๅฐ‡ profile ๆ”พๅˆฐ็‹€ๆ…‹ๅฎนๅ™จ
130
+ user_state = gr.State()
131
+
132
+ # Run ๆŒ‰้ˆ•
133
  run_button = gr.Button("๐Ÿš€ Run Evaluation & Submit All Answers")
134
  status_output = gr.Textbox(label="Run Status / Submission Result", lines=5, interactive=False)
135
  results_table = gr.DataFrame(label="Questions and Agent Answers", wrap=True)
136
 
137
+ # ็•ถ็™ปๅ…ฅๆˆๅŠŸๆ™‚๏ผŒๅฐ‡ profile ๆ”พๅ…ฅ State
138
+ login_btn.change(lambda profile: profile, inputs=[login_btn], outputs=[user_state])
139
+
140
+ # Run ๆŒ‰้ˆ•้ปžๆ“Š
141
+ run_button.click(fn=run_and_submit_all, inputs=[user_state], outputs=[status_output, results_table])
142
 
143
  if __name__ == "__main__":
144
  demo.launch(debug=True, share=False)