Skip to content

fatwang2/coze2openai

Repository files navigation

C2O

English · 中文

Use Coze on your favorite OpenAI client.

This project converts the Coze API to the OpenAI API format, giving you access to Coze LLMs, knowledge base, plugins, and workflows within your preferred OpenAI clients.

Features

  • Convert Coze API into an OpenAI API
  • Support streaming and blocking
  • Supports multi-bot switching

Preparation

  1. Register with coze.com or coze.cnand obtain your API token cozeapitoken

  2. Create your bot and publish it to the API cozeapi

  3. Obtain the bot's ID,the number after the bot parameter, and configure it as an environment variable

https://www.coze.com/space/73428668341****/bot/73428668*****

Deployment

Zeabur

Deploy on Zeabur

Vercel

Deploy with Vercel

Note: Vercel's serverless functions have a 10-second timeout limit.

Railway

Deploy on Railway

Docker Deployment

  1. Ensure Docker and Docker Compose are installed on your machine.

  2. Clone the project repository:

    git clone https://github.com/your-username/coze2openai.git
    cd coze2openai
    
  3. Create and configure the .env file:

    cp .env.template .env
    

    Edit the .env file and fill in your BOT_ID and other necessary configurations.

  4. Build and start the Docker container:

    docker-compose up -d
    
  5. Visit http://localhost:3000 to confirm that the service is running correctly.

To stop the service, run:

docker-compose down

Note: The Dockerfile uses Taobao NPM mirror, you can comment out or replace other different mirror:

ENV NPM_CONFIG_REGISTRY=https://registry.npmmirror.com/
ENV PNPM_REGISTRY=https://registry.npmmirror.com/

Local Deployment

  1. Set the environment variable on .env file
BOT_ID=xxxx
  1. Install dependencies
pnpm install
  1. Run the project
pnpm start

Usage

  1. OpenAI Clients

botgem

  1. Code
const response = await fetch('http://localhost:3000/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_COZE_API_KEY',
  },
  body: JSON.stringify({
    model: 'model_name',
    messages: [
      { role: 'system', content: 'You are a helpful assistant.' },
      { role: 'user', content: 'Hello, how are you?' },
    ],
  }),
});

const data = await response.json();
console.log(data);

Environment Variable

This project provides some additional configuration items set with environment variables:

Environment Variable Required Description Example
BOT_ID Yes The ID of the bot. Obtain it from the Develop page URL of your bot in Coze. The number after the bot parameter is the bot ID. 73428668*****
BOT_CONFIG No Configure different models to correspond to different bot ids to enable fast bot switching on the client side. Models that are not included will request the default BOT_ID {"model_name_1": "bot_id_1", "model_name_2": "bot_id_2", "model_name_3": "bot_id_3"}
COZE_API_BASE No Choose coze.com or coze.cn api.coze.com, api.coze.cn

Roadmap

Coming Soon

  • Image support
  • Audio-to-text
  • Text-to-audio

Available Now

  • Coze.cn
  • Multi-bot switching
  • Workflow, Plugins, Knowledge base
  • Continuous dialogue with the history of chat
  • Zeabur & Vercel & Railway deployment
  • Streaming & Blocking
  • Docker deployment

Contact

Feel free to reach out for any questions or feedback

X
telegram

Buy Me A Coffee

License

This project is licensed under the MIT License.