使用 One-API 作为 AI 代理

背景

  • 客户端对接各种服务商的大语言模型需要实现各种接口,使用One API可以简化这一过程,可以统一为通用的OpenAI格式的接口。

搭建

  • 使用docker部署One API服务端:

    1
    2
    3
    4
    5
    6
    7
    8
    docker run -d -p 3000:3000 \
    --name one-api \
    --restart always \
    -e TZ=Asia/Shanghai \
    -e SESSION_SECRET="${SESSION_SECRET}" \
    -e SQL_DSN="${USER}:${PASSWORD}@tcp(${HOST}:${PORT})/oneapi" \
    -v ${DATA_PATH}:/data \
    ghcr.io/martialbe/one-api

    环境变量SESSION_SECRET设置之后将使用固定的会话密钥,系统在重新启动后已登录用户cookie将依旧有效;环境变量SQL_DSN设置数据库连接信息。

  • 登录One API服务http://localhost:3000,使用默认的用户名root和密码123456登录。

渠道配置

  • 以阿里云百炼服务商为例:

    选择类型为“阿里云百炼”,填入名称“百炼”,添加分组以及选择将使用的阿里云百炼的模型,编写重定向规则,key为客户端使用的模型名称,value为阿里云百炼的模型名称,最后填入密钥。

令牌设置

  • 创建客户端ai-commit令牌:

  • 点击复制,生成客户端ai-commit的令牌:

域名配置

  • 准备域名

  • 添加公网子域名解析,以阿里云为例:

  • nginx配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # one-api
    server{
    listen 80;
    listen [::]:80;
    server_name openai.gardenqaq.cn;

    location / {
    client_max_body_size 64m;
    proxy_http_version 1.1;
    proxy_pass http://${ip}:${port};
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header Accept-Encoding gzip;
    proxy_read_timeout 300s; # GPT-4 需要较长的超时时间,请自行调整
    }
    }

客户端使用

  • vscode为例,安装ai-commit插件,配置ai-commit插件:

  • 点击ai-commit按钮,自动调用模型,生成commit信息:

参考文献