mirror of https://github.com/kortix-ai/suna.git
139 lines
4.3 KiB
Markdown
139 lines
4.3 KiB
Markdown
# 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.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install agentpress
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
1. Set up your environment variables (API keys, etc.) in a `.env` file.
|
|
|
|
2. Create a simple tool:
|
|
```python
|
|
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}")
|
|
```
|
|
|
|
3. Use the ThreadManager to run a conversation:
|
|
```python
|
|
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())
|
|
```
|
|
|
|
4. Create an autonomous agent with multiple iterations:
|
|
```python
|
|
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 `FilesTool` to
|
|
interact with the file system and showcases how to control the behavior of `run_thread` by adjusting parameters like `temperature`,
|
|
`max_tokens`, and `tool_choice`. The agent creates files autonomously.
|
|
|
|
## Development Setup
|
|
|
|
If you want to contribute or modify the package:
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/kortix-ai/agentpress
|
|
cd agentpress
|
|
```
|
|
|
|
2. Install Poetry (if not already installed):
|
|
```bash
|
|
pip install poetry
|
|
```
|
|
|
|
3. Install dependencies:
|
|
```bash
|
|
poetry install
|
|
```
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
We welcome contributions to AgentPress! Please feel free to submit issues, fork the repository and send pull requests!
|
|
|
|
## License
|
|
|
|
[MIT License](LICENSE)
|
|
|
|
Built with ❤️ by [Kortix AI Corp](https://www.kortix.ai)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|