Reverse proxy server for various LLM APIs. Features translation between API formats, user management, anti-abuse, API key rotation, DALL-E support, and optional prompt/response logging.
Go to file
nai-degen fc3043dad0 Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
docker refines huggingface instructions 2023-04-09 20:34:22 -05:00
docs Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
src Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
.env.example Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
.gitattributes initial commit 2023-04-08 01:54:44 -05:00
.gitignore Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
.replit adds preliminary replit support 2023-04-09 18:55:24 -05:00
README.md Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
info-page.md Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
package-lock.json Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
package.json Implements prompt logging via Google Sheets (khanon/oai-reverse-proxy!1) 2023-04-15 01:21:04 +00:00
replit.nix fixes incorrectly named replit.nix file 2023-04-09 21:28:51 -05:00
tsconfig.json Refactor onProxyRes handlers to use middleware stack (khanon/oai-reverse-proxy!2) 2023-04-14 15:29:11 +00:00

README.md

OAI Reverse Proxy

Reverse proxy server for the OpenAI (and soon Anthropic) APIs. Forwards text generation requests while rejecting administrative/billing requests. Includes optional rate limiting and prompt filtering to prevent abuse.

Table of Contents

What is this?

If you would like to provide a friend access to an API via keys you own, you can use this to keep your keys safe while still allowing them to generate text with the API. You can also use this if you'd like to build a client-side application which uses the OpenAI or Anthropic APIs, but don't want to build your own backend. You should never embed your real API keys in a client-side application. Instead, you can have your frontend connect to this reverse proxy and forward requests to the downstream service.

This keeps your keys safe and allows you to use the rate limiting and prompt filtering features of the proxy to prevent abuse.

Why?

OpenAI keys have full account permissions. They can revoke themselves, generate new keys, modify spend quotas, etc. You absolutely should not share them, post them publicly, nor embed them in client-side applications as they can be easily stolen.

This proxy only forwards text generation requests to the downstream service and rejects requests which would otherwise modify your account.


Usage Instructions

If you'd like to run your own instance of this proxy, you'll need to deploy it somewhere and configure it with your API keys. A few easy options are provided below, though you can also deploy it to any other service you'd like.

See here for instructions on how to deploy to a Huggingface Space.

Deploy to Repl.it (WIP)

Still working on this. It's a bit more technical than the Huggingface option; you can give it a shot by clicking on the button below.

Run on Repl.it

You'll need to set your secrets in Repl.it similar to the Huggingface instructions above. Currently .env files don't work properly so it only uses the default configuration.

Local Development

To run the proxy locally for development or testing, install Node.js >= 18.0.0 and follow the steps below.

  1. Clone the repo
  2. Install dependencies with npm install
  3. Create a .env file in the root of the project and add your API keys. See the .env.example file for an example.
  4. Start the server in development mode with npm run start:dev.

You can also use npm run start:dev:tsc to enable project-wide type checking at the cost of slower startup times. npm run type-check can be used to run type checking without starting the server.

Prompt Logging Setup (Optional)

See the Google Sheets logging documentation for instructions on how to set up logging to a Google Sheet.