A lightweight AI agent library powered by Ollama with built-in tools and custom tool support
Project description
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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.3.tar.gz.
File metadata
- Download URL: ollama_agent-0.1.3.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9c4dafb5d88616d83bd0962c6586511bf061be5be928ce8250582a2e9351989
|
|
| MD5 |
9d2454ffb048da53f6343ec936873563
|
|
| BLAKE2b-256 |
046db3094d585710037e4d8afbda99431d9d0d7b7e63429487a62379226c875e
|
File details
Details for the file ollama_agent-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ollama_agent-0.1.3-py3-none-any.whl
- Upload date:
- Size: 14.7 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 |
e1af3e7dd9b8451b90512ecf1c386c3c954bef89ad4d0a516e9ee26688530813
|
|
| MD5 |
9d7b76a6760ca1456e5af943bdbf5db6
|
|
| BLAKE2b-256 |
1131d21dc90c48d403ecad2693bc11fd283105909c538ee23f295551e843f860
|