一、OneAPI 是什么

简介

OneAPI 是一个多渠道大模型API统一管理和分发的系统。

核心功能

快速安装

我个人推荐使用docker-compose.yml的方式进行快速部署,比直接使用命令直接运行Docker更加准确和便于维护。

根据实际环境进行参数的调整,参考docker-compose.yml文件如下:

version: '3.4'

services:
  one-api:
    image: "justsong/one-api:v0.6.7"
    container_name: one-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "3001:3000"
    volumes:
      - ./data/oneapi:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=oneapi:123456@tcp(db:3306)/one-api  # 修改此行,或注释掉以使用 SQLite 作为数据库
      - REDIS_CONN_STRING=redis://redis
      - SESSION_SECRET=random_string  # 修改为随机字符串
      - TZ=Asia/Shanghai
#      - NODE_TYPE=slave  # 多机部署时从节点取消注释该行
#      - SYNC_FREQUENCY=60  # 需要定期从数据库加载数据时取消注释该行
#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # 多机部署时从节点取消注释该行
    depends_on:
      - redis
      - db
    healthcheck:
      test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: "redis:7.2.5-alpine"
    container_name: redis
    restart: always

  db:
    image: "mysql:8.2.0"
    restart: always
    container_name: mysql
    volumes:
      - ./data/mysql:/var/lib/mysql  # 挂载目录,持久化存储
    #ports:
    #  - '3306:3306'
    environment:
      TZ: Asia/Shanghai   # 设置时区
      MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' # 设置 root 用户的密码
      MYSQL_USER: oneapi   # 创建专用用户
      MYSQL_PASSWORD: '123456'    # 设置专用用户密码
      MYSQL_DATABASE: one-api   # 自动创建数据库

服务启动

docker-compose up -d

服务状态

NAME      IMAGE                                     COMMAND                  SERVICE   CREATED       STATUS                 PORTS
mysql     mysql:8.2.0          "docker-entrypoint.s…"   db        10 days ago   Up 10 days             3306/tcp, 33060/tcp
one-api   one-api:v0.6.7       "/one-api --log-dir …"   one-api   10 days ago   Up 10 days (healthy)   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
redis     redis:7.2.5-alpine   "docker-entrypoint.s…"   redis     10 days ago   Up 10 days             6379/tcp

二、渠道与令牌配置

修改密码

服务访问URL:http://x.x.x.x:3000 初始账号用户名为 root,密码为 123456

首次登录会提示修改默认密码,注意修改后密码要记住。

使用方法

  • 步骤1:在渠道页面添加自己大模型及申请的API Key
  • 步骤2:使用令牌访问 One API,使用方式与OpenAI API一致

    注意,具体的 API Base 的格式取决于你所使用的客户端。

OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"

测试验证

请求

curl https://<host>:<port>/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -d '{
     "model": "gpt-4o-mini",
     "messages": [{"role": "user", "content": "Say this is a test!"}],
     "temperature": 0.7
   }'

返回

{
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677858242,
    "model": "gpt-4o-mini",
    "usage": {
        "prompt_tokens": 13,
        "completion_tokens": 7,
        "total_tokens": 20
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "\n\nThis is a test!"
            },
            "logprobs": null,
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

验证测试 - postman

  • 请求方式:POST
  • URL是自己部署的OneAPI的服务地址加端口:http://<host>:<port>/v1/completions
  • Authoriztion 类型选择Bear Token, 后面的token 填入我的令牌里生成的token即可;

  • Body 选择 raw -> JSON 这里模型使用的是Kimi的,根据自己渠道中添加的大模型来填写实际的模型名称。

一切配置完成之后,点击send,之后会显示生成的内容。