From 65a350f21f3d29272b79ea8c3a8aada1f2dd5215 Mon Sep 17 00:00:00 2001 From: marko-kraemer Date: Mon, 18 Nov 2024 08:01:39 +0100 Subject: [PATCH] README --- README.md | 83 +++++++++++++++++++++++++---------------------- images/cover.png | Bin 0 -> 50927 bytes 2 files changed, 45 insertions(+), 38 deletions(-) create mode 100644 images/cover.png diff --git a/README.md b/README.md index b560fe8d..b4fd6753 100644 --- a/README.md +++ b/README.md @@ -2,47 +2,16 @@ AgentPress is a collection of _simple, but powerful_ utilities that serve as building blocks for creating AI agents. *Plug, play, and customize.* -## How It Works +![AgentPress Flow](images/cover.png) -Each AI agent iteration follows a clear, modular flow: +See [How It Works](#how-it-works) for an explanation of this flow. -1. **Message & LLM Handling** - - Messages are managed in threads via `ThreadManager` - - LLM API calls are made through a unified interface (`llm.py`) - - Supports streaming responses for real-time interaction - -2. **Response Processing** - - LLM returns both content and tool calls - - Content is streamed in real-time - - Tool calls are parsed using either: - - Standard OpenAPI function calling - - XML-based tool definitions - - Custom parsers (extend `ToolParserBase`) - -3. **Tool Execution** - - Tools are executed either: - - In real-time during streaming (`execute_tools_on_stream`) - - After complete response - - In parallel or sequential order - - Supports both standard and XML tool formats - - Extensible through `ToolExecutorBase` - -4. **Results Management** - - Results from both content and tool executions are handled - - Supports different result formats (standard/XML) - - Customizable through `ResultsAdderBase` - -This modular architecture allows you to: -- Use standard OpenAPI function calling -- Switch to XML-based tool definitions -- Create custom processors by extending base classes -- Mix and match different approaches - -- **Threads**: Simple message thread handling utilities with streaming support -- **Tools**: Flexible tool definition with both OpenAPI and XML formats +## Core Components +- **Threads**: Manage Messages[] as threads. +- **Tools**: Register code as callable tools with definitions in both OpenAPI and XML +- **Response Processing**: Support for both native-LLM OpenAPI and XML-based tool calling - **State Management**: Thread-safe JSON key-value state management -- **LLM Integration**: Provider-agnostic LLM calls via LiteLLM -- **Response Processing**: Support for both standard and XML-based tool calling +- **LLM**: +100 LLMs using the OpenAI I/O Format powered by LiteLLM ## Installation & Setup @@ -66,6 +35,8 @@ Check out [File Overview](#file-overview) for explanations of the generated file - Creates a `workspace` directory for the agent to work in + + ## Quick Start 1. Set up your environment variables in a `.env` file: @@ -175,6 +146,42 @@ asyncio.run(main()) streamlit run agentpress/thread_viewer_ui.py ``` +## How It Works + +Each AI agent iteration follows a clear, modular flow: + +1. **Message & LLM Handling** + - Messages are managed in threads via `ThreadManager` + - LLM API calls are made through a unified interface (`llm.py`) + - Supports streaming responses for real-time interaction + +2. **Response Processing** + - LLM returns both content and tool calls + - Content is streamed in real-time + - Tool calls are parsed using either: + - Standard OpenAPI function calling + - XML-based tool definitions + - Custom parsers (extend `ToolParserBase`) + +3. **Tool Execution** + - Tools are executed either: + - In real-time during streaming (`execute_tools_on_stream`) + - After complete response + - In parallel or sequential order + - Supports both standard and XML tool formats + - Extensible through `ToolExecutorBase` + +4. **Results Management** + - Results from both content and tool executions are handled + - Supports different result formats (standard/XML) + - Customizable through `ResultsAdderBase` + +This modular architecture allows you to: +- Use standard OpenAPI function calling +- Switch to XML-based tool definitions +- Create custom processors by extending base classes +- Mix and match different approaches + ## File Overview ### Core Components diff --git a/images/cover.png b/images/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb679f26852ed11e5cd90324caf772be2c01902 GIT binary patch literal 50927 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 a-|=qVCus=XhL$Oze-EXVrE(>V0{#!?96`kZ literal 0 HcmV?d00001