Bird
Raised Fist0
LangChainframework~10 mins

Creating tools for agents in LangChain - Visual Walkthrough

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Creating tools for agents
Define Tool Function
Wrap Function as Tool
Create Agent with Tools
Agent Receives Input
Agent Selects Tool
Tool Executes Function
Return Tool Output to Agent
Agent Responds to User
This flow shows how you define a tool function, wrap it as a tool, create an agent with it, and how the agent uses the tool to answer user input.
Execution Sample
LangChain
from langchain.agents import Tool, initialize_agent
from langchain.llms import OpenAI

def add_numbers(a, b):
    return a + b

add_tool = Tool(name="Adder", func=add_numbers, description="Adds two numbers")
Defines a simple add function, wraps it as a LangChain tool named 'Adder'.
Execution Table
StepActionInputTool SelectedFunction CalledOutput
1Agent receives input"Add 3 and 5"Adderadd_numbers(3, 5)8
2Agent returns outputN/AN/AN/A"The sum is 8"
3Agent receives input"Add 10 and 20"Adderadd_numbers(10, 20)30
4Agent returns outputN/AN/AN/A"The sum is 30"
5Agent receives input"Multiply 2 and 3"No matching toolN/AN/A
6Agent returns outputN/AN/AN/A"Sorry, I can't do that."
💡 Agent stops when no matching tool is found or after responding to user input.
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 5Final
input_textNone"Add 3 and 5""Add 10 and 20""Multiply 2 and 3""Multiply 2 and 3"
tool_selectedNoneAdderAdderNoneNone
function_outputNone830NoneNone
agent_responseNone"The sum is 8""The sum is 30""Sorry, I can't do that.""Sorry, I can't do that."
Key Moments - 2 Insights
Why does the agent say it can't do something when I ask to multiply?
Because the agent only has the 'Adder' tool registered, it cannot find a tool to handle multiplication. See execution_table row 5 where no matching tool is found.
How does the agent know which tool to use?
The agent matches the user input to tool descriptions or names. If the input mentions adding, it selects the 'Adder' tool as shown in execution_table rows 1 and 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3. What is the output of the tool function?
A30
B5
C8
DNone
💡 Hint
Check the 'Output' column in execution_table row 3.
At which step does the agent fail to find a matching tool?
AStep 4
BStep 5
CStep 2
DStep 6
💡 Hint
Look for 'No matching tool' in the 'Tool Selected' column.
If you add a multiplication tool, how would the agent respond to 'Multiply 2 and 3'?
AIt would still say it can't do that.
BIt would call the add tool by mistake.
CIt would call the multiplication tool and return 6.
DIt would crash.
💡 Hint
Think about how the agent selects tools based on input matching.
Concept Snapshot
Creating tools for agents:
- Define a Python function for the tool's task.
- Wrap it with langchain's Tool(name, func, description).
- Create an agent with these tools.
- Agent matches user input to tool descriptions.
- Calls the tool function and returns output.
- If no tool matches, agent responds it can't help.
Full Transcript
This visual execution shows how to create tools for agents using LangChain. First, you define a function that does a task, like adding numbers. Then you wrap it as a Tool with a name and description. Next, you create an agent that knows about this tool. When the agent gets user input, it tries to find a tool that matches the request. If it finds one, it calls the tool's function with the right inputs and returns the result. If no tool matches, it tells the user it can't help. The execution table traces inputs, tool selection, function calls, and outputs step-by-step. The variable tracker shows how inputs and outputs change over time. Key moments clarify why the agent might say it can't do something and how it picks tools. The quiz tests understanding of these steps.

Practice

(1/5)
1. What is the main purpose of creating tools for agents in Langchain?
easy
A. To let agents perform specific tasks easily
B. To make the code run faster
C. To store data permanently
D. To create user interfaces

Solution

  1. Step 1: Understand the role of tools in Langchain

    Tools are designed to help agents do tasks by providing specific functions.
  2. Step 2: Identify the main benefit

    By using tools, agents can perform tasks more easily and effectively.
  3. Final Answer:

    To let agents perform specific tasks easily -> Option A
  4. Quick Check:

    Tools help agents do tasks = B [OK]
Hint: Tools help agents do tasks simply and clearly [OK]
Common Mistakes:
  • Thinking tools speed up code execution
  • Confusing tools with data storage
  • Assuming tools create user interfaces
2. Which of the following is the correct way to create a tool in Langchain?
easy
A. tool = Tool(func=search_function)
B. tool = Tool('search', description='Searches data')
C. tool = Tool(name='search', description='Searches data')
D. tool = Tool(name='search', func=search_function, description='Searches data')

Solution

  1. Step 1: Check required parameters for Tool

    The Tool constructor needs a name, a function (func), and a description.
  2. Step 2: Match parameters with options

    Only tool = Tool(name='search', func=search_function, description='Searches data') provides all three: name, func, and description correctly.
  3. Final Answer:

    tool = Tool(name='search', func=search_function, description='Searches data') -> Option D
  4. Quick Check:

    Tool needs name, func, description = C [OK]
Hint: Tool needs name, function, and description to work [OK]
Common Mistakes:
  • Omitting the function parameter
  • Passing parameters in wrong order
  • Leaving out the description
3. Given this code snippet, what will be the output when the agent uses the tool?
def greet(name: str) -> str:
    return f"Hello, {name}!"

from langchain.agents import Tool

greet_tool = Tool(name='greet', func=greet, description='Greets a person')

result = greet_tool.func('Alice')
print(result)
medium
A. "greet Alice"
B. "Hello, Alice!"
C. Error: Missing agent call
D. "Hello!"

Solution

  1. Step 1: Understand the greet function behavior

    The greet function returns a string "Hello, {name}!" with the given name.
  2. Step 2: Check how the tool is used

    The tool calls greet with 'Alice', so it returns "Hello, Alice!" which is printed.
  3. Final Answer:

    "Hello, Alice!" -> Option B
  4. Quick Check:

    greet('Alice') = "Hello, Alice!" [OK]
Hint: Tool calls function directly with given input [OK]
Common Mistakes:
  • Thinking the tool prints 'greet Alice'
  • Assuming an error without agent context
  • Ignoring the name parameter in output
4. Identify the error in this tool creation code:
def add_numbers(a, b):
    return a + b

from langchain.agents import Tool

add_tool = Tool(name='add', func=add_numbers, description='Adds two numbers')

result = add_tool.func(5)
print(result)
medium
A. Missing one argument when calling add_tool.func
B. Tool name must be uppercase
C. Description is too short
D. Function add_numbers should not return a value

Solution

  1. Step 1: Check function parameters

    add_numbers requires two arguments: a and b.
  2. Step 2: Check function call

    add_tool.func is called with only one argument (5), missing the second argument.
  3. Final Answer:

    Missing one argument when calling add_tool.func -> Option A
  4. Quick Check:

    Function needs 2 args, call has 1 = D [OK]
Hint: Match function parameters with call arguments count [OK]
Common Mistakes:
  • Ignoring argument count mismatch
  • Thinking tool name case matters
  • Assuming description length causes error
5. You want to create a tool that converts temperatures from Celsius to Fahrenheit for an agent. Which code correctly creates this tool with a clear description?
hard
A. def convert_temp(f): return (f - 32) * 5/9 from langchain.agents import Tool tool = Tool(name='temp_convert', func=convert_temp, description='Converts Fahrenheit to Celsius')
B. def c_to_f(c): return c + 32 from langchain.agents import Tool temp_tool = Tool(name='temp', func=c_to_f, description='Temperature conversion')
C. def c_to_f(c): return (c * 9/5) + 32 from langchain.agents import Tool temp_tool = Tool(name='temp_convert', func=c_to_f, description='Converts Celsius to Fahrenheit')
D. def c_to_f(c): return (c * 9/5) + 32 tool = Tool(func=c_to_f, description='Convert temp')

Solution

  1. Step 1: Verify function correctness

    The c_to_f(c) function returns (c * 9/5) + 32, which correctly converts Celsius to Fahrenheit using the standard formula.
  2. Step 2: Check tool creation parameters

    Tool(name='temp_convert', func=c_to_f, description='Converts Celsius to Fahrenheit') uses name, func, and a clear description matching the task.
  3. Final Answer:

    def c_to_f(c):\n return (c * 9/5) + 32\n\nfrom langchain.agents import Tool\n\ntemp_tool = Tool(name='temp_convert', func=c_to_f, description='Converts Celsius to Fahrenheit') -> Option C
  4. Quick Check:

    Correct formula and clear tool setup = A [OK]
Hint: Use correct formula and full tool parameters [OK]
Common Mistakes:
  • Using wrong temperature formula
  • Omitting tool name or description
  • Confusing Celsius to Fahrenheit with reverse