Update app.py
Browse files
app.py
CHANGED
@@ -103,7 +103,17 @@ class BasicAgent:
|
|
103 |
print(f"[{i}] {s[:120]}…")
|
104 |
state["history"].append({"step": "search", "results": results})
|
105 |
state["logs"]["search"] = {"query": state["search_query"], "results": results}
|
106 |
-
state["
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
return state
|
108 |
|
109 |
def _extract_boxed_answer(self, text: str) -> str:
|
@@ -135,17 +145,19 @@ class BasicAgent:
|
|
135 |
sg = StateGraph(state_schema=AgentState)
|
136 |
sg.add_node("analyze", self._analyze_question)
|
137 |
sg.add_node("search", self._perform_search)
|
|
|
138 |
sg.add_node("answer", self._generate_answer)
|
139 |
|
140 |
# transitions
|
141 |
sg.add_edge("analyze", "search")
|
142 |
sg.add_edge("analyze", "answer")
|
143 |
-
sg.add_edge("search", "
|
144 |
|
145 |
def router(state: AgentState):
|
146 |
return state["current_step"]
|
147 |
|
148 |
sg.add_conditional_edges("analyze", router, {"search": "search", "answer": "answer"})
|
|
|
149 |
sg.set_entry_point("analyze")
|
150 |
sg.set_finish_point("answer")
|
151 |
return sg.compile()
|
|
|
103 |
print(f"[{i}] {s[:120]}…")
|
104 |
state["history"].append({"step": "search", "results": results})
|
105 |
state["logs"]["search"] = {"query": state["search_query"], "results": results}
|
106 |
+
state["needs_search"] = not results # Set to True if no results found
|
107 |
+
state["current_step"] = "recheck"
|
108 |
+
return state
|
109 |
+
|
110 |
+
def _re_evaluate(self, state: AgentState) -> AgentState:
|
111 |
+
"""If search returned nothing, reformulate a shorter query."""
|
112 |
+
if state["needs_search"]:
|
113 |
+
state["search_query"] = tighten(state["question"])
|
114 |
+
state["current_step"] = "search"
|
115 |
+
else:
|
116 |
+
state["current_step"] = "answer"
|
117 |
return state
|
118 |
|
119 |
def _extract_boxed_answer(self, text: str) -> str:
|
|
|
145 |
sg = StateGraph(state_schema=AgentState)
|
146 |
sg.add_node("analyze", self._analyze_question)
|
147 |
sg.add_node("search", self._perform_search)
|
148 |
+
sg.add_node("recheck", self._re_evaluate)
|
149 |
sg.add_node("answer", self._generate_answer)
|
150 |
|
151 |
# transitions
|
152 |
sg.add_edge("analyze", "search")
|
153 |
sg.add_edge("analyze", "answer")
|
154 |
+
sg.add_edge("search", "recheck")
|
155 |
|
156 |
def router(state: AgentState):
|
157 |
return state["current_step"]
|
158 |
|
159 |
sg.add_conditional_edges("analyze", router, {"search": "search", "answer": "answer"})
|
160 |
+
sg.add_conditional_edges("recheck", router, {"search": "search", "answer": "answer"})
|
161 |
sg.set_entry_point("analyze")
|
162 |
sg.set_finish_point("answer")
|
163 |
return sg.compile()
|