ChatGLM2-6B API的使用 发表于 2024-01-26 更新于 2024-02-27
字数总计: 924 阅读时长: 3分钟 阅读量: 成都
前言 之前已经完成了ChatGLM2-6B的本地部署,但是只能直接使用,而不能接入自己的程序。
官方也提供了API的启动文件,本文将会记录API的使用方法。
在阅读之前确保已完成本地部署开源语言模型ChatGLM2-6b 。
准备 官方提供两种格式的API启动脚本,一种是HTTP形式的接口,一种是OpenAI格式的流式API,分别是api.py
与openai_api.py
。
安装额外依赖
1 2 pip install fastapi uvicorn
修改启动文件
如果系统为Windows 则需要将api.py
与openai_api.py
中的THUDM/chatglm2-6b
修改为THUDM\chatglm2-6b
。
启动 HTTP 使用以下指令启动HTTP的API脚本(自行替换项目目录)
1 2 3 4 5 6 cd D:\ChatGLM2-6Bconda activate D:\ChatGLM2-6B\ENV python api.py
出现以下内容即表示启动成功
根据不同的终端测试API
Windows-CMD Windows-Powershell Linux 请求
1 curl -X POST http://127 .0 .0 .1 :8000 -H "Content-Type : application/json" -d "{\"prompt\": \"你好\", \"history\": []}"
响应(经过格式美化)
1 2 3 4 5 6 7 8 9 10 11 { "response" : "你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。" , "history" : [ [ "你好" , "你好👋!我是人 工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。" ] ] , "status" : 200 , "time" : "2024-01-26 16:20:04" }
请求
1 2 3 $body = '{"prompt": "你好", "history": []}' $headers = @ {"Content-Type" = "application/json" }Invoke-RestMethod -Method POST -Uri http://127.0 .0.1 :8000 -Body $body -Headers $headers
响应(这里回答英文的原因可能是字符集的问题,接口接收消息时乱码了,导致默认返回英文。)
1 2 3 response history status time -------- ------- ------ ---- Hello! How can I assist you today? {?? Hello! How can I assist you today?} 200 2024-01-26 16:29:43
未经测试,通过官方文档得知
请求
1 2 3 curl -X POST "http://127.0.0.1:8000" \ -H 'Content-Type: application/json' \ -d '{"prompt": "你好", "history": []}'
响应
1 2 3 4 5 6 { "response" : "你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。" , "history" : [ [ "你好" , "你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。" ] ] , "status" : 200 , "time" : "2023-03-23 21:38:40" }
OpenAI流式 使用以下指令启动OpenAI格式的流式API脚本(自行替换项目目录)
1 2 3 4 5 6 cd D:\ChatGLM2-6Bconda activate D:\ChatGLM2-6B\ENV python openai_api.py
出现以下内容即表示启动成功
使用python脚本测试API,脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 import openaiif __name__ == "__main__" : openai.api_base = "http://localhost:8000/v1" openai.api_key = "none" for chunk in openai.ChatCompletion.create( model="chatglm2-6b" , messages=[ {"role" : "user" , "content" : "你好" } ], stream=True ): if hasattr (chunk.choices[0 ].delta, "content" ): print (chunk.choices[0 ].delta.content, end="" , flush=True )
可以在项目目录下创建一个openai_api_test.py
文件来装载以上内容,然后使用ChatGLM的环境来运行此脚本
1 2 3 4 5 6 cd D:\ChatGLM2-6Bconda activate D:\ChatGLM2-6B\ENV python openai_api_test.py
如果提示No module named 'openai'
,说明没有安装第三方包,执行pip install openai==0.28.0
并重启终端(博主是重启终端后才生效)后再执行脚本。
执行成功后终端会打印如下内容:
1 你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
参考文档 官方README文档