A nano, minimalistic, and lightweight library for building ReACT-based AI agents that use tools to solve tasks.
Project description
🚀 Nbagents Summary
What We Added
✨ Async Support
- Full async/await support for both tools and LLM calls
run_async()method for async executionis_async_function()utility to detect async functionsrun_sync_or_async()utility to handle both sync and async functions seamlessly
🔧 Built-in Tools
- Web Search: Search the web using DuckDuckGo API (both sync and async versions)
- File Operations:
read_file: Read content from fileswrite_file: Write content to fileslist_files: List files in directories
- Time:
get_current_time- Get current date and time - Auto-registration of built-in tools (can be disabled with
include_builtin_tools=False)
📋 Comprehensive Logging
setup_logger()function for easy logger configuration- Agent-specific loggers with configurable log levels
- Debug logging for tool execution and iterations
- Info/Warning/Error logging for key events
- Tool registration and execution logging
🔄 Enhanced Error Handling
- Better retry mechanisms for both LLM calls and tool execution
- Graceful error reporting with detailed messages
- Tool execution attempt logging
- Improved exception handling
🛠️ Improved Tool System
- Enhanced
Toolclass with async support detection - Better tool schema parsing
- Tool metadata including async status
- Improved tool registry with built-in tool management
🎯 Better Agent Configuration
log_levelparameter for controlling logging verbosityinclude_builtin_toolsparameter to control built-in tool loading- Enhanced initialization with better defaults
📦 Dependencies Added
requests- For web search functionalityaiohttp- For async web searchasyncio- For async support (built-in)logging- For comprehensive logging (built-in)
🎮 Usage Examples
Basic Usage with Built-in Tools
from nbagents import Agent
agent = Agent(llm=your_llm_function, include_builtin_tools=True)
result = agent.run("Get the current time and save it to a file")
Async Usage
import asyncio
from nbagents import Agent
async def main():
agent = Agent(llm=async_llm_function, include_builtin_tools=True)
result = await agent.run_async("Search for Python tutorials and save results")
asyncio.run(main())
Custom Logging
from nbagents import Agent, setup_logger
logger = setup_logger("my_agent", "DEBUG")
agent = Agent(llm=your_llm, log_level="DEBUG")
Custom Tools with Async
@agent.tool("async_process")
async def async_process(data: str) -> str:
await asyncio.sleep(1) # Simulate async work
return f"Processed: {data}"
✅ Verified Working Features
- ✅ File read/write operations work correctly
- ✅ Time retrieval works correctly
- ✅ Async tool execution works
- ✅ Comprehensive logging is functional
- ✅ Error handling and retries work
- ✅ Tool registration and discovery works
- ✅ Both sync and async LLM calls supported
🚀 Next Possible Enhancements
- Memory/persistence system
- Multi-agent communication
- Plugin system
- Configuration file support
- Performance metrics and monitoring
- Additional built-in tools (database, API calls, etc.)
- Tool composition and chaining
- Custom prompt templates
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nbagents-0.1.1.tar.gz
(10.3 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
nbagents-0.1.1-py3-none-any.whl
(11.2 kB
view details)
File details
Details for the file nbagents-0.1.1.tar.gz.
File metadata
- Download URL: nbagents-0.1.1.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.5 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bf47ee822863f9a9cbd3db5b6aff080d337561e122157532540f5a751503e66
|
|
| MD5 |
cf12bbcf4ab71cfb5bf63ffad6e7aa73
|
|
| BLAKE2b-256 |
b6bf28dc2e3e1c2df0c0e67f2bc84662d9e9d71032ed69076942a272e554802e
|
File details
Details for the file nbagents-0.1.1-py3-none-any.whl.
File metadata
- Download URL: nbagents-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.5 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb239bc6600cc2514fb6c41398f403a088f13fb50c78f87d9423823dfb4133c5
|
|
| MD5 |
789cd8735290b5c61edc0a7263bee0e8
|
|
| BLAKE2b-256 |
51ea8baff27af7105a8bccbe00ea9e447e595633f5c25b39f029850cc6d4c90f
|