最近我正在开发基于LangChain的知识库。为了降低tokens的费用,需要完成接口替换。将原来调用OpenAI接口的方式改为使用ChatGLM2-6B接口。这样的改变不仅可以节省成本,还能提高文本输出速度。以下是我们在实践中取得的成果,现在与大家分享!
一、环境配置:
去github上搜索并下载chatglm2-6B库(搜索chatglm2-6B,下载第一个链接的库即可)
启动python openai_api.py
监听端口为8000。
二、代码编写:
1、首先要有一个“openai.api_key”,这里直接输入个test进行测试即可。
2、还要有一个域名,这里设置的是“http://localhost:8000/v1”
3、用chatglm2-6b查询输入的文字
(4、输出总耗时)
总代码如下:
import openai
import time
import json
openai.api_key = 'test'
openai.api_base = "
http://localhost:8000/v1
"
start_time = time.time()
while True:
query = input("请输入:")
if "end" == query:
break
start_time = time.time()
response = openai.ChatCompletion.create(
model="chatglm2-6b",
messages=[
{"role": "system", "content": ""},
{"role": "user", "content": query}
],
stream = True
)
response_time = time.time()
print(f'请求耗时:{response_time - start_time:.2f} s')
for i in response:
t = time.time()
if "content" in i.choices[0].delta:
msg = i.choices[0].delta.content
print(msg, end='', flush=True)
print(f'\n总耗时: {t - start_time:.2f} s')
print("===结束===")
三、运行此文件即可进行测试,效果如下:
请输入:讲一个笑话
请求耗时:0.00 s
下面是一个简短的笑话:
为什么小鸟站在电线上不会被电到呢?
因为它们不接地啊!
总耗时: 0.67 s
===结束===
以上就是我在配置并使用OpenAI的形式流式访问ChatGLM2-6B的简单方法,希望可以帮到大家。欢迎发私信与我共同讨论更多该领域的知识!