Last updated on November 6, 2024 am
One-api 是 OpenAI 接口管理 & 分发系统,支持Azure、Anthropic Claude、Google PaLM 2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key。
部署 One-api
1 2
| mkdir -p ~/app/one-api && cd ~/app/one-api && nano docker-compose.yml sudo docker-compose up -d
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| version: '3' services: one-api: image: justsong/one-api:latest environment: - TZ=Asia/Shanghai volumes: - ./data:/data restart: unless-stopped networks: default: external: true name: ngpm
|
客户端
新建渠道
- Azure 需要确保部署模型的名称是
gpt-35-turbo
- 可以将 one-api 本身当一个渠道进行套娃
- 在 日志 里可以看到对不同渠道进行了负载均衡
附加 关闭 Azure 筛选
- 安装油猴插件
- 去控制台新建一个筛选器,将筛选关闭,并开启异步筛选注释
- 设置模型部署中模型的高级选项,切换筛选器为刚刚创建的筛选器
附加 Google Vertex
注册 GCP 账户
启用 Vertex AI API
创建服务账户
添加到 one-api 渠道
- 区域 Region 写
us-east5
- Vertex AI Project ID 在 json 文件里
- Google Cloud Application Default Credentials JSON 为下载的 json 文件的内容
- 详细内容点此
附加 Amazon Bedrock
1
| mkdir -p ~/app/litellm && cd ~/app/litellm && nano docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| version: "3.9" services: litellm: image: ghcr.io/berriai/litellm:main-latest volumes: - ./proxy_server_config.yaml:/app/proxy_server_config.yaml environment: - AWS_ACCESS_KEY_ID=<ACCESS_KEY> - AWS_SECRET_ACCESS_KEY=<SECRET_ACCESS_KEY> - AWS_REGION_NAME=us-west-2 restart: unless-stopped networks: default: external: true name: ngpm
|
1 2
| wget https://github.com/BerriAI/litellm/raw/main/proxy_server_config.yaml
|
1 2 3 4 5 6 7
| model_list: - model_name: bedrock-claude-haiku litellm_params: model: bedrock/anthropic.claude-3-haiku-20240307-v1:0 general_settings: master_key: sk-1234
|
1
| sudo docker-compose up -d
|
one-api
添加渠道
推荐 部署 SillyTavern
1 2 3 4 5 6 7 8 9 10 11
| mkdir -p ~/app/sillytavern && cd ~/app/sillytavern && nano docker-compose.yml sudo docker-compose up -d sudo docker-compose logs nano config/config.yaml
sudo docker-compose restart sudo docker-compose logs
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| version: "3" services: sillytavern: image: ghcr.io/sillytavern/sillytavern:latest volumes: - "./config:/home/node/app/config" - "./user:/home/node/app/public/user" restart: unless-stopped networks: default: external: true name: ngpm
|
附加 部署 Next-Web
1 2
| mkdir -p ~/app/next-web && cd ~/app/next-web && nano docker-compose.yml sudo docker-compose up -d
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| version: '3' services: next-web: image: yidadaa/chatgpt-next-web:latest environment: - TZ=Asia/Shanghai - BASE_URL=https://cdn.limour.top/one-api - CUSTOM_MODELS=-all,+gpt-4o-mini@Deepbricks,+gpt-3.5-turbo@openai,+gpt-4-turbo@openai,+gpt-4o@openai,+o1-mini@openai,+gpt-claude-3.5-haiku@OpenRouter,+gpt-claude-3.5-sonnet@OpenRouter - ENABLE_BALANCE_QUERY=1 - HOSTNAME=0.0.0.0 - DEFAULT_MODEL=gpt-4o restart: unless-stopped networks: default: external: true name: ngpm
|
- 添加基本身份验证
- 修改
/api/openai
接口的 header
- 设置里的
对话摘要模型
改为 gpt-4o-mini
, 否则会默认使用最贵的模型来生成标题
1 2 3 4 5 6 7 8 9 10 11
| chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; set $next_header $http_authorization; if ($http_authorization = "Basic <用户1>"){ set $next_header "Bearer <用户1的key>"; } if ($http_authorization = "Basic <用户2>"){ set $next_header "Bearer <用户2的key>"; } proxy_set_header Authorization $next_header;
|
附加 搭建独角数卡
- 反向代理
- 账号:
admin
- 密码:
admin
- 数据库地址填
shop-db
- Redis地址 填
shop-redis
1 2 3 4 5 6 7 8
| mkdir -p ~/app/shop && cd ~/app/shop && nano docker-compose.yml && nano env.conf mkdir storage uploads && chmod -R 777 ./* && sudo docker-compose up -d
sudo docker-compose down
sudo docker-compose up -d
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| version: "3" services: shop: image: ghcr.io/apocalypsor/dujiaoka:latest environment: - TZ=Asia/Shanghai - INSTALL=true - ADMIN_HTTPS=true volumes: - ./env.conf:/dujiaoka/.env - ./uploads:/dujiaoka/public/uploads - ./storage:/dujiaoka/storage restart: always shop-db: image: mariadb:focal restart: always environment: - MYSQL_ROOT_PASSWORD=changeyourpassword - MYSQL_DATABASE=dujiaoka - MYSQL_USER=dujiaoka - MYSQL_PASSWORD=changeyourpassword volumes: - ./mysql:/var/lib/mysql shop-redis: image: redis:alpine restart: always volumes: - ./redis:/data networks: default: external: true name: ngpm
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| APP_NAME=璃墨的小卖部 APP_ENV=local APP_KEY=base64:rKwRuI6eRpCw/9e2XZKKGj/Yx3iZy5e7+FQ6+aQl8Zg= APP_DEBUG=true APP_URL=https://shop.limour.top
LOG_CHANNEL=stack
# 数据库配置 DB_CONNECTION=mysql DB_HOST=shop-db DB_PORT=3306 DB_DATABASE=dujiaoka DB_USERNAME=dujiaoka DB_PASSWORD=changeyourpassword
# redis配置 REDIS_HOST=shop-redis REDIS_PASSWORD= REDIS_PORT=6379
BROADCAST_DRIVER=log SESSION_DRIVER=file SESSION_LIFETIME=120
# 缓存配置 # file为磁盘文件 redis为内存级别 # redis为内存需要安装好redis服务端并配置 CACHE_DRIVER=redis
# 异步消息队列 # sync为同步 redis为异步 # 使用redis异步需要安装好redis服务端并配置 QUEUE_CONNECTION=redis
# 后台语言 ## zh_CN 简体中文 ## zh_TW 繁体中文 ## en 英文 DUJIAO_ADMIN_LANGUAGE=zh_CN
# 后台登录地址 ADMIN_ROUTE_PREFIX=/admin
# 是否开启https (前端开启了后端也必须为true) # 后台登录出现0err或者其他登录异常问题,大概率是开启了https而后台没有开启,把下面的false改为true即可 ADMIN_HTTPS=true
|
【记录】使用one-api聚合Azure和OpenAI的API
https://hexo.limour.top/Aggregating-Azure-and-OpenAI-APIs-with-OneAPI