Bird
Raised Fist0
Agentic AIml~20 mins

Building custom tools in Agentic AI - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Agentic AI Custom Tools Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Tool Integration in Agentic AI

Which of the following best describes the primary purpose of building custom tools in an agentic AI system?

ATo replace the AI's core reasoning engine with simpler rules
BTo increase the AI's training dataset size automatically
CTo reduce the AI model's size for faster inference
DTo enable the AI to perform specific tasks by interacting with external systems or APIs
Attempts:
2 left
💡 Hint

Think about why an AI would need to connect to outside services or perform actions beyond just generating text.

Predict Output
intermediate
2:00remaining
Output of a Custom Tool Invocation

Given the following Python code snippet for a custom tool in an agentic AI framework, what will be the output when the tool is called with input '5'?

Agentic AI
def multiply_by_two(input_value):
    return f"Result: {int(input_value) * 2}"

output = multiply_by_two('5')
print(output)
AResult: 10
BResult: 25
CResult: 5
DTypeError
Attempts:
2 left
💡 Hint

Check how the input string is converted and multiplied.

Hyperparameter
advanced
2:00remaining
Choosing Timeout for External Tool Calls

When building a custom tool that calls an external API within an agentic AI system, which timeout setting is most appropriate to balance responsiveness and reliability?

ASet timeout to 0.1 seconds to ensure the AI never waits long
BSet timeout to 5 seconds to allow reasonable wait but avoid long delays
CSet timeout to 30 seconds to allow slow responses without blocking
DDo not set a timeout to wait indefinitely for the API response
Attempts:
2 left
💡 Hint

Consider user experience and network variability.

Metrics
advanced
2:00remaining
Evaluating Custom Tool Effectiveness

Which metric is most suitable to evaluate the success of a custom tool integrated into an agentic AI that performs data retrieval tasks?

AAccuracy of the AI's language generation
BLatency of the tool's response time
CPrecision and recall of the retrieved data matching user queries
DNumber of parameters in the AI model
Attempts:
2 left
💡 Hint

Think about how well the tool returns relevant information.

🔧 Debug
expert
3:00remaining
Debugging a Custom Tool Integration Failure

Consider this Python code snippet for a custom tool in an agentic AI system that queries a weather API. The tool always returns 'None' instead of the expected temperature string. What is the most likely cause?

import requests

def get_temperature(city):
    response = requests.get(f"https://api.weather.com/temp?city={city}")
    if response.status_code == 200:
        data = response.json()
        return data['temperature']

print(get_temperature('London'))
AThe API URL is incorrect or missing required parameters, causing no valid data returned
BThe function does not convert the temperature to string before returning
CThe requests library is not imported correctly
DThe function should use POST instead of GET method
Attempts:
2 left
💡 Hint

Check if the API URL and parameters match the expected API specification.

Practice

(1/5)
1. What is the main purpose of building custom tools for an AI agent?
easy
A. To change the AI's language automatically
B. To add special skills that help the AI perform specific tasks
C. To reduce the size of the AI model
D. To make the AI run faster on any computer

Solution

  1. Step 1: Understand what custom tools do

    Custom tools add new abilities or skills to an AI, making it better at certain jobs.
  2. Step 2: Compare options to the purpose

    Only To add special skills that help the AI perform specific tasks talks about adding special skills, which matches the purpose of custom tools.
  3. Final Answer:

    To add special skills that help the AI perform specific tasks -> Option B
  4. Quick Check:

    Custom tools = add special skills [OK]
Hint: Custom tools add new skills to AI for tasks [OK]
Common Mistakes:
  • Thinking custom tools speed up AI generally
  • Confusing tool purpose with model size
  • Assuming tools change AI language automatically
2. Which of the following is the correct way to define a custom tool in Python for an AI agent?
easy
A. tool = Tool(name='search', func=search_function)
B. tool = Tool('search', func=search_function)
C. tool = Tool(description='Find info', func=search_function)
D. tool = Tool(name='search', description='Find info', func=search_function)

Solution

  1. Step 1: Recall required fields for a custom tool

    A custom tool needs a name, description, and a function to work properly.
  2. Step 2: Check which option includes all three

    Only tool = Tool(name='search', description='Find info', func=search_function) has name, description, and func parameters correctly set.
  3. Final Answer:

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

    Tool needs name, description, and func [OK]
Hint: Include name, description, and func when defining tools [OK]
Common Mistakes:
  • Omitting description or name
  • Passing parameters in wrong order
  • Using wrong parameter names
3. Given this Python code for a custom tool, what will be the output when calling tool.func('hello')?
def shout(text):
    return text.upper() + '!!!'
tool = Tool(name='shout', description='Make text loud', func=shout)
medium
A. 'HELLO!!!'
B. 'hello!!!'
C. 'hello'
D. Error: func is not callable

Solution

  1. Step 1: Understand the function behavior

    The function shout converts text to uppercase and adds three exclamation marks.
  2. Step 2: Apply the function to 'hello'

    Calling shout('hello') returns 'HELLO!!!'. Since tool.func points to shout, tool.func('hello') does the same.
  3. Final Answer:

    'HELLO!!!' -> Option A
  4. Quick Check:

    shout('hello') = 'HELLO!!!' [OK]
Hint: Check function logic and apply input to predict output [OK]
Common Mistakes:
  • Ignoring uppercase conversion
  • Missing exclamation marks
  • Assuming func is not callable
4. You wrote this custom tool but get an error when using it. What is the likely problem?
def add_numbers(a, b):
    return a + b
tool = Tool(name='adder', description='Add two numbers', func=add_numbers)
result = tool.func(5)
medium
A. Tool name must be unique
B. Function add_numbers should not return a value
C. Missing one argument when calling tool.func
D. Description is too short

Solution

  1. Step 1: Check function parameters

    add_numbers requires two inputs: a and b.
  2. Step 2: Check how tool.func is called

    tool.func(5) provides only one argument, causing an error for missing the second argument.
  3. Final Answer:

    Missing one argument when calling tool.func -> Option C
  4. Quick Check:

    Function needs 2 args, only 1 given [OK]
Hint: Match function parameters with call arguments [OK]
Common Mistakes:
  • Ignoring function argument count
  • Thinking description length causes error
  • Assuming tool name uniqueness causes runtime error
5. You want to build a custom tool that summarizes text by returning the first 10 words. Which code correctly defines this tool's function?
hard
A. def summarize(text): return ' '.join(text.split()[:10])
B. def summarize(text): return text[:10]
C. def summarize(text): return text.split()[-10:]
D. def summarize(text): return len(text.split())

Solution

  1. Step 1: Understand the goal of the function

    The function should return the first 10 words, not characters or last words.
  2. Step 2: Analyze each option

    def summarize(text): return ' '.join(text.split()[:10]) splits text into words and joins the first 10 words correctly. def summarize(text): return text[:10] returns first 10 characters, not words. def summarize(text): return text.split()[-10:] returns last 10 words. def summarize(text): return len(text.split()) returns word count, not summary.
  3. Final Answer:

    def summarize(text): return ' '.join(text.split()[:10]) -> Option A
  4. Quick Check:

    First 10 words = def summarize(text): return ' '.join(text.split()[:10]) [OK]
Hint: Split text and join first 10 words for summary [OK]
Common Mistakes:
  • Returning characters instead of words
  • Taking last words instead of first
  • Returning word count instead of summary