Documentation Index
Fetch the complete documentation index at: https://agno-v2-shaloo-ai-support-link.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
This example demonstrates how to use max_tool_calls_from_history to limit the number of tool calls included in the agent’s context.
This helps manage context size and reduce token costs while still maintaining complete history in your database.
Code
filter_tool_calls_from_history.py
import random
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.openai import OpenAIResponses
def get_weather_for_city(city: str) -> str:
"""Get weather for a city"""
conditions = ["Sunny", "Cloudy", "Rainy", "Snowy", "Foggy", "Windy"]
temperature = random.randint(-10, 35)
condition = random.choice(conditions)
return f"{city}: {temperature}°C, {condition}"
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
tools=[get_weather_for_city],
instructions="You are a weather assistant. Get the weather using the get_weather_for_city tool.",
# Only keep 3 most recent tool calls in context
max_tool_calls_from_history=3,
db=SqliteDb(db_file="tmp/weather_data.db"),
add_history_to_context=True,
markdown=True,
)
cities = [
"Tokyo",
"Delhi",
"Shanghai",
"São Paulo",
"Mumbai",
"Beijing",
"Cairo",
"London",
]
print(
f"{'Run':<5} | {'City':<15} | {'History':<8} | {'Current':<8} | {'In Context':<11} | {'In DB':<8}"
)
print("-" * 90)
for i, city in enumerate(cities, 1):
run_response = agent.run(f"What's the weather in {city}?")
# Count tool calls in context
history_tool_calls = sum(
len(msg.tool_calls)
for msg in run_response.messages
if msg.role == "assistant"
and msg.tool_calls
and getattr(msg, "from_history", False)
)
# Count tool calls from current run
current_tool_calls = sum(
len(msg.tool_calls)
for msg in run_response.messages
if msg.role == "assistant"
and msg.tool_calls
and not getattr(msg, "from_history", False)
)
total_in_context = history_tool_calls + current_tool_calls
# Total tool calls stored in database (unfiltered)
saved_messages = agent.get_session_messages()
saved_tool_calls = (
sum(
len(msg.tool_calls)
for msg in saved_messages
if msg.role == "assistant" and msg.tool_calls
)
if saved_messages
else 0
)
print(
f"{i:<5} | {city:<15} | {history_tool_calls:<8} | {current_tool_calls:<8} | {total_in_context:<11} | {saved_tool_calls:<8}"
)
Usage
Create a Python file
Create filter_tool_calls_from_history.py with the code above.
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activate
Install dependencies
uv pip install -U agno openai sqlalchemy
Export your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"
Run Agent
python filter_tool_calls_from_history.py