s1144662 commited on
Commit
af0914d
·
verified ·
1 Parent(s): a6c1a3b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -22
app.py CHANGED
@@ -2,42 +2,42 @@ import os
2
  import gradio as gr
3
  import requests
4
  import pandas as pd
 
5
  from typing import Optional
6
  from smolagents import CodeAgent, OpenAIServerModel, tool
7
 
8
- # --- 搜尋工具 (極速減肥版) ---
9
  try:
10
  from duckduckgo_search import DDGS
11
  except ImportError:
12
  import os
13
- os.system('pip install ddgs')
 
14
  from duckduckgo_search import DDGS
15
 
16
  @tool
17
  def web_search(query: str) -> str:
18
  """
19
- Search with strict length limits to prevent model hanging.
20
  Args:
21
  query: The search query string.
22
  """
23
  print(f"🕵️ [Debug] Searching: {query}")
24
  try:
25
- # 1. 使用 Lite 模式 (最快、不被擋)
26
- # 2. 只抓 1 筆結果 (減少資料量)
 
27
  with DDGS() as ddgs:
 
28
  results = list(ddgs.text(query, max_results=1, backend="lite"))
29
 
30
  if not results:
31
- return "No results. Guess the answer."
32
 
33
- # 3. 關鍵修改:強制截斷文字!
34
- # 只回傳前 400 個字,避免 70B 模型「噎住」
35
- first_result = results[0]
36
- title = first_result.get('title', '')
37
- body = first_result.get('body', '')
38
- summary = f"Title: {title}\nInfo: {body}"
39
-
40
- return summary[:400] # <--- 這裡就是防卡死的關鍵
41
 
42
  except Exception as e:
43
  print(f"❌ Error: {e}")
@@ -54,7 +54,6 @@ class GroqAgent:
54
  self.agent = None
55
  return
56
 
57
- # 堅持使用 Llama 3.3 70B (它是唯一夠聰明能過關的)
58
  model = OpenAIServerModel(
59
  model_id="llama-3.3-70b-versatile",
60
  api_base="https://api.groq.com/openai/v1",
@@ -64,7 +63,7 @@ class GroqAgent:
64
  self.agent = CodeAgent(
65
  tools=[web_search],
66
  model=model,
67
- max_steps=2, # 減少步數,逼它快點回答
68
  verbosity_level=1
69
  )
70
 
@@ -73,12 +72,14 @@ class GroqAgent:
73
  return "Error: GROQ_API_KEY not configured."
74
 
75
  try:
76
- # 提示詞:極度簡化,逼它直接回答
 
 
77
  prompt = f"""
78
  Task: Answer concisely.
79
  1. Search ONCE.
80
- 2. If search fails, GUESS immediately.
81
- 3. Do not overthink.
82
 
83
  Question: {question}
84
  """
@@ -118,7 +119,6 @@ def run_and_submit_all(profile: Optional[gr.OAuthProfile] = None):
118
 
119
  print(f"🚀 [{idx}/{total}] Task: {tid}")
120
 
121
- # 執行 Agent
122
  ans = agent_wrapper(q)
123
 
124
  answers.append({"task_id": tid, "submitted_answer": ans})
@@ -139,8 +139,8 @@ def run_and_submit_all(profile: Optional[gr.OAuthProfile] = None):
139
  except Exception as e:
140
  return f"Submit error: {str(e)}", pd.DataFrame(logs)
141
 
142
- with gr.Blocks(title="Final Agent (Truncated)") as demo:
143
- gr.Markdown("# 🚀 Final Agent (Anti-Hang Version)")
144
  with gr.Row():
145
  gr.LoginButton()
146
  btn = gr.Button("Run Evaluation", variant="primary")
 
2
  import gradio as gr
3
  import requests
4
  import pandas as pd
5
+ import time
6
  from typing import Optional
7
  from smolagents import CodeAgent, OpenAIServerModel, tool
8
 
9
+ # --- 搜尋工具 (修正安裝指令版) ---
10
  try:
11
  from duckduckgo_search import DDGS
12
  except ImportError:
13
  import os
14
+ # 修正:這裡必須用完整的套件名稱
15
+ os.system('pip install duckduckgo-search')
16
  from duckduckgo_search import DDGS
17
 
18
  @tool
19
  def web_search(query: str) -> str:
20
  """
21
+ Lite search with strict token limits for Groq free tier.
22
  Args:
23
  query: The search query string.
24
  """
25
  print(f"🕵️ [Debug] Searching: {query}")
26
  try:
27
+ # 強制冷靜 1
28
+ time.sleep(1.0)
29
+
30
  with DDGS() as ddgs:
31
+ # 使用 lite 模式繞過封鎖
32
  results = list(ddgs.text(query, max_results=1, backend="lite"))
33
 
34
  if not results:
35
+ return "No results. Guess answer."
36
 
37
+ # 截斷內容,節省 Token
38
+ first = results[0]
39
+ summary = f"Title: {first.get('title','')}\nInfo: {first.get('body','')}"
40
+ return summary[:400]
 
 
 
 
41
 
42
  except Exception as e:
43
  print(f"❌ Error: {e}")
 
54
  self.agent = None
55
  return
56
 
 
57
  model = OpenAIServerModel(
58
  model_id="llama-3.3-70b-versatile",
59
  api_base="https://api.groq.com/openai/v1",
 
63
  self.agent = CodeAgent(
64
  tools=[web_search],
65
  model=model,
66
+ max_steps=2,
67
  verbosity_level=1
68
  )
69
 
 
72
  return "Error: GROQ_API_KEY not configured."
73
 
74
  try:
75
+ # 強制冷靜 2 秒
76
+ time.sleep(2.0)
77
+
78
  prompt = f"""
79
  Task: Answer concisely.
80
  1. Search ONCE.
81
+ 2. If search fails, GUESS.
82
+ 3. Keep answer under 20 words.
83
 
84
  Question: {question}
85
  """
 
119
 
120
  print(f"🚀 [{idx}/{total}] Task: {tid}")
121
 
 
122
  ans = agent_wrapper(q)
123
 
124
  answers.append({"task_id": tid, "submitted_answer": ans})
 
139
  except Exception as e:
140
  return f"Submit error: {str(e)}", pd.DataFrame(logs)
141
 
142
+ with gr.Blocks(title="Final Agent (Fixed Import)") as demo:
143
+ gr.Markdown("# 🚀 Final Agent (Fixed Import)")
144
  with gr.Row():
145
  gr.LoginButton()
146
  btn = gr.Button("Run Evaluation", variant="primary")