selim-ba commited on
Commit
4e84416
·
verified ·
1 Parent(s): d09aa88

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -27
app.py CHANGED
@@ -142,19 +142,23 @@ class SuperSmartAgent:
142
  return state
143
 
144
  def use_web_search(state):
145
- query = state["question"].replace("search the web for", "").replace("look up", "").strip()
 
146
  print(f"Searching DuckDuckGo for: {query}")
147
 
148
- with DDGS() as ddgs:
149
- results = ddgs.text(query, max_results=3)
150
-
151
- if results:
152
- snippets = [r['title'] + ": " + r.get('body', '') for r in results]
153
- state["response"] = "\n".join(snippets)
154
- else:
155
- state["response"] = "No results found."
156
 
 
 
 
 
 
 
 
157
  return state
 
158
 
159
  def use_video_analysis(state):
160
  import re
@@ -221,11 +225,28 @@ class SuperSmartAgent:
221
  builder.add_node("fallback", fallback)
222
 
223
  # Edges
224
- ####################################################
225
- builder.set_entry_point("check_reversed")
226
- builder.add_edge("check_reversed", "fix_question")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
 
 
228
  builder.add_edge("fix_question", "check_riddle_or_trick")
 
229
  builder.add_conditional_edges(
230
  "check_riddle_or_trick",
231
  lambda s: "solve_riddle" if s["is_riddle"] else "check_python_suitability"
@@ -238,21 +259,7 @@ class SuperSmartAgent:
238
  )
239
  builder.add_edge("generate_code", END)
240
  builder.add_edge("fallback", END)
241
- #####################################################
242
- builder.add_node("check_special_tools", check_special_tools)
243
- builder.add_node("use_web_search", use_web_search)
244
- builder.add_node("use_video_analysis", use_video_analysis)
245
-
246
- builder.set_entry_point("check_special_tools")
247
- builder.add_conditional_edges(
248
- "check_special_tools",
249
- lambda s: "use_web_search" if s.get("use_tool") == "web"
250
- else "use_video_analysis" if s.get("use_tool") == "video"
251
- else "check_reversed"
252
- )
253
-
254
- builder.add_edge("use_web_search", END)
255
- builder.add_edge("use_video_analysis", END)
256
 
257
  graph = builder.compile()
258
  return graph
 
142
  return state
143
 
144
  def use_web_search(state):
145
+ question = state.get("question", "")
146
+ query = question.lower().replace("search the web for", "").replace("look up", "").strip()
147
  print(f"Searching DuckDuckGo for: {query}")
148
 
149
+ try:
150
+ with DDGS() as ddgs:
151
+ results = ddgs.text(query, max_results=3)
 
 
 
 
 
152
 
153
+ if results:
154
+ snippets = [f"{r['title']}: {r.get('body', '')}" for r in results]
155
+ state["response"] = "\n".join(snippets)
156
+ else:
157
+ state["response"] = "No results found."
158
+ except Exception as e:
159
+ state["response"] = f"Web search error: {e}"
160
  return state
161
+
162
 
163
  def use_video_analysis(state):
164
  import re
 
225
  builder.add_node("fallback", fallback)
226
 
227
  # Edges
228
+ #####################################################
229
+ # Entry point: special tool detection first
230
+ builder.set_entry_point("check_special_tools")
231
+
232
+ # Special tool path (web/video) → END
233
+ builder.add_node("check_special_tools", check_special_tools)
234
+ builder.add_node("use_web_search", use_web_search)
235
+ builder.add_node("use_video_analysis", use_video_analysis)
236
+
237
+ builder.add_conditional_edges(
238
+ "check_special_tools",
239
+ lambda s: "use_web_search" if s.get("use_tool") == "web"
240
+ else "use_video_analysis" if s.get("use_tool") == "video"
241
+ else "check_reversed"
242
+ )
243
+ builder.add_edge("use_web_search", END)
244
+ builder.add_edge("use_video_analysis", END)
245
 
246
+ # Reasoning pipeline (for non-tool questions)
247
+ builder.add_edge("check_reversed", "fix_question")
248
  builder.add_edge("fix_question", "check_riddle_or_trick")
249
+
250
  builder.add_conditional_edges(
251
  "check_riddle_or_trick",
252
  lambda s: "solve_riddle" if s["is_riddle"] else "check_python_suitability"
 
259
  )
260
  builder.add_edge("generate_code", END)
261
  builder.add_edge("fallback", END)
262
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
263
 
264
  graph = builder.compile()
265
  return graph