Ollama Agent
A lightweight AI agent library powered by Ollama with built-in tools and custom tool support.
For example project, visit ollama-agent-cli
Features
- Simple API - Get started with just a few lines of code
- 10 Built-in Tools - Web search, calculator, weather, system info, and more
- Custom Tools - Easy registration via decorators or functions
- Configurable - Environment variables or constructor parameters
- Safe by Default - Optional user approval for dangerous operations
- Conversation Memory - Maintains context across queries
Installation
pip install ollama-agent
Prerequisites
- Python 3.10+
- Ollama installed and running
- A model pulled (e.g.,
ollama pull llama3.2)
Quick Start
from ollama_agent import OllamaAgent
# Create an agent
agent = OllamaAgent()
# Run a query
response = agent.run("What's the current time?")
print(response)
# Conversation history is maintained
response = agent.run("And what's the weather in New York?")
print(response)
# Reset when needed
agent.reset()
Custom Tools
Using Decorators
from ollama_agent import OllamaAgent, register_tool
@register_tool("greet", description="Greet someone by name. Input: name")
def greet(name: str) -> str:
return f"Hello, {name}!"
agent = OllamaAgent()
response = agent.run("Greet Alice")
Using Function Registration
from ollama_agent import register_tool_func
def my_tool(input_str: str) -> str:
return f"Processed: {input_str}"
register_tool_func(
name="my_tool",
func=my_tool,
description="Process input text"
)
Instance-specific Tools
agent = OllamaAgent()
agent.add_tool(
name="uppercase",
func=lambda text: text.upper(),
description="Convert text to uppercase"
)
response = agent.run("Convert 'hello' to uppercase")
agent.remove_tool("uppercase")
Configuration
Constructor Parameters
agent = OllamaAgent(
model="llama3.2", # Ollama model name
base_url="http://localhost:11434", # Ollama API URL
temperature=0.7, # Model temperature (0-1)
max_iterations=10, # Max tool calls per query
approval_callback=my_callback, # Optional approval function
)
Environment Variables
OLLAMA_MODEL=llama3.2
OLLAMA_BASE_URL=http://localhost:11434
TEMPERATURE=0.7
MAX_ITERATIONS=10
MAX_SEARCH_RESULTS=5
REQUIRE_APPROVAL_COMMANDS=true
REQUIRE_APPROVAL_FILES=false
Approval Callback
Require user approval for dangerous operations:
def approval_callback(tool_name: str, tool_input: str) -> bool:
print(f"Tool: {tool_name}, Input: {tool_input}")
return input("Allow? (y/n): ").lower() == "y"
agent = OllamaAgent(approval_callback=approval_callback)
Built-in Tools
| Tool | Description |
|---|---|
web_search |
Search the web using DuckDuckGo |
get_current_time |
Get current date and time |
run_command |
Run shell commands (requires approval) |
system_info |
Get CPU, memory, disk, uptime info |
weather |
Get current weather |
calculator |
Evaluate math expressions |
read_file |
Read file contents |
list_directory |
List directory contents |
wikipedia |
Search Wikipedia |
ip_info |
Get public IP and location |
API Reference
OllamaAgent
class OllamaAgent:
def __init__(
self,
model: str = None,
base_url: str = None,
temperature: float = None,
max_iterations: int = None,
approval_callback: Callable[[str, str], bool] = None,
tools: dict = None,
config: Config = None,
): ...
def run(self, query: str, verbose: bool = False) -> str: ...
def reset(self) -> None: ...
def add_tool(self, name, func, description, requires_approval=None) -> None: ...
def remove_tool(self, name: str) -> None: ...
def get_history(self) -> list[dict]: ...
@property
def tools(self) -> dict: ...
@property
def model(self) -> str: ...
Tool Functions
# Decorator registration
@register_tool(name: str, description: str, requires_approval: str = None)
def my_tool(input: str) -> str: ...
# Function registration
register_tool_func(name, func, description, requires_approval=None)
# Management
unregister_tool(name: str)
get_tool(name: str) -> dict
get_all_tools() -> dict
list_tools() -> list[str]
Development
# Clone the repo
git clone https://github.com/aashish-thapa/ollama-agent.git
cd ollama-agent
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
ruff check src/
License
MIT License - see LICENSE for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ollama_agent-0.1.4.tar.gz
(19.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ollama_agent-0.1.4.tar.gz.
File metadata
- Download URL: ollama_agent-0.1.4.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3d8a84eb6bd30971de15ca70fb43e4ecd32181cc64b31a2af2ebbc7cfde070e
|
|
| MD5 |
946a72d356931a56588da07290d5b254
|
|
| BLAKE2b-256 |
d7475e713ad9d3c8c6ade509ecfd9986a56bcfe411748d06739bebd7ede002ae
|
File details
Details for the file ollama_agent-0.1.4-py3-none-any.whl.
File metadata
- Download URL: ollama_agent-0.1.4-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05c3dfe931ea15bb3ff6707696174c7423a0c0085d6adabd4d7416ac6957bd73
|
|
| MD5 |
32036e1c3060146a8ed8aa1ba4e84351
|
|
| BLAKE2b-256 |
07a81820a1d8b62b672d9c27c7586fd4d7b1add80ce216875f12a4bbe82de555
|