Multiple Tool Call Reliability Evaluation
Assert an agent calls both multiply and exponentiate, then relax to subset matching with allow_additional_tool_calls.
Demonstrates reliability checks for multiple expected tool calls, including subset matching with allow_additional_tool_calls.
"""
Multiple Tool Call Reliability Evaluation
=========================================
Demonstrates reliability checks for multiple expected tool calls,
including subset matching with allow_additional_tool_calls.
"""
from typing import Optional
from agno.agent import Agent
from agno.eval.reliability import ReliabilityEval, ReliabilityResult
from agno.models.openai import OpenAIChat
from agno.run.agent import RunOutput
from agno.tools.calculator import CalculatorTools
# ---------------------------------------------------------------------------
# Create Evaluation Functions
# ---------------------------------------------------------------------------
def multiply_and_exponentiate():
agent = Agent(
model=OpenAIChat(id="gpt-5.2"),
tools=[CalculatorTools()],
)
response: RunOutput = agent.run(
"What is 10*5 then to the power of 2? do it step by step"
)
evaluation = ReliabilityEval(
name="Tool Calls Reliability",
agent_response=response,
expected_tool_calls=["multiply", "exponentiate"],
)
result: Optional[ReliabilityResult] = evaluation.run(print_results=True)
if result:
result.assert_passed()
def subset_matching():
"""Only require 'multiply' -- extra tool calls like 'exponentiate' are allowed."""
agent = Agent(
model=OpenAIChat(id="gpt-5.2"),
tools=[CalculatorTools()],
)
response: RunOutput = agent.run(
"What is 10*5 then to the power of 2? do it step by step"
)
evaluation = ReliabilityEval(
name="Subset Tool Calls",
agent_response=response,
expected_tool_calls=["multiply"],
allow_additional_tool_calls=True,
)
result: Optional[ReliabilityResult] = evaluation.run(print_results=True)
if result:
result.assert_passed()
# ---------------------------------------------------------------------------
# Run Evaluation
# ---------------------------------------------------------------------------
if __name__ == "__main__":
multiply_and_exponentiate()
subset_matching()Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openaiExport your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"Run the example
Save the code above as calculator.py, then run:
python calculator.pyFull source: cookbook/09_evals/reliability/multiple_tool_calls/calculator.py