LLM Messages[] API on Steroids called "Threads" with easy Tool Execution and State Management
Project description
AgentPress: LLM Messages[] API on Steroids called "Threads" with automatic Tool Execution and simple state management.
AgentPress is a lightweight, powerful utility for kickstarting your LLM App or AI Agent. It provides a simple way to manage message threads, execute LLM calls, and automatically handle tool interactions.
Key Features
- Thread Management: Easily create, update, and manage message threads.
- Automatic Tool Execution: Define tools as Python classes and have them automatically called by the LLM.
- Flexible LLM Integration: Uses LiteLLM under the hood, allowing easy switching between different LLM providers.
- State Management: JSON-based state persistence for storing information, tool data, and runtime state.
Quick Start
-
Clone the repository:
git clone https://github.com/kortix-ai/agentpress cd agentpress -
Install Poetry (if not already installed):
pip install poetry -
Install dependencies using Poetry:
poetry install -
Run with poetry:
poetry run python agent.py -
Set up your environment variables (API keys, etc.) in a
.envfile. -
Create a simple tool:
from agentpress.tool import Tool, ToolResult, tool_schema class CalculatorTool(Tool): @tool_schema({ "name": "add", "description": "Add two numbers", "parameters": { "type": "object", "properties": { "a": {"type": "number"}, "b": {"type": "number"} }, "required": ["a", "b"] } }) async def add(self, a: float, b: float) -> ToolResult: return self.success_response(f"The sum is {a + b}")
-
Use the ThreadManager to run a conversation:
import asyncio from agentpress.thread_manager import ThreadManager async def main(): manager = ThreadManager() manager.add_tool(CalculatorTool) thread_id = await manager.create_thread() await manager.add_message(thread_id, {"role": "user", "content": "What's 2 + 2?"}) system_message = {"role": "system", "content": "You are a helpful assistant with calculation abilities."} response = await manager.run_thread( thread_id=thread_id, system_message=system_message, model_name="gpt-4o", execute_model_tool_calls=True ) print("Response:", response) asyncio.run(main())
-
Create an autonomous agent with multiple iterations:
import asyncio from agentpress.thread_manager import ThreadManager from tools.files_tool import FilesTool async def run_autonomous_agent(max_iterations=5): thread_manager = ThreadManager() thread_id = await thread_manager.create_thread() thread_manager.add_tool(FilesTool) system_message = {"role": "system", "content": "You are a helpful assistant that can create, read, update, and delete files."} for iteration in range(max_iterations): print(f"Iteration {iteration + 1}/{max_iterations}") await thread_manager.add_message(thread_id, {"role": "user", "content": "Continue!"}) response = await thread_manager.run_thread( thread_id=thread_id, system_message=system_message, model_name="anthropic/claude-3-5-sonnet-20240620", temperature=0.7, max_tokens=4096, tool_choice="auto", execute_tools_async=False, execute_model_tool_calls=True ) if __name__ == "__main__": asyncio.run(run_autonomous_agent())
This example demonstrates how to create an autonomous agent that runs for a specified number of iterations. It uses the
FilesToolto interact with the file system and showcases how to control the behavior ofrun_threadby adjusting parameters liketemperature,max_tokens, andtool_choice. The agent creates files autonomously.
Contributing
We welcome contributions to AgentPress! Please feel free to submit issues, fork the repository and send pull requests!
License
Built with ❤️ by Kortix AI Corp
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
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 agentpress-0.1.0.tar.gz.
File metadata
- Download URL: agentpress-0.1.0.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.0 Darwin/23.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5db74f0389377fb6afefece8c3ac6ba96ce14de2a411e4f5795f95d26d308d86
|
|
| MD5 |
f8878c2f59dc2eaba7a26b898baf12ff
|
|
| BLAKE2b-256 |
c36d54871f456245b9f802aa43a56fc221605ccaa009a7a37b56a3bd7b44e724
|
File details
Details for the file agentpress-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agentpress-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.0 Darwin/23.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6b3909647d7162c8253adf1ec203598b0acbd31672206e18ad1481d37dc6e5a
|
|
| MD5 |
0c41273bc3a61ae7d823dcb41952ff21
|
|
| BLAKE2b-256 |
205097f2d296c055d4b99f6397ba888bc3cc19a16a8ff0977131a2863f7107f6
|