FrancescaScipioni commited on
Commit
021c8f6
·
verified ·
1 Parent(s): 106c681

added final graph function

Browse files
Files changed (1) hide show
  1. agent.py +30 -31
agent.py CHANGED
@@ -141,39 +141,38 @@ retriever_tool = create_retriever_tool(
141
  description="Retrieve similar questions from a vector store."
142
  )
143
 
144
- ## ----- LLM WITH TOOLS ----- ##
145
-
146
- llm = ChatOpenAI(model="gpt-4o", temperature=0)
147
- llm_with_tools = llm.bind_tools(tools)
148
-
149
  ## ----- GRAPH PIPELINE ----- ##
150
 
151
- def assistant(state: MessagesState):
152
- """Assistant node to generate answers."""
153
- return {"messages": [llm_with_tools.invoke(state["messages"])]}
154
-
155
- # Use a retriever node to inject a similar example
156
- def retriever(state: MessagesState):
157
- """Retriever node to provide example context."""
158
- similar = vector_store.similarity_search(state["messages"][0].content)
159
- if not similar:
160
- return {"messages": [sys_msg] + state["messages"]}
161
- example = HumanMessage(content=f"Similar Q&A for context:\n\n{similar[0].page_content}")
162
- return {"messages": [sys_msg] + state["messages"] + [example]}
163
-
164
- # Build graph
165
- builder = StateGraph(MessagesState)
166
- builder.add_node("retriever", retriever)
167
- builder.add_node("assistant", assistant)
168
- builder.add_node("tools", ToolNode(tools))
169
-
170
- builder.add_edge(START, "retriever")
171
- builder.add_edge("retriever", "assistant")
172
- builder.add_conditional_edges("assistant", tools_condition)
173
- builder.add_edge("tools", "assistant")
174
-
175
- graph = builder.compile()
176
- return graph
 
 
 
 
177
 
178
  ## ----- TESTING (Optional) ----- ##
179
 
 
141
  description="Retrieve similar questions from a vector store."
142
  )
143
 
 
 
 
 
 
144
  ## ----- GRAPH PIPELINE ----- ##
145
 
146
+ def graph():
147
+ llm = ChatOpenAI(model="gpt-4o", temperature=0)
148
+ llm_with_tools = llm.bind_tools(tools)
149
+
150
+ def assistant(state: MessagesState):
151
+ """Assistant node to generate answers."""
152
+ return {"messages": [llm_with_tools.invoke(state["messages"])]}
153
+
154
+ # Use a retriever node to inject a similar example
155
+ def retriever(state: MessagesState):
156
+ """Retriever node to provide example context."""
157
+ similar = vector_store.similarity_search(state["messages"][0].content)
158
+ if not similar:
159
+ return {"messages": [sys_msg] + state["messages"]}
160
+ example = HumanMessage(content=f"Similar Q&A for context:\n\n{similar[0].page_content}")
161
+ return {"messages": [sys_msg] + state["messages"] + [example]}
162
+
163
+ # Build graph
164
+ builder = StateGraph(MessagesState)
165
+ builder.add_node("retriever", retriever)
166
+ builder.add_node("assistant", assistant)
167
+ builder.add_node("tools", ToolNode(tools))
168
+
169
+ builder.add_edge(START, "retriever")
170
+ builder.add_edge("retriever", "assistant")
171
+ builder.add_conditional_edges("assistant", tools_condition)
172
+ builder.add_edge("tools", "assistant")
173
+
174
+ return builder.compile()
175
+
176
 
177
  ## ----- TESTING (Optional) ----- ##
178