Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -142,19 +142,23 @@ class SuperSmartAgent:
|
|
| 142 |
return state
|
| 143 |
|
| 144 |
def use_web_search(state):
|
| 145 |
-
|
|
|
|
| 146 |
print(f"Searching DuckDuckGo for: {query}")
|
| 147 |
|
| 148 |
-
|
| 149 |
-
|
| 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 |
-
|
| 226 |
-
builder.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|