Skip to main content

Building blocks for AI Agents

Project description

AgentPress: Building Blocks for AI Agents

AgentPress is a collection of simple, but powerful utilities that serve as building blocks for creating AI agents. Plug, play, and customize.

  • Threads: Simple message thread handling utilities
  • Tools: Flexible tool definition and automatic execution
  • State Management: Simple JSON key-value state management
  • LLM Integration: Provider-agnostic LLM calls via LiteLLM

Installation & Setup

  1. Install the package:
pip install agentpress
  1. Initialize AgentPress in your project:
agentpress init

Creates a agentpress directory with all the core utilities. Check out File Overview for explanations of the generated util files.

  1. If you selected the example agent during initialization:
    • Creates an agent.py file with a web development agent example
    • Creates a tools directory with example tools:
      • files_tool.py: File operations (create/update files, read directory and load into state)
      • terminal_tool.py: Terminal command execution
    • Creates a workspace directory for the agent to work in

Quick Start

  1. Set up your environment variables (API keys, etc.) in a .env file.
  • OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, etc... Whatever LLM you want to use, we use LiteLLM (https://litellm.ai) (Call 100+ LLMs using the OpenAI Input/Output Format) – set it up in your .env file.. Also check out the agentpress/llm.py and modify as needed to support your wanted LLM.
  1. Create a calculator_tool.py
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:
        try:
            result = a + b
            return self.success_response(f"The sum is {result}")
        except Exception as e:
            return self.fail_response(f"Failed to add numbers: {str(e)}")
  1. Use the Thread Manager, create a new thread – or access an existing one. Then Add the Calculator Tool, and run the thread. It will automatically use & execute the python function associated with the tool:
import asyncio
from agentpress.thread_manager import ThreadManager
from calculator_tool import CalculatorTool

async def main():
    # Initialize thread manager and add tools
    manager = ThreadManager()
    manager.add_tool(CalculatorTool)

    # Create a new thread
    # Alternatively, you could use an existing thread_id like:
    # thread_id = "existing-thread-uuid" 
    thread_id = await manager.create_thread()
    
    # Add your custom logic here
    await manager.add_message(thread_id, {
        "role": "user", 
        "content": "What's 2 + 2?"
    })
    
    response = await manager.run_thread(
        thread_id=thread_id,
        system_message={
            "role": "system", 
            "content": "You are a helpful assistant with calculation abilities."
        },
        model_name="gpt-4",
        use_tools=True,
        execute_model_tool_calls=True
    )
    print("Response:", response)

asyncio.run(main())
  1. Autonomous Web Developer Agent (the standard example)

When you run agentpress init and select the example agent – you will get code for a simple implementation of an AI Web Developer Agent that leverages architecture similar to platforms like our own Softgen Platform.

  • Files Tool: Allows the agent to create, read, update, and delete files within the workspace.
  • Terminal Tool: Enables the agent to execute terminal commands.
  • State Workspace Management: The agent has access to a workspace whose state is stored and sent on every request. This state includes all file contents, ensuring the agent knows what it is editing.
  • User Interaction via CLI: After each action, the agent pauses and allows the user to provide further instructions through the CLI.

You can find the complete implementation in our example-agent directory.

  1. Thread Viewer

Run the thread viewer to view messages of threads in a stylised web UI:

streamlit run agentpress/thread_viewer_ui.py

File Overview

agentpress/llm.py

Core LLM API interface using LiteLLM. Supports 100+ LLMs using the OpenAI Input/Output Format. Easy to extend for custom model configurations and API endpoints. make_llm_api_call() can be imported to make LLM calls.

agentpress/thread_manager.py

Orchestrates conversations between users, LLMs, and tools. Manages message history and automatically handles tool execution when LLMs request them. Tools registered here become available for LLM function calls.

agentpress/tool.py

Base infrastructure for LLM-compatible tools. Inherit from Tool class and use @tool_schema decorator to create tools that are automatically registered for LLM function calling. Returns standardized ToolResult responses.

agentpress/tool_registry.py

Central registry for tool management. Keeps track of available tools and their schemas, allowing selective function registration. Works with thread_manager.py to expose tools to LLMs.

agentpress/state_manager.py

Simple key-value based state persistence using JSON files. For maintaining environment state, settings, or other persistent data.

Philosophy

  • Plug & Play: Start with our defaults, then customize to your needs.
  • Agnostic: Built on LiteLLM, supporting any LLM provider. Minimal opinions, maximum flexibility.
  • Simplicity: Clean, readable code that's easy to understand and modify.
  • No Lock-in: Take full ownership of the code. Copy what you need directly into your codebase.

Contributing

We welcome contributions! Feel free to:

  • Submit issues for bugs or suggestions
  • Fork the repository and send pull requests
  • Share how you've used AgentPress in your projects

Development

  1. Clone:
git clone https://github.com/kortix-ai/agentpress
cd agentpress
  1. Install dependencies:
pip install poetry
poetry install
  1. Build the package:
poetry build

It will return the built package name with the version number.

  1. Install the package with the correct version number, here for example its 0.1.3 agentpress-0.1.3-py3-none-any.whl:
pip install /Users/markokraemer/Projects/agentpress/dist/agentpress-0.1.3-py3-none-any.whl --force-reinstall

Then you can test that version.

License

MIT License

Built with ❤️ by Kortix AI Corp

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

agentpress-0.1.6.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentpress-0.1.6-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file agentpress-0.1.6.tar.gz.

File metadata

  • Download URL: agentpress-0.1.6.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for agentpress-0.1.6.tar.gz
Algorithm Hash digest
SHA256 370286353955936775d0db5201341b4d1fdc7bbfb011033892952be3e9e1995e
MD5 284b0c164c6a2545bb483f74f2fae4cc
BLAKE2b-256 c7c8b44f7f4861a43ffbdf28c76bfb8983c11f3d0c3e2514eb23d493fc404b3d

See more details on using hashes here.

File details

Details for the file agentpress-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: agentpress-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure

File hashes

Hashes for agentpress-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e104259c82ecbfa268c6ed0c6030ac18460d665a52182b2d90ce03f8a6d1b08d
MD5 b6da66971802aaa498fc5a572c57ac2e
BLAKE2b-256 8470ffe7dbf8672ededfe4ec9024510a9fbbd7495e3feb97ce9831404751121c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page