Adding external tools to a chatbot

Designing Agentic Systems with LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Externals tools with LangGraph

  Desktop monitor with microchip graphic in the centre with "API" written in the middle.

     

  • API tools for chatbots

     
    • News
    • Databases
    • Social media
    • Etc.
Designing Agentic Systems with LangChain

Adding a Wikipedia tool

People reading, sat on large books.

  Wikipedia icon.

Designing Agentic Systems with LangChain

Adding a Wikipedia tool

# Modules for building a Wikipedia tool
from langchain_community.utilities import WikipediaAPIWrapper
from langchain_community.tools import WikipediaQueryRun


# Initialize Wikipedia API wrapper to fetch top 1 result api_wrapper = WikipediaAPIWrapper(top_k_results=1)
# Create a Wikipedia query tool using the API wrapper wikipedia_tool = WikipediaQueryRun(api_wrapper=api_wrapper)
tools = [wikipedia_tool]
Designing Agentic Systems with LangChain

Adding a Wikipedia tool

# Bind the Wikipedia tool to 
# the language model
llm_with_tools = llm.bind_tools(tools)


# Modify chatbot function to # respond with Wikipedia def chatbot(state: State): return {"messages": [llm_with_tools.invoke( state["messages"])]}

   

  • Bind tools

 

  • Update chatbot node

  • Enable Wikipedia

  • LLM decides tool calls

Designing Agentic Systems with LangChain

Other API tools

  Desktop monitor with microchip graphic in the centre with "API" written in the middle.

   

Designing Agentic Systems with LangChain

Adding tool nodes

# Modules for adding tool conditions 
# and nodes
from langgraph.prebuilt import 
ToolNode, tools_condition


# Add chatbot node to the graph graph_builder.add_node("chatbot", chatbot)

Chatbot node.

Designing Agentic Systems with LangChain

Adding tool nodes

# Modules for adding tool conditions 
# and nodes
from langgraph.prebuilt import 
ToolNode, tools_condition

# Add chatbot node to the graph
graph_builder.add_node("chatbot",
                       chatbot)


# Create a ToolNode to handle tool calls # and add it to the graph tool_node = ToolNode(tools=[wikipedia_tool]) graph_builder.add_node("tools", tool_node)

Chabot and tool nodes.

Designing Agentic Systems with LangChain

Adding tool nodes

# Set up a condition to direct from chatbot 
# to tool or end node
graph_builder.add_conditional_edges(
             "chatbot", tools_condition)



Chatbot with END and tool nodes, connected with dashed lines representing conditional edges.

Designing Agentic Systems with LangChain

Adding tool nodes

# Set up a condition to direct from chatbot 
# to tool or end node
graph_builder.add_conditional_edges(
             "chatbot", tools_condition)



# Connect tools back to chatbot and # add START and END nodes graph_builder.add_edge("tools", "chatbot") graph_builder.add_edge(START, "chatbot") graph_builder.add_edge("chatbot", END)

Full chatbot diagram with chatbot node connected to tools and END node, along with START node at the top.

Designing Agentic Systems with LangChain

Let's practice!

Designing Agentic Systems with LangChain

Preparing Video For Download...