From ea4937197f987d21c939059a201fe06d69b079d2 Mon Sep 17 00:00:00 2001 From: Hemang Sarkar Date: Mon, 17 Feb 2025 16:01:05 +0100 Subject: [PATCH 1/6] Update .env --- .env | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.env b/.env index 419976f..ab9c670 100644 --- a/.env +++ b/.env @@ -1 +1,5 @@ +# This specifies the Invariant Explorer instance where the proxy will push the traces +# Set this to https://preview-explorer.invariantlabs.ai if you want to push to Preview. +# If you want to push to a local instance of explorer, then specify the app-api docker container name like: +# http://:8000 to push to the local explorer instance. INVARIANT_API_URL=https://explorer.invariantlabs.ai From e898941597fb542db920ada110bcb5b87f7a91f0 Mon Sep 17 00:00:00 2001 From: Hemang Date: Tue, 18 Feb 2025 09:59:53 +0100 Subject: [PATCH 2/6] Allow the localhost instance to be accessible even without a local Traefik instance running. --- docker-compose.local.yml | 4 +++- run.sh | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 3096fe1..c6a8606 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -15,8 +15,10 @@ services: target: /srv/proxy networks: - invariant-explorer-web - ports: [] + ports: + - "8005:8000" # Direct access without Traefik labels: + # For access via Traefik - "traefik.enable=true" - "traefik.http.routers.explorer-proxy-api.rule=(Host(`localhost`) && PathPrefix(`/api/v1/proxy/`)) || (Host(`127.0.0.1`) && PathPrefix(`/api/v1/proxy/`))" - "traefik.http.routers.explorer-proxy-api.entrypoints=invariant-explorer-web" diff --git a/run.sh b/run.sh index ed995ee..226f04c 100755 --- a/run.sh +++ b/run.sh @@ -6,8 +6,8 @@ up() { # Start your local docker-compose services docker compose -f docker-compose.local.yml up -d - echo "Proxy started at http://localhost/api/v1/proxy/" - echo "See http://localhost/api/v1/proxy/docs for API documentation" + echo "Proxy started at http://localhost:8005/api/v1/proxy/" + echo "See http://localhost:8005/api/v1/proxy/docs for API documentation" } build() { From 0febcc0f4c95dc18c9e7cf824983059f050ca6e3 Mon Sep 17 00:00:00 2001 From: Hemang Date: Tue, 18 Feb 2025 10:20:21 +0100 Subject: [PATCH 3/6] Update README. --- README.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9520fac..a866c12 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,18 @@ Invariant Proxy is a lightweight Docker service that acts as an intermediary bet - ✅ **Automatically store and organize traces** in the Invariant Explorer. ## **Getting Started** + +**Run the proxy locally** +```bash +bash run.sh build && bash run.sh up +``` + +This will start the Invariant Proxy on [http://localhost:8005/api/v1/proxy/](http://localhost:8005/api/v1/proxy/docs/). + To integrate the Proxy with your AI agent, you’ll need to modify how your client interacts with LLM providers. -1. **Setup an Invariant API Key** - Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. +**Setup an Invariant API Key** +1. Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. This will allow the Proxy to push traces to [https://explorer.invariantlabs.ai](https://explorer.invariantlabs.ai), ### **🔹 OpenAI Integration** 2. To setup an OpenAI API key follow the steps [here](https://platform.openai.com/docs/quickstart#create-and-export-an-api-key). @@ -31,7 +39,7 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie "Invariant-Authorization": "Bearer your-invariant-api-key" }, ), - base_url="https://explorer.invariantlabs.ai/api/v1/proxy/{add-your-dataset-name-here}/openai", + base_url="http://localhost:8005/api/v1/proxy/{add-your-dataset-name-here}/openai", ) # If a dataset with the given name already doesn't exist in Invariant Explorer, this will create the dataset # before adding the traces to it. @@ -53,18 +61,13 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie "Invariant-Authorization": "Bearer your-invariant-api-key" }, ), - base_url="https://explorer.invariantlabs.ai/api/v1/proxy/{add-your-dataset-name-here}/anthropic", + base_url="http://localhost:8005/api/v1/proxy/{add-your-dataset-name-here}/anthropic", ) # If a dataset with the given name already doesn't exist in Invariant Explorer, this will create the dataset # before adding the traces to it. # Make API requests to Anthropic using the client as usual. -### Run -```bash -./run.sh up -``` - ### Run tests ```bash ./run.sh tests From 426994ef512ff821bf36b356da107396905c2abd Mon Sep 17 00:00:00 2001 From: Hemang Date: Tue, 18 Feb 2025 10:25:51 +0100 Subject: [PATCH 4/6] Update README. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a866c12..70e9089 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie **Setup an Invariant API Key** 1. Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. This will allow the Proxy to push traces to [https://explorer.invariantlabs.ai](https://explorer.invariantlabs.ai), -### **🔹 OpenAI Integration** +**🔹 OpenAI Integration** + 2. To setup an OpenAI API key follow the steps [here](https://platform.openai.com/docs/quickstart#create-and-export-an-api-key). 3. **Modify OpenAI Client Setup** @@ -45,7 +46,8 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie # before adding the traces to it. # Make API requests to OpenAI using the client as usual. -### **🔹 Anthropic Integration** +**🔹 Anthropic Integration** + 2. To setup an Anthropic API key follow the steps [here](https://docs.anthropic.com/en/docs/initial-setup#set-your-api-key). 3. **Modify Anthropic Client Setup** From 4a98eccdf2889fe3522bf4572b064a0b422e66ba Mon Sep 17 00:00:00 2001 From: Hemang Date: Tue, 18 Feb 2025 10:42:09 +0100 Subject: [PATCH 5/6] Update README --- README.md | 60 ++++++++++++++++++++- resources/images/openhands-integration.png | Bin 0 -> 103920 bytes 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 resources/images/openhands-integration.png diff --git a/README.md b/README.md index 70e9089..be2c829 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ This will start the Invariant Proxy on [http://localhost:8005/api/v1/proxy/](htt To integrate the Proxy with your AI agent, you’ll need to modify how your client interacts with LLM providers. **Setup an Invariant API Key** -1. Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. This will allow the Proxy to push traces to [https://explorer.invariantlabs.ai](https://explorer.invariantlabs.ai), +1. Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. This will allow the Proxy to push traces to [https://explorer.invariantlabs.ai](https://explorer.invariantlabs.ai). **🔹 OpenAI Integration** @@ -70,6 +70,64 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie # before adding the traces to it. # Make API requests to Anthropic using the client as usual. +## **OpenHands Integration** +[OpenHands](https://github.com/All-Hands-AI/OpenHands) (formerly OpenDevin) is a platform for software development agents powered by AI. + +OpenHands does not support custom headers, meaning you **cannot** pass the Invariant API Key via the `Invariant-Authorization` header directly. However, **there is a workaround** using the Invariant Proxy. + +#### **Step 1: Modify the API Base** + +Enable the `Advanced Options` toggle under settings and update the `Base URL` in the modal like: + + + + +#### **Step 2: Adjust the API Key Format** +Instead of setting your OPENAI_API_KEY (or ANTHROPIC_API_KEY) normally in the settings modal under `API Key` you will need to change the format. + +Updated format: ```{your-llm-api-key}|invariant-auth: {your-invariant-api-key}``` without the curly braces. + +The Invariant Proxy extracts the invariant-auth field from the API key and correctly forwards the Invariant API Key, allowing traces to be pushed to Invariant Explorer. The request is correctly passed to OpenAI (or Anthropic) with the actual API Key. + +This setup ensures that OpenHands works seamlessly with Invariant Proxy, maintaining compatibility while enabling full functionality. 🚀 + +## SWE-agent Integration + +[SWE-agent](https://github.com/SWE-agent/SWE-agent) allows your preferred language model (e.g., GPT-4o or Claude Sonnet 3.5) to autonomously utilize tools for various tasks, such as: + +- Fixing issues in real GitHub repositories +- Performing tasks on the web +- Cracking cybersecurity challenges +- Executing custom-defined tasks + +### Using SWE-agent with Invariant Proxy + +SWE-agent does not support custom headers, meaning you **cannot** pass the Invariant API Key via the `Invariant-Authorization` header directly. However, **there is a workaround** using the Invariant Proxy. + +#### **Step 1: Modify the API Base** +When running `sweagent run`, add the following flag to route requests through the Invariant Proxy: + +```bash +--agent.model.api_base=http://localhost:8005/api/v1/proxy/{add-your-dataset-name-here}/openai +``` +without the curly braces. + + +#### **Step 2: Adjust the API Key Format** +Instead of setting your OPENAI_API_KEY (or ANTHROPIC_API_KEY) normally, modify the environment variable as follows: + +```bash +export OPENAI_API_KEY={your-openai-api-key}|invariant-auth: {your-invariant-api-key} +export ANTHROPIC_API_KEY={your-anthropic-api-key}|invariant-auth: {your-invariant-api-key} +``` +without the curly braces. + +The Invariant Proxy extracts the invariant-auth field from the API key and correctly forwards the Invariant API Key, allowing traces to be pushed to Invariant Explorer. The request is correctly passed to OpenAI (or Anthropic) with the actual API Key. + +This setup ensures that SWE-agent works seamlessly with Invariant Proxy, maintaining compatibility while enabling full functionality. 🚀 + +## Dev + ### Run tests ```bash ./run.sh tests diff --git a/resources/images/openhands-integration.png b/resources/images/openhands-integration.png new file mode 100644 index 0000000000000000000000000000000000000000..5d170024d2dc9ea27d8a6d83cfd5bc8a80727e40 GIT binary patch literal 103920 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 z%0A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∾;DxRx#uYO@h_(+Lzo4r)gom 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 Date: Tue, 18 Feb 2025 11:59:35 +0100 Subject: [PATCH 6/6] Update README.md --- README.md | 99 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 53 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index be2c829..1ad0f1f 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,43 @@ # **Invariant Proxy** -Invariant Proxy is a lightweight Docker service that acts as an intermediary between AI Agents and LLM providers (such as OpenAI and Anthropic). It captures and forwards agent interactions to the [Invariant Explorer](https://explorer.invariantlabs.ai/), enabling seamless debugging, visualization and exploration of traces. +Invariant Proxy is a lightweight Docker service that acts as an intermediary between AI Agents and LLM providers (such as OpenAI and Anthropic). It captures and forwards agent interactions to the [Invariant Explorer](https://explorer.invariantlabs.ai/), enabling seamless debugging, visualization, and exploration of traces. ![Invariant Proxy Diagram](resources/images/invariant-proxy.png) +--- + ## **Why Use Invariant Proxy?** - ✅ **Intercept AI interactions** for better debugging and analysis. - ✅ **Seamlessly forward API requests** to OpenAI, Anthropic, and other LLM providers (**supports streaming responses too**). +- ✅ **Works with AI Agents** like OpenHands, SWE-agent, etc. - ✅ **Automatically store and organize traces** in the Invariant Explorer. +--- + ## **Getting Started** -**Run the proxy locally** +### **Run the Proxy Locally** +To start the Invariant Proxy, run: + ```bash bash run.sh build && bash run.sh up ``` -This will start the Invariant Proxy on [http://localhost:8005/api/v1/proxy/](http://localhost:8005/api/v1/proxy/docs/). +This will launch the proxy at [http://localhost:8005/api/v1/proxy/](http://localhost:8005/api/v1/proxy/docs/). -To integrate the Proxy with your AI agent, you’ll need to modify how your client interacts with LLM providers. +### **Set Up an Invariant API Key** +1. Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. This allows the proxy to push traces to [Invariant Explorer](https://explorer.invariantlabs.ai). -**Setup an Invariant API Key** -1. Follow the instructions [here](https://explorer.invariantlabs.ai/docs/explorer/Explorer_API/1_client_setup/) to obtain an API key. This will allow the Proxy to push traces to [https://explorer.invariantlabs.ai](https://explorer.invariantlabs.ai). +--- -**🔹 OpenAI Integration** +## **Integration Guides** -2. To setup an OpenAI API key follow the steps [here](https://platform.openai.com/docs/quickstart#create-and-export-an-api-key). +### **🔹 OpenAI Integration** -3. **Modify OpenAI Client Setup** - Instead of connecting directly to OpenAI, configure your `OpenAI` client to use the proxy. +1. Follow [these steps](https://platform.openai.com/docs/quickstart#create-and-export-an-api-key) to obtain an OpenAI API key. +2. **Modify OpenAI Client Setup** + + Instead of connecting directly to OpenAI, configure your `OpenAI` client to use the proxy: ```python from httpx import Client @@ -42,16 +51,14 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie ), base_url="http://localhost:8005/api/v1/proxy/{add-your-dataset-name-here}/openai", ) - # If a dataset with the given name already doesn't exist in Invariant Explorer, this will create the dataset - # before adding the traces to it. - # Make API requests to OpenAI using the client as usual. + ``` -**🔹 Anthropic Integration** + > **Note:** Do not include the curly braces `{}`. If the dataset does not exist in Invariant Explorer, it will be created before adding traces. -2. To setup an Anthropic API key follow the steps [here](https://docs.anthropic.com/en/docs/initial-setup#set-your-api-key). +### **🔹 Anthropic Integration** -3. **Modify Anthropic Client Setup** - Instead of connecting directly to Anthropic, configure your `Anthropic` client to use the proxy. +1. Follow [these steps](https://docs.anthropic.com/en/docs/initial-setup#set-your-api-key) to obtain an Anthropic API key. +2. **Modify Anthropic Client Setup** ```python from httpx import Client @@ -65,70 +72,70 @@ To integrate the Proxy with your AI agent, you’ll need to modify how your clie ), base_url="http://localhost:8005/api/v1/proxy/{add-your-dataset-name-here}/anthropic", ) - - # If a dataset with the given name already doesn't exist in Invariant Explorer, this will create the dataset - # before adding the traces to it. - # Make API requests to Anthropic using the client as usual. + ``` + + > **Note:** Do not include the curly braces `{}`. If the dataset does not exist in Invariant Explorer, it will be created before adding traces. +--- ## **OpenHands Integration** [OpenHands](https://github.com/All-Hands-AI/OpenHands) (formerly OpenDevin) is a platform for software development agents powered by AI. -OpenHands does not support custom headers, meaning you **cannot** pass the Invariant API Key via the `Invariant-Authorization` header directly. However, **there is a workaround** using the Invariant Proxy. +### **How to Integrate OpenHands with Invariant Proxy** #### **Step 1: Modify the API Base** - -Enable the `Advanced Options` toggle under settings and update the `Base URL` in the modal like: +Enable the `Advanced Options` toggle under settings and update the `Base URL`: - #### **Step 2: Adjust the API Key Format** -Instead of setting your OPENAI_API_KEY (or ANTHROPIC_API_KEY) normally in the settings modal under `API Key` you will need to change the format. +Modify the API Key format in the settings modal: -Updated format: ```{your-llm-api-key}|invariant-auth: {your-invariant-api-key}``` without the curly braces. +```text +{your-llm-api-key}|invariant-auth: {your-invariant-api-key} +``` -The Invariant Proxy extracts the invariant-auth field from the API key and correctly forwards the Invariant API Key, allowing traces to be pushed to Invariant Explorer. The request is correctly passed to OpenAI (or Anthropic) with the actual API Key. +> **Note:** Do not include the curly braces `{}`. -This setup ensures that OpenHands works seamlessly with Invariant Proxy, maintaining compatibility while enabling full functionality. 🚀 +The Invariant Proxy extracts the `invariant-auth` field from the API key and correctly forwards it to Invariant Explorer while sending the actual API key to OpenAI or Anthropic. -## SWE-agent Integration +--- -[SWE-agent](https://github.com/SWE-agent/SWE-agent) allows your preferred language model (e.g., GPT-4o or Claude Sonnet 3.5) to autonomously utilize tools for various tasks, such as: +## **SWE-agent Integration** +[SWE-agent](https://github.com/SWE-agent/SWE-agent) allows your preferred language model (e.g., GPT-4o or Claude Sonnet 3.5) to autonomously utilize tools for various tasks, such as fixing issues in real GitHub repositories. -- Fixing issues in real GitHub repositories -- Performing tasks on the web -- Cracking cybersecurity challenges -- Executing custom-defined tasks - -### Using SWE-agent with Invariant Proxy - -SWE-agent does not support custom headers, meaning you **cannot** pass the Invariant API Key via the `Invariant-Authorization` header directly. However, **there is a workaround** using the Invariant Proxy. +### **Using SWE-agent with Invariant Proxy** +SWE-agent does not support custom headers, so you **cannot** pass the Invariant API Key via `Invariant-Authorization`. However, **there is a workaround** using the Invariant Proxy. #### **Step 1: Modify the API Base** -When running `sweagent run`, add the following flag to route requests through the Invariant Proxy: + +Run `sweagent` with the following flag: ```bash --agent.model.api_base=http://localhost:8005/api/v1/proxy/{add-your-dataset-name-here}/openai ``` -without the curly braces. +> **Note:** Do not include the curly braces `{}`. #### **Step 2: Adjust the API Key Format** -Instead of setting your OPENAI_API_KEY (or ANTHROPIC_API_KEY) normally, modify the environment variable as follows: +Instead of setting your API Key normally, modify the environment variable as follows: ```bash export OPENAI_API_KEY={your-openai-api-key}|invariant-auth: {your-invariant-api-key} export ANTHROPIC_API_KEY={your-anthropic-api-key}|invariant-auth: {your-invariant-api-key} ``` -without the curly braces. -The Invariant Proxy extracts the invariant-auth field from the API key and correctly forwards the Invariant API Key, allowing traces to be pushed to Invariant Explorer. The request is correctly passed to OpenAI (or Anthropic) with the actual API Key. +> **Note:** Do not include the curly braces `{}`. This setup ensures that SWE-agent works seamlessly with Invariant Proxy, maintaining compatibility while enabling full functionality. 🚀 -## Dev +--- + +## **Development** + +### **Run Tests** +To run tests, execute: -### Run tests ```bash ./run.sh tests ``` +