Spaces:
Sleeping
Sleeping
Update agent.py
Browse files
agent.py
CHANGED
@@ -148,11 +148,13 @@ def build_graph(provider: str = "groq") -> StateGraph:
|
|
148 |
]
|
149 |
}
|
150 |
|
151 |
-
|
152 |
-
|
|
|
|
|
|
|
153 |
state["messages"].append(HumanMessage(content=question))
|
154 |
return state
|
155 |
-
|
156 |
# 6.3) Node: assistant β call LLM on current messages
|
157 |
def assistant_node(state: AgentState) -> dict:
|
158 |
ai_msg = llm.invoke(state["messages"])
|
@@ -168,6 +170,15 @@ def build_graph(provider: str = "groq") -> StateGraph:
|
|
168 |
state["messages"].append(HumanMessage(content=result))
|
169 |
return {"messages": state["messages"]}
|
170 |
return tool_node
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
|
172 |
# Instantiate nodes for each tool
|
173 |
calc_node = make_tool_node(calculator)
|
@@ -208,7 +219,12 @@ def build_graph(provider: str = "groq") -> StateGraph:
|
|
208 |
g.add_edge("web", "assistant")
|
209 |
g.add_edge("wiki", "assistant")
|
210 |
g.add_edge("arxiv", "assistant")
|
211 |
-
|
212 |
-
|
|
|
|
|
|
|
|
|
|
|
213 |
|
214 |
return g.compile()
|
|
|
148 |
]
|
149 |
}
|
150 |
|
151 |
+
|
152 |
+
# 6.2) Node: human β stash the GAIA task ID, then append the question
|
153 |
+
def human_node(state: AgentState, id: str, question: str) -> AgentState:
|
154 |
+
# keep the GAIA task id so we can submit it later
|
155 |
+
state["task_id"] = id
|
156 |
state["messages"].append(HumanMessage(content=question))
|
157 |
return state
|
|
|
158 |
# 6.3) Node: assistant β call LLM on current messages
|
159 |
def assistant_node(state: AgentState) -> dict:
|
160 |
ai_msg = llm.invoke(state["messages"])
|
|
|
170 |
state["messages"].append(HumanMessage(content=result))
|
171 |
return {"messages": state["messages"]}
|
172 |
return tool_node
|
173 |
+
# 6.5) Node: answer β pull out the last assistant reply & format submission dict
|
174 |
+
def answer_node(state: AgentState) -> dict[str,str]:
|
175 |
+
# the GAIA runner will do `.items()` on whatever you return here
|
176 |
+
tid = state["task_id"]
|
177 |
+
# grab the last message (could be a BaseMessage or a raw str)
|
178 |
+
last = state["messages"][-1]
|
179 |
+
text = getattr(last, "content", None) or str(last)
|
180 |
+
return { tid: text }
|
181 |
+
|
182 |
|
183 |
# Instantiate nodes for each tool
|
184 |
calc_node = make_tool_node(calculator)
|
|
|
219 |
g.add_edge("web", "assistant")
|
220 |
g.add_edge("wiki", "assistant")
|
221 |
g.add_edge("arxiv", "assistant")
|
222 |
+
|
223 |
+
# register & wire your new answer node
|
224 |
+
g.add_node("answer", answer_node)
|
225 |
+
|
226 |
+
# send assistant β answer β END
|
227 |
+
g.add_edge("assistant", "answer")
|
228 |
+
g.add_edge("answer", END)
|
229 |
|
230 |
return g.compile()
|