rwayz commited on
Commit
55656a0
·
verified ·
1 Parent(s): e05ae4f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -17
app.py CHANGED
@@ -12,10 +12,9 @@ from langchain_openai import ChatOpenAI
12
  from langchain_community.agent_toolkits import create_sql_agent
13
  from huggingface_hub import InferenceClient
14
  from langgraph.graph import StateGraph, END
15
- from langgraph.prebuilt import ToolExecutor, ToolInvocation
16
  from langchain_core.tools import tool
17
  from langgraph.checkpoint.sqlite import SqliteSaver
18
- from langchain.agents import tool
19
  import gradio as gr
20
 
21
  load_dotenv()
@@ -178,28 +177,28 @@ def refine_answer(answer: str, question: str) -> str:
178
  )
179
  return response["choices"][0]["message"]["content"]
180
 
181
- tool_executor = ToolExecutor(tools=[llama_to_sql, execute_sql_query, refine_answer])
182
 
183
  class GraphState(dict):
184
  question: str
185
- sql_query: str
186
- sql_response: str
187
- final_answer: str
188
 
189
  async def node_generate_sql(state: GraphState):
190
- result = await tool_executor.ainvoke({"question": state["question"]})
191
- state["sql_query"] = result["output"]
192
- return state
193
 
194
  async def node_execute_sql(state: GraphState):
195
- result = await tool_executor.ainvoke({"sql_query": state["sql_query"]})
196
- state["sql_response"] = result["output"]
197
- return state
198
 
199
  async def node_refine_if_enabled(state: GraphState):
200
- result = await tool_executor.ainvoke({"answer": state["sql_response"], "question": state["question"]})
201
- state["final_answer"] = result["output"]
202
- return state
203
 
204
  builder = StateGraph(GraphState)
205
  builder.add_node("generate_sql", node_generate_sql)
@@ -214,9 +213,9 @@ memory = SqliteSaver("graph_checkpoint")
214
  graph = builder.compile(checkpointer=memory)
215
 
216
  async def async_chatbot_response(question, model_name):
217
- inputs = {"question": question, "model": model_name}
218
  result = await graph.ainvoke(inputs)
219
- return result["final_answer"]
220
 
221
  def toggle_history():
222
  global show_history_flag
 
12
  from langchain_community.agent_toolkits import create_sql_agent
13
  from huggingface_hub import InferenceClient
14
  from langgraph.graph import StateGraph, END
15
+ from langgraph.prebuilt import ToolNode
16
  from langchain_core.tools import tool
17
  from langgraph.checkpoint.sqlite import SqliteSaver
 
18
  import gradio as gr
19
 
20
  load_dotenv()
 
177
  )
178
  return response["choices"][0]["message"]["content"]
179
 
180
+ tool_node = ToolNode([llama_to_sql, execute_sql_query, refine_answer])
181
 
182
  class GraphState(dict):
183
  question: str
184
+ tool: str
185
+ tool_input: dict
186
+ result: str
187
 
188
  async def node_generate_sql(state: GraphState):
189
+ state["tool"] = "llama_to_sql"
190
+ state["tool_input"] = {"question": state["question"]}
191
+ return await tool_node.ainvoke(state)
192
 
193
  async def node_execute_sql(state: GraphState):
194
+ state["tool"] = "execute_sql_query"
195
+ state["tool_input"] = {"sql_query": state["result"]}
196
+ return await tool_node.ainvoke(state)
197
 
198
  async def node_refine_if_enabled(state: GraphState):
199
+ state["tool"] = "refine_answer"
200
+ state["tool_input"] = {"answer": state["result"], "question": state["question"]}
201
+ return await tool_node.ainvoke(state)
202
 
203
  builder = StateGraph(GraphState)
204
  builder.add_node("generate_sql", node_generate_sql)
 
213
  graph = builder.compile(checkpointer=memory)
214
 
215
  async def async_chatbot_response(question, model_name):
216
+ inputs = {"question": question}
217
  result = await graph.ainvoke(inputs)
218
+ return result["result"]
219
 
220
  def toggle_history():
221
  global show_history_flag