BocchiMing commited on
Commit
df57d0c
·
verified ·
1 Parent(s): 7dae0e6

Update agent.py

Browse files
Files changed (1) hide show
  1. agent.py +38 -37
agent.py CHANGED
@@ -181,43 +181,44 @@ tools = [
181
  arvix_search,
182
  create_retriever_tool
183
  ]
184
-
185
- llm = init_chat_model("google_genai:gemini-2.0-flash",google_api_key=os.environ["GOOGLE_API_KEY"])
186
- llm_with_tools = llm.bind_tools(tools)
187
-
188
- sys_msg = SystemMessage(content=system_prompt)
189
-
190
- class MessagesState(TypedDict):
191
- messages: Annotated[list[AnyMessage], add_messages]
192
- # Node
193
- def assistant(state: MessagesState):
194
- """Assistant node"""
195
- return {"messages": [llm_with_tools.invoke(state["messages"])]}
196
- def retriever(state: MessagesState):
197
- """Retriever node"""
198
- similar_question = vector_store.similarity_search(state["messages"][0].content)
199
- example_msg = HumanMessage(
200
- content=f"Here I provide a question and answer using query for reference if it is similar to question below: \n\n{similar_question[0].page_content}",
201
- )
202
- return {"messages": [sys_msg] + state["messages"] + [example_msg]}
203
-
204
- # Build graph
205
- builder = StateGraph(MessagesState)
206
- builder.add_node("retriever", retriever)
207
- builder.add_node("assistant", assistant)
208
- builder.add_node("tools", ToolNode(tools))
209
- builder.add_edge(START, "retriever")
210
- builder.add_edge("retriever", "assistant")
211
- builder.add_conditional_edges(
212
- "assistant",
213
- # If the latest message (result) from assistant is a tool call -> tools_condition routes to tools
214
- # If the latest message (result) from assistant is a not a tool call -> tools_condition routes to END
215
- tools_condition,
216
- )
217
- builder.add_edge("tools", "assistant")
218
-
219
- # Compile graph
220
- graph = builder.compile()
 
221
 
222
  if __name__ == "__main__":
223
  question = "When was a picture of St. Thomas Aquinas first added to the Wikipedia page on the Principle of double effect?"
 
181
  arvix_search,
182
  create_retriever_tool
183
  ]
184
+ def build_graph()
185
+ """Build the graph"""
186
+ llm = init_chat_model("google_genai:gemini-2.0-flash",google_api_key=os.environ["GOOGLE_API_KEY"])
187
+ llm_with_tools = llm.bind_tools(tools)
188
+
189
+ sys_msg = SystemMessage(content=system_prompt)
190
+
191
+ class MessagesState(TypedDict):
192
+ messages: Annotated[list[AnyMessage], add_messages]
193
+ # Node
194
+ def assistant(state: MessagesState):
195
+ """Assistant node"""
196
+ return {"messages": [llm_with_tools.invoke(state["messages"])]}
197
+ def retriever(state: MessagesState):
198
+ """Retriever node"""
199
+ similar_question = vector_store.similarity_search(state["messages"][0].content)
200
+ example_msg = HumanMessage(
201
+ content=f"Here I provide a question and answer using query for reference if it is similar to question below: \n\n{similar_question[0].page_content}",
202
+ )
203
+ return {"messages": [sys_msg] + state["messages"] + [example_msg]}
204
+
205
+ # Build graph
206
+ builder = StateGraph(MessagesState)
207
+ builder.add_node("retriever", retriever)
208
+ builder.add_node("assistant", assistant)
209
+ builder.add_node("tools", ToolNode(tools))
210
+ builder.add_edge(START, "retriever")
211
+ builder.add_edge("retriever", "assistant")
212
+ builder.add_conditional_edges(
213
+ "assistant",
214
+ # If the latest message (result) from assistant is a tool call -> tools_condition routes to tools
215
+ # If the latest message (result) from assistant is a not a tool call -> tools_condition routes to END
216
+ tools_condition,
217
+ )
218
+ builder.add_edge("tools", "assistant")
219
+
220
+ # Compile graph
221
+ return builder.compile()
222
 
223
  if __name__ == "__main__":
224
  question = "When was a picture of St. Thomas Aquinas first added to the Wikipedia page on the Principle of double effect?"