如何用OpenAI的形式流式訪問ChatGLM2-6B?30行代碼簡單解決!
? ? 最近我正在開發(fā)基于LangChain的知識(shí)庫。為了降低tokens的費(fèi)用,需要完成接口替換。將原來調(diào)用OpenAI接口的方式改為使用ChatGLM2-6B接口。這樣的改變不僅可以節(jié)省成本,還能提高文本輸出速度。以下是我們?cè)趯?shí)踐中取得的成果,現(xiàn)在與大家分享!
一、環(huán)境配置:
去github上搜索并下載chatglm2-6B庫(搜索chatglm2-6B,下載第一個(gè)鏈接的庫即可)
啟動(dòng)python openai_api.py
監(jiān)聽端口為8000。
二、代碼編寫:
1、首先要有一個(gè)“openai.api_key”,這里直接輸入個(gè)test進(jìn)行測試即可。
2、還要有一個(gè)域名,這里設(shè)置的是“http://localhost:8000/v1”

3、用chatglm2-6b查詢輸入的文字

(4、輸出總耗時(shí))

總代碼如下:
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("請(qǐng)輸入:")
? ?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'請(qǐng)求耗時(shí):{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總耗時(shí): {t - start_time:.2f} s')
? ?print("===結(jié)束===")
三、運(yùn)行此文件即可進(jìn)行測試,效果如下:
請(qǐng)輸入:講一個(gè)笑話
請(qǐng)求耗時(shí):0.00 s
下面是一個(gè)簡短的笑話:
為什么小鳥站在電線上不會(huì)被電到呢?
因?yàn)樗鼈儾唤拥匕?
總耗時(shí): 0.67 s
===結(jié)束===

? 以上就是我在配置并使用OpenAI的形式流式訪問ChatGLM2-6B的簡單方法,希望可以幫到大家。歡迎發(fā)私信與我共同討論更多該領(lǐng)域的知識(shí)!