Designing Agentic Systems with LangChain
Dilini K. Sumanapala, PhD
Founder & AI Engineer, Genverv, Ltd.
# 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]
# 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"])]}
# 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)
# 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)
# Set up a condition to direct from chatbot # to tool or end node graph_builder.add_conditional_edges( "chatbot", tools_condition)
# 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)
Designing Agentic Systems with LangChain