部署oneapi集成chatglm3的api服务,同时基于chatweb-next调通,为了使用dify做知识库

1.需要先部署chatglm3的api模式

(1)进入该文件夹openai_api_demo文件夹,里面包含启动服务的openai_api.py,还有测试你的服务是否正常的openai_api_request.py。requirements.txt是你需要的环境

image-20231206203015653

image-20231206203241786

(2)打开anaconda prompt,进入到对应的目录,E:\AI Sofeware\chatglm3\ChatGLM3\openai_api_demo 安装准备环境
pip install -r requirements.txt
(3)修改对应的模型地址,与之前的demo一样
1.MODEL_PATH = 'E:\AI Sofeware\chatglm3\ChatGLM3\models\chatglm3-6b-32k'

注意

我是win11 不知道为什么8000端口我起不来,所以我修改了端口,如图所示:我改成了18000端口(pc基本上10000以上的端口系统都不会占用)

如果修改了端口,那么openai_api_request.py。这个测试对应的请求的路径也需要修改为18000

image-20231206203820450

image-20231206204018923

openai_api_request.py修改

image-20231206204242054

(4)启动chatglm3的api服务
python openai_api.py
(5)测试服务是否成功

swagger ui 地址:http://localhost:18000,具体的端口和ip以你的实际为准。这个能出来,基本上是成功了,但是还是测试下最好。

image-20231206204719591

python openai_api_request.py

然后你启动和请求都会在控制台打印出来

image-20231206204647055

2.搭建oneapi服务,

(1)oneapi项目:https://github.com/songquanpeng/one-api

简介:OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用.

(2)那必须使用docker-compose.yml搭建

https://github.com/songquanpeng/one-api/blob/main/docker-compose.yml

没什么需要修改的,因为我本地已经有3306的mysql了所以吧端口改成了3307

version: '3.4'

services:
  one-api:
    image: justsong/one-api:latest
    container_name: one-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - "3000: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:latest
    container_name: redis
    restart: always

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

成功后访问http://localhost:3000,

账号就是你的mysql设置的账号密码

账号:root
//第一次登录后记得修改密码
密码:123456

image-20231206205747283

(3)如何使用

1.点击渠道,然后点击添加新的渠道

image-20231206210338807

如图添加:模型重定向,key可以不与value保持一致,例如

{
    "11111": "chatglm3-6b-32k"
}

image-20231206210940869

image-20231206210535426

2.点击令牌,然后点击添加新的令牌,

image-20231206211313155

如图添加即可,过期时间我选择的永不过期,他这个样式颜色都是灰色的不明显。

image-20231206211418374

如图,然后点击复制即可

这个令牌相当于openai的apikey

sk-rAT4WUc47APPQSKUC357B727Ea48424eB06b739xxxxxxx

image-20231206211538021

—————–分割线————————————

以上chatglm3的api服务,和对应的oneapi 服务已经搭建了

chatglm3:http://localhost:18000,

oneapi:http://localhost:3000,

然后你们可以使用postman去请求oneapi即可

http://localhost:3000/v1/chat/completions

请求体就是openai的官方demo:把对应的url换成oneapi的地址,apikey换成你的oneapi的令牌,model换成你的chatglm3-6b

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Say this is a test!"}],
     "temperature": 0.7
   }'

也可以用ChatGPT Next这个项目来测试

image-20231206212142995

搭建ChatGPT Next来测试oneapi是否成功

项目地址:https://github.com/Yidadaa/ChatGPT-Next-Web

官网的命令

docker pull yidadaa/chatgpt-next-web

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY=sk-xxxx \
   -e CODE=your-password \
   yidadaa/chatgpt-next-web

由于我们不是请求openai所以这些环境变量不需要(需要修改端口为3009与oneapi的端口冲突了)

使用这个命令即可

docker run -d -p 3009:3000 yidadaa/chatgpt-next-web --restart always

然后访问http://localhost:3009,点击左下角的设置按钮,修改ChatGPT Next的配置

image-20231206213431852

image-20231206213356912

然后测试,他已经回复了他是

image-20231206213601135

总结:

oneapi可以理解为把各种各样的大模型集成到一个平台,然后我们的应用去请求oneapi即可,你可以让别人注册用户然后卖额度等。具体的自己探索。

todo 基于oneapi 使用dify/fastgpt 做知识库