Skip to content
This repository was archived by the owner on Feb 5, 2023. It is now read-only.

acheong08/ChatGPT-API-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Official API released by OpenAI. Please use that instead. The model name is text-chat-davinci-002-20230126

ChatGPT API Server

Release Go Binaries

Quickstart

Setup

  1. Install Go
  2. go install github.com/acheong08/ChatGPT-API-server@latest

If the latest commit fails, try using one of the release binaries

Build

  1. git clone https://github.com/acheong08/ChatGPT-API-server/
  2. cd ChatGPT-API-server
  3. go install .

Usage

ChatGPT-API-server <port> <API_KEY>

The admin key can be anything you want. It's just for authenticating yourself.

Connect agents

Take note of your IP address or domain name. This could be localhost or a remote IP address. The default port is 8080

Check out our firefox agent. More versions in the works.

There is also a Python based client by @ahmetkca (WIP)

Usage

Quickstart

(After connecting agents)

 $ curl "http://localhost:8080/api/ask" -X POST --header 'Authorization: <API_KEY>' -d '{"content": "Hello world", "conversation_id": "<optional>", "parent_id": "<optional>"}'

Note: if you want to use conversation_id, you also need to use parent_id!

Routes

router.GET("/client/register", handlers.Client_register) // Used by agent router.POST("/api/ask", handlers.API_ask) // For making ChatGPT requests router.GET("/api/connections", handlers.API_getConnections) // For debugging router.POST("/admin/users/add", handlers.Admin_userAdd) // Adds an API token router.POST("/admin/users/delete", handlers.Admin_userDel) // Invalidates a token (based on user_id) router.GET("/admin/users", handlers.Admin_usersGet) // Get all users

Parameters for each route

/client/register (GET)

N/A. Used for websocket

/api/ask (POST)

Headers: Authorization: <USER_TOKEN>

The user token can be set by the admin via /admin/users/add. You can also use the api key as the token. Both work by default

Data:

{ "content": "Hello world", "conversation_id": "<optional>", "parent_id": "<optional>" }

Do not enter conversation or parent id if not available. If you want to use either of these, you need to specify both! i.e. request.parent_id=response.response_id and request.conversation_id=response.conversation_id

Response:

{ "id": "", "response_id": "<UUID>", "conversation_id": "<UUID>", "content": "<string>", "error": "" }

/api/connections (GET)

Headers: None

Data: None

Response:

{ "connections": [ { "Ws": {}, "Id": "<UUID>", "Heartbeat": "<Time string>", "LastMessageTime": "<Time string>" } ] }

/admin/users/add (POST)

Headers: None

Data:

{ "admin_key": "<string>" }

Response:

{ "user_id": "<UUID>", "token": "<UUID>" }

/admin/users/delete (POST)

Headers: None

Data:

{ "admin_key": "<string>", "user_id": "<UUID>" }

Response:

{ "message": "User deleted" }

/admin/users (GET)

Parameters: ?admin_key=<string>

Example usage: curl "http://localhost:8080/admin/users?admin_key=some_random_key"

Response:

{ "users": [ { "user_id": "<UUID>", "token": "<UUID>" }, { "user_id": "<UUID>", "token": "<UUID>" }, { "user_id": "<UUID>", "token": "<UUID>" }, { "user_id": "<UUID>", "token": "<UUID>" }, ... ] }

Docker

open docker-compose.yml and add your own custom api-key in <API_KEY> section

version: "3" services: chatgpt-api-server: build: . ports: - "8080:8080" command: ["ChatGPT-API-server", "8080", "<API_KEY>", "-listen", "0.0.0.0"]

then run:

docker-compose up or docker-compose up -d (if you want a persistent instance)

About

API server for ChatGPT

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 5