简单记录一下成功通过本地api方式访问chatGLM2-6B的接口
前面已经在本地Win11系统部署chatGLM2-6B完成,接着前面的项目目录。现在尝试使用API的方式调用大模型接口。
1、采用普通api进行调用
按照官方文档,应该是先安装fastapi uvicorn这个库
pip install fastapi uvicorn
这里我已经安装完成。
开始运行api.py,还是把模型修改为本地路径:
OK,运行没有任何报错:
我们先打开网址http://127.0.0.1:8000/看一下:
这说明接口至少是能够访问的。
官方推荐:
采用curl带参数的命令进行访问,这是Linux的访问方式,在windows我决定用postman测试一下,这里先安装好postman。安装过程需要注册,这边省略掉~~
打开postman,新建一个访问接口。
选择post,URL,并在消息头中填写参数,如下:
再在body中选择raw,将JSON格式的请求内容写进入:
点击send:
成功接收到接口返回的消息,接口调通!
2、采用openai的方式调用接口
除了支持上述的api调用,chatGLM也支持 OpenAI 格式的流式 API 部署,如下这种:
可以看到,直接导入openai库,然后输入一些模式,就可以像其他库一样调用,确实非常方便,我们这里进行尝试。
首先安装openai
pip install openai==0.28.1
这里必须要指定版本,如果不指定,会默认安装最新的版本,超过1.0了,后续代码会报错。
安装好之后启动openai_api.py
我们发现,成功启动,没有报错。
直接运行这段代码:
import openai
if __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)
嗯?怎么报错了呢?
看这报错信息,我也确实没有看懂,网上找了半天方法,甚至试了关代理,重启电脑等,但是都不是关键的,后边在百度搜索如何解决,直到看到:ChatGLM流式输出的报错修复_chatcompletionresponse然后返回值-CSDN博客
我进行尝试,将所有的:
chunk.json(exclude_unset=True, ensure_ascii=False)
替换为:
chunk.model_dump_json(exclude_unset=True)
再次运行:
OK!确实没有任何问题。哇哦,感谢大佬。
这种调用方式,直接将chatGLM变为一个python库,需要时进行导入,这样也太完美了!
版权归原作者 AI进化中 所有, 如有侵权,请联系我们删除。