DrishtiSharma commited on
Commit
9144783
Β·
verified Β·
1 Parent(s): 58db0e0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -11
app.py CHANGED
@@ -6,7 +6,7 @@ from langgraph.graph.message import add_messages
6
  from langchain_openai import ChatOpenAI
7
  from langchain_community.tools.tavily_search import TavilySearchResults
8
  from langchain_core.messages import HumanMessage, ToolMessage, AIMessage
9
- from langgraph.prebuilt import ToolNode, tools_condition
10
  import os
11
 
12
  # Streamlit UI Header
@@ -31,20 +31,18 @@ class State(TypedDict):
31
  # Initialize LLM and Tools
32
  llm = ChatOpenAI(model="gpt-4o-mini")
33
  tool = TavilySearchResults(max_results=2)
34
- tools = [tool]
35
- llm_with_tools = llm.bind_tools(tools)
36
 
37
- # Define Agent Function
38
  def Agent(state: State):
39
  st.sidebar.write("Agent Input State:", state["messages"])
40
  response = llm_with_tools.invoke(state["messages"])
41
  st.sidebar.write("Agent Response:", response)
42
  return {"messages": [response]}
43
 
44
- # Define Tool Execution Node
45
  def ExecuteTools(state: State):
46
- last_message = state["messages"][-1]
47
- tool_calls = last_message.tool_calls
48
  responses = []
49
 
50
  if tool_calls:
@@ -54,9 +52,9 @@ def ExecuteTools(state: State):
54
  st.sidebar.write("Tool Call Detected:", tool_name, args)
55
 
56
  if tool_name == "tavily_search_results_json":
57
- response = tool.invoke(args)
58
- st.sidebar.write("Tool Response:", response)
59
- responses.append(ToolMessage(content=str(response), tool_call_id=call["id"]))
60
  return {"messages": responses}
61
 
62
  # Memory Checkpoint
@@ -67,7 +65,11 @@ graph = StateGraph(State)
67
  graph.add_node("Agent", Agent)
68
  graph.add_node("ExecuteTools", ExecuteTools)
69
 
70
- graph.add_conditional_edges("Agent", tools_condition, {"True": "ExecuteTools"})
 
 
 
 
71
  graph.add_edge("ExecuteTools", "Agent")
72
  graph.set_entry_point("Agent")
73
 
 
6
  from langchain_openai import ChatOpenAI
7
  from langchain_community.tools.tavily_search import TavilySearchResults
8
  from langchain_core.messages import HumanMessage, ToolMessage, AIMessage
9
+ from langgraph.prebuilt import tools_condition
10
  import os
11
 
12
  # Streamlit UI Header
 
31
  # Initialize LLM and Tools
32
  llm = ChatOpenAI(model="gpt-4o-mini")
33
  tool = TavilySearchResults(max_results=2)
34
+ llm_with_tools = llm.bind_tools([tool])
 
35
 
36
+ # Agent Node
37
  def Agent(state: State):
38
  st.sidebar.write("Agent Input State:", state["messages"])
39
  response = llm_with_tools.invoke(state["messages"])
40
  st.sidebar.write("Agent Response:", response)
41
  return {"messages": [response]}
42
 
43
+ # Tools Execution Node
44
  def ExecuteTools(state: State):
45
+ tool_calls = state["messages"][-1].tool_calls
 
46
  responses = []
47
 
48
  if tool_calls:
 
52
  st.sidebar.write("Tool Call Detected:", tool_name, args)
53
 
54
  if tool_name == "tavily_search_results_json":
55
+ tool_response = tool.invoke({"query": args["query"]})
56
+ st.sidebar.write("Tool Response:", tool_response)
57
+ responses.append(ToolMessage(content=str(tool_response), tool_call_id=call["id"]))
58
  return {"messages": responses}
59
 
60
  # Memory Checkpoint
 
65
  graph.add_node("Agent", Agent)
66
  graph.add_node("ExecuteTools", ExecuteTools)
67
 
68
+ # Add Conditional Edge to Check for Tools
69
+ def custom_tools_condition(state: State):
70
+ return "True" if state["messages"][-1].tool_calls else "False"
71
+
72
+ graph.add_conditional_edges("Agent", custom_tools_condition, {"True": "ExecuteTools", "False": "Agent"})
73
  graph.add_edge("ExecuteTools", "Agent")
74
  graph.set_entry_point("Agent")
75