Python
Let an agent write, save, and execute Python code and install packages with PythonTools, including include/exclude tool restrictions.
Build intelligent Agno agents with computing autonomy through several file-system and execution functions that allow:
- Run Python code
- Save to file and run
pip installpackages- List files, read files
PythonTools is a pre-built toolkit you import, unlike the custom Python Functions as Tools pattern.
from pathlib import Path
from agno.agent import Agent
from agno.tools.python import PythonTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
# Example 1: All functions available (default behavior)
agent_all = Agent(
name="Python Agent - All Functions",
tools=[PythonTools(base_dir=Path("tmp/python"))],
instructions=["You have access to all Python execution capabilities."],
markdown=True,
)
# Example 2: Include specific functions only
agent_specific = Agent(
name="Python Agent - Specific Functions",
tools=[
PythonTools(
base_dir=Path("tmp/python"),
include_tools=["save_to_file_and_run", "run_python_code"],
)
],
instructions=["You can only save and run Python code, no package installation."],
markdown=True,
)
# Example 3: Exclude dangerous functions
agent_safe = Agent(
name="Python Agent - Safe Mode",
tools=[
PythonTools(
base_dir=Path("tmp/python"),
exclude_tools=["pip_install_package", "uv_pip_install_package"],
)
],
instructions=["You can run Python code but cannot install packages."],
markdown=True,
)
# Use the default agent for examples
agent = agent_all
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
agent.print_response(
"Write a python script for fibonacci series and display the result till the 10th number"
)Execution and returned results
The script calls agent_all; the two filtered agents are configured but unused. Tool filters change which functions the model can call. The “Safe Mode” name in the source does not create a sandbox: both filtered variants can still execute arbitrary Python, including imports and subprocess calls. base_dir constrains the toolkit's file helpers, not everything that executed code can access.
To return the calculated sequence to the model, ask it to store the Fibonacci numbers in a variable and pass that name as variable_to_return. Printing a value writes it to the process output; the execution tool otherwise returns a success message.
Run the Example
# Clone and setup repo
git clone https://github.com/agno-agi/agno.git
cd agno
git checkout d703c34f3abf3c41275d3fb2da6e0518a8881f24
# Create and activate virtual environment
./scripts/demo_setup.sh
source .venvs/demo/bin/activate
uv pip install -U openai
export OPENAI_API_KEY="your_openai_api_key_here"
python cookbook/91_tools/python_tools.pyFor details, see PythonTools cookbook.