BoddyGus commited on
Commit
359e39c
·
verified ·
1 Parent(s): 9862c25

Updating app.py with chat_with_tools

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -13,6 +13,7 @@ from langgraph.prebuilt import ToolNode, tools_condition
13
  from langchain_core.messages import AnyMessage, HumanMessage, AIMessage
14
  from typing import TypedDict, Annotated
15
  from langgraph.graph.message import add_messages
 
16
 
17
  # (Keep Constants as is)
18
  # --- Constants ---
@@ -20,30 +21,35 @@ DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
20
 
21
  # --- Basic Agent Definition ---
22
  # ----- THIS IS WERE YOU CAN BUILD WHAT YOU WANT ------
 
 
23
  class BasicAgent:
24
  def __init__(self):
25
  print("BasicAgent initialized.")
26
 
27
- # initializing the DuckDuckGo tool
28
- self.search_tool = DuckDuckGoSearchRun()
29
- self.tools = [self.search_tool]
 
 
 
30
 
31
- # building LangGraph agent
32
  class AgentState(TypedDict):
33
  messages: Annotated[list[AnyMessage], add_messages]
34
 
35
  def assistant(state: AgentState):
36
- user_message = state["messages"][-1]
37
- if isinstance(user_message, HumanMessage):
38
- result = self.search_tool.invoke(user_message.content)
39
- return {"messages": [AIMessage(content=result)]}
40
- return {"messages": [AIMessage(content="I can only answer human questions.")]}
41
  builder = StateGraph(AgentState)
42
  builder.add_node("assistant", assistant)
 
43
  builder.add_edge(START, "assistant")
 
 
44
  self.alfred = builder.compile()
45
 
46
-
47
  def __call__(self, question: str) -> str:
48
  print(f"Agent received question (first 50 chars): {question[:50]}...")
49
  messages = [HumanMessage(content=question)]
 
13
  from langchain_core.messages import AnyMessage, HumanMessage, AIMessage
14
  from typing import TypedDict, Annotated
15
  from langgraph.graph.message import add_messages
16
+ from langchain_ollama.chat_models import ChatOllama
17
 
18
  # (Keep Constants as is)
19
  # --- Constants ---
 
21
 
22
  # --- Basic Agent Definition ---
23
  # ----- THIS IS WERE YOU CAN BUILD WHAT YOU WANT ------
24
+ class BasicAgent:
25
+
26
  class BasicAgent:
27
  def __init__(self):
28
  print("BasicAgent initialized.")
29
 
30
+ # Initialize the DuckDuckGo search tool
31
+ search_tool = DuckDuckGoSearchRun()
32
+ tools = [search_tool]
33
+
34
+ chat = ChatOllama(model="qwen2.5-coder:7b", temperature=0, base_url="http://localhost:11434")
35
+ chat_with_tools = chat.bind_tools(tools)
36
 
 
37
  class AgentState(TypedDict):
38
  messages: Annotated[list[AnyMessage], add_messages]
39
 
40
  def assistant(state: AgentState):
41
+ return {
42
+ "messages": [chat_with_tools.invoke(state["messages"])],
43
+ }
44
+
 
45
  builder = StateGraph(AgentState)
46
  builder.add_node("assistant", assistant)
47
+ builder.add_node("tools", ToolNode(tools))
48
  builder.add_edge(START, "assistant")
49
+ builder.add_conditional_edges("assistant", tools_condition)
50
+ builder.add_edge("tools", "assistant")
51
  self.alfred = builder.compile()
52
 
 
53
  def __call__(self, question: str) -> str:
54
  print(f"Agent received question (first 50 chars): {question[:50]}...")
55
  messages = [HumanMessage(content=question)]