部署oneapi集成chatglm3的api服务,同时基于chatweb-next调通,为了使用dify做知识库
1.需要先部署chatglm3的api模式
(1)进入该文件夹openai_api_demo文件夹,里面包含启动服务的openai_api.py,还有测试你的服务是否正常的openai_api_request.py。requirements.txt是你需要的环境
(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
openai_api_request.py修改
(4)启动chatglm3的api服务
python openai_api.py
(5)测试服务是否成功
swagger ui 地址:http://localhost:18000,具体的端口和ip以你的实际为准。这个能出来,基本上是成功了,但是还是测试下最好。
python openai_api_request.py
然后你启动和请求都会在控制台打印出来
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
(3)如何使用
1.点击渠道,然后点击添加新的渠道
如图添加:模型重定向,key可以不与value保持一致,例如
{
"11111": "chatglm3-6b-32k"
}
2.点击令牌,然后点击添加新的令牌,
如图添加即可,过期时间我选择的永不过期,他这个样式颜色都是灰色的不明显。
如图,然后点击复制即可
这个令牌相当于openai的apikey
sk-rAT4WUc47APPQSKUC357B727Ea48424eB06b739xxxxxxx
—————–分割线————————————
以上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这个项目来测试
搭建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的配置
然后测试,他已经回复了他是
总结:
oneapi可以理解为把各种各样的大模型集成到一个平台,然后我们的应用去请求oneapi即可,你可以让别人注册用户然后卖额度等。具体的自己探索。