午夜福利啪爽国产片精品_国产亚洲永久域名_在线观看日本国产成人免费_免费天堂无码人妻成人AV电影_久久99热全是成人精品

全球簡(jiǎn)訊:重新定義性價(jià)比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo閃電更新,成本降90%,Python3.10接入

北國(guó)春遲,春寒料峭略帶陰霾,但ChatGPT新接口模型gpt-3.5-turbo的更新為我們帶來(lái)了一絲暖意,使用成本更加親民,比高端產(chǎn)品ChatGPT Plus更實(shí)惠也更方便,畢竟ChatGPT Plus依然是通過(guò)網(wǎng)頁(yè)端來(lái)輸出,Api接口是以token的數(shù)量來(lái)計(jì)算價(jià)格的,0.002刀每1000個(gè)token,token可以理解為字?jǐn)?shù),說(shuō)白了就是每1000個(gè)字合0.01381人民幣,以ChatGPT無(wú)與倫比的產(chǎn)品力而言,如此低的使用成本讓所有市面上其他所有類ChatGPT產(chǎn)品都黯然失光。

本次讓我們使用Python3.10光速接入ChatGPT API的新模型gpt-3.5-turbo。


(資料圖)

OpenAI庫(kù)的SDK方式接入

OpenAI官方同步更新了接口Api的三方庫(kù)openai,版本為0.27.0,如果要使用新的模型gpt-3.5-turbo,就必須同步安裝最新版本:

pip3 install openai==0.27.0

隨后建立chat.py文件:

import openaiopenai.api_key = "openai的接口apikey" completion = openai.ChatCompletion.create(  model="gpt-3.5-turbo",   messages=[{"role": "user", "content": "北國(guó)風(fēng)光,千里冰封,萬(wàn)里雪飄,請(qǐng)接著續(xù)寫(xiě),使用沁園春的詞牌"}])print(completion["choices"][0]["message"]["content"])

程序返回:

瑤池冰緣,雪舞凄美, 隔窗寒意,似乎鉆進(jìn)衣袖。寒塘渡鴨,雪中梅影, 孤獨(dú)是一片銀白的姿態(tài)。冰雪如花,開(kāi)放在草莓園里, 可愛(ài)的雪人,瑟瑟發(fā)抖著歡呼。北風(fēng)凜冽,寒暄難擋, 四季明媚,但冬日尤甜美。千里冰封,萬(wàn)里雪飄, 窗外天下壯觀,此時(shí)正是京城美。

閃電般秒回,讓用慣了ChatGPT網(wǎng)頁(yè)端的我們幾乎不能適應(yīng)。

gpt-3.5-turbo,對(duì)得起turbo的加成,帶渦輪的ChatGPT就是不一樣。

ChatGPT聊天上下文

我們知道ChatGPT的最大特色就是可以聯(lián)系語(yǔ)境中的上下文,換句話說(shuō),ChatGPT可以根據(jù)之前的回答來(lái)優(yōu)化之后的回答,形成上下文關(guān)系,讓人機(jī)對(duì)話更加連貫和富有邏輯性。

這里取決于輸入?yún)?shù)中的role參數(shù),每一個(gè)role的取值,對(duì)應(yīng)的場(chǎng)景不一樣,其中system用于在對(duì)話開(kāi)始時(shí)給ChatGPT一個(gè)指示或聲明,有點(diǎn)像引導(dǎo)詞,使得后續(xù)的回答更具有個(gè)性化和專業(yè)化。user是用于給用戶提問(wèn)的或者說(shuō)是用來(lái)給用戶輸入引導(dǎo)詞的。assistant顧名思義,是用于輸入ChatGPT的回答內(nèi)容:

import openaiopenai.api_key = "apikey" class ChatGPT:    def __init__(self,chat_list=[]) -> None:        # 初始化對(duì)話列表        self.chat_list = []        # 顯示接口返回    def show_conversation(self,msg_list):        for msg in msg_list:            if msg["role"] == "user":                print(f"Me: {msg["content"]}\n")            else:                print(f"ChatGPT: {msg["content"]}\n")    # 提示chatgpt    def ask(self,prompt):        self.chat_list.append({"role":"user","content":prompt})        response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.chat_list)        answer = response.choices[0].message["content"]        # 添加歷史對(duì)話,形成上下文關(guān)系        self.chat_list.append({"role":"assistant","content":answer})        self.show_conversation(self.chat_list)

這里每一次會(huì)話都會(huì)加入chat_list的聊天列表,角色為assistant,為了讓ChatGPT分析上下文,下面開(kāi)始測(cè)試:

if __name__ == "__main__":    chat = ChatGPT()    chat.ask("你是一位南宋詞人,詞風(fēng)婉約,有點(diǎn)類似李清照女士,請(qǐng)使用蝶戀花詞牌描寫(xiě)北國(guó)春光")

程序返回:

Me: 你是一位南宋詞人,詞風(fēng)婉約,有點(diǎn)類似李清照女士,請(qǐng)使用蝶戀花詞牌描寫(xiě)北國(guó)春光ChatGPT: 北國(guó)春光,清冽宜人。望眼欲穿的遠(yuǎn)山如翠起伏,遙遠(yuǎn)而縹緲。層層疊疊的林木,新綠徜徉,婆娑搖曳。風(fēng)兒吹起,沁人心脾,點(diǎn)點(diǎn)梅花飄至,宛如仙境?;ㄩg蝶戀,春色滿園。鶯鶯燕燕,鳥(niǎo)鳴花落,時(shí)時(shí)惹人遐思。碧空萬(wàn)里,藍(lán)天白云,彩云飄飄,繽紛奪目。柳絮飄飄,輕羽翩翩,小河潺潺,流水聲聲,婉轉(zhuǎn)動(dòng)人。清風(fēng)拂面,落英繽紛。聽(tīng)著草蟲(chóng)唱起,充滿陽(yáng)光的氣息,輕輕飄蕩,仿佛一條無(wú)形的小河,展開(kāi)春天的美好,留下美好的記憶。人間萬(wàn)象,卻只有這春色無(wú)邊,似乎奔向遠(yuǎn)方的快樂(lè)。

此時(shí)再次發(fā)問(wèn):

chat.ask("請(qǐng)使用另外一種粗狂陽(yáng)剛的風(fēng)格再寫(xiě)一遍上面的詞")

程序返回:

Me: 請(qǐng)使用另外一種粗狂陽(yáng)剛的風(fēng)格再寫(xiě)一遍上面的詞ChatGPT: 北國(guó)春光,不柔不媚,金色的陽(yáng)光照在地上,充滿了男子氣概。草原上風(fēng)吹不斷,那些瘋狂的野花,在春風(fēng)中舞蹈??矗∧切┟颓蒽o靜地盤旋在高空,監(jiān)視著整片草原,威武雄壯?;▍查g,一只雄性蜂鷹躍躍欲飛,看上去仿佛要沖破天際。這里的春天有時(shí)帶著風(fēng)沙,但這并不能阻止狂放豪邁的草原奔騰前行,而這樣的北國(guó)春光,怎會(huì)輕易被遺忘!

雖然內(nèi)容有些尬,但確實(shí)聯(lián)系了上下文。

需要注意的是,token不僅計(jì)算ChatGPT的接口返回內(nèi)容,也會(huì)計(jì)算用戶的發(fā)送內(nèi)容,token的計(jì)算方法不是簡(jiǎn)單的一詞一個(gè),例如中文輸入,一個(gè)中文漢字占2個(gè)字節(jié)數(shù),而對(duì)于一次中文測(cè)試中,50個(gè)漢字被算為100個(gè)tokens,差不多是英文的一倍,而token還計(jì)算api發(fā)送中的角色字段,如果像上文一樣實(shí)現(xiàn)上下文操作,就必須發(fā)送ChatGPT接口返回的歷史聊天列表,這意味著ChatGPT上下文聊天的成本并不是我們想象中的那么低,需要謹(jǐn)慎使用。

原生ChatGPT接口異步訪問(wèn)

除了官方的SDK,新接口模型也支持原生的Http請(qǐng)求方式,比如使用requests庫(kù):

pip3 install requests

直接請(qǐng)求openai官方接口:

import requestsh = {    "Content-Type": "application/json",    "Authorization": "Bearer apikey"}d = {    "model": "gpt-3.5-turbo",    "messages":[{"role": "user", "content": "請(qǐng)解釋同步請(qǐng)求和異步請(qǐng)求的區(qū)別"}],    "max_tokens": 100,    "temperature": 0}u = "https://api.openai.com/v1/chat/completions"r = requests.post(url=u, headers=h, json=d).json()print(r)

程序返回:

{"id": "chatcmpl-6qDNQ9O4hZPDT1Ju902coxypjO0mY", "object": "chat.completion", "created": 1677902496, "model": "gpt-3.5-turbo-0301", "usage": {"prompt_tokens": 20, "completion_tokens": 100, "total_tokens": 120}, "choices": [{"message": {"role": "assistant", "content": "\n\n同步請(qǐng)求和異步請(qǐng)求是指在客戶端向服務(wù)器發(fā)送請(qǐng)求時(shí),客戶端等待服務(wù)器響應(yīng)的方式不同。\n\n同步請(qǐng)求是指客戶端發(fā)送請(qǐng)求后,必須等待服務(wù)器響應(yīng)后才能繼續(xù)執(zhí)行后續(xù)的代碼。在等待服務(wù)器響應(yīng)的過(guò)程中,客戶端的界面會(huì)被阻塞,用戶無(wú)法進(jìn)行"}, "finish_reason": "length", "index": 0}]}

ChatGPT原生接口也支持異步方式請(qǐng)求,這里使用httpx:

pip3 install httpx

編寫(xiě)異步請(qǐng)求:

h = {    "Content-Type": "application/json",    "Authorization": "Bearer apikey"}d = {    "model": "gpt-3.5-turbo",    "messages":[{"role": "user", "content": "請(qǐng)解釋同步請(qǐng)求和異步請(qǐng)求的區(qū)別"}],    "max_tokens": 100,    "temperature": 0}u = "https://api.openai.com/v1/chat/completions"import asyncioimport httpxasync def main():    async with httpx.AsyncClient() as client:        resp = await client.post(url=u, headers=h, json=d)        result = resp.json()        print(result)asyncio.run(main())

程序返回:

{"id": "chatcmpl-6qDNQ9O4hZPDT1Ju902coxypjO0mY", "object": "chat.completion", "created": 1677902496, "model": "gpt-3.5-turbo-0301", "usage": {"prompt_tokens": 20, "completion_tokens": 100, "total_tokens": 120}, "choices": [{"message": {"role": "assistant", "content": "\n\n同步請(qǐng)求和異步請(qǐng)求是指在客戶端向服務(wù)器發(fā)送請(qǐng)求時(shí),客戶端等待服務(wù)器響應(yīng)的方式不同。\n\n同步請(qǐng)求是指客戶端發(fā)送請(qǐng)求后,必須等待服務(wù)器響應(yīng)后才能繼續(xù)執(zhí)行后續(xù)的代碼。在等待服務(wù)器響應(yīng)的過(guò)程中,客戶端的界面會(huì)被阻塞,用戶無(wú)法進(jìn)行"}, "finish_reason": "length", "index": 0}]}

我們也可以將異步請(qǐng)求方式封裝到對(duì)話類中,完整代碼:

import openaiimport asyncioimport httpxopenai.api_key = "apikey" h = {    "Content-Type": "application/json",    "Authorization": f"Bearer {openai.api_key}"}d = {    "model": "gpt-3.5-turbo",    "messages":[{"role": "user", "content": "請(qǐng)解釋同步請(qǐng)求和異步請(qǐng)求的區(qū)別"}],    "max_tokens": 100,    "temperature": 0}u = "https://api.openai.com/v1/chat/completions"class ChatGPT:    def __init__(self,chat_list=[]) -> None:        # 初始化對(duì)話列表        self.chat_list = []    # 異步訪問(wèn)    async def ask_async(self,prompt):        d["messages"][0]["content"] = prompt        async with httpx.AsyncClient() as client:            resp = await client.post(url=u, headers=h, json=d)            result = resp.json()            print(result)        # 顯示接口返回    def show_conversation(self,msg_list):        for msg in msg_list:            if msg["role"] == "user":                print(f"Me: {msg["content"]}\n")            else:                print(f"ChatGPT: {msg["content"]}\n")    # 提示chatgpt    def ask(self,prompt):        self.chat_list.append({"role":"user","content":prompt})        response = openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=self.chat_list)        answer = response.choices[0].message["content"]        # 添加歷史對(duì)話,形成上下文關(guān)系        self.chat_list.append({"role":"assistant","content":answer})        self.show_conversation(self.chat_list)if __name__ == "__main__":    chat = ChatGPT()    chat.ask("你是一位南宋詞人,詞風(fēng)婉約,有點(diǎn)類似李清照女士,請(qǐng)使用蝶戀花詞牌描寫(xiě)北國(guó)春光")    chat.ask("請(qǐng)使用另外一種粗狂陽(yáng)剛的風(fēng)格再寫(xiě)一遍上面的詞")    asyncio.run(chat.ask_async("請(qǐng)解釋同步請(qǐng)求接口和異步請(qǐng)求接口的區(qū)別"))

結(jié)語(yǔ)

低成本ChatGPT接口模型gpt-3.5-turbo更容易接入三方的客戶端,比如微信、QQ、釘釘群之類,比起ChatGPT網(wǎng)頁(yè)端,ChatGPT接口的響應(yīng)速度更加迅速且穩(wěn)定,ChatGPT,永遠(yuǎn)的神,沒(méi)有之一,且不可替代,最后奉上異步上下文封裝項(xiàng)目,與君共觴:github.com/zcxey2911/chatgpt_api_Contextual_async

關(guān)鍵詞:

推薦閱讀

雛妓門

2023-03-08

eli manning

2023-03-06

滬ICP備2023005074號(hào)-40

聯(lián)系我們:5 85 59 73 @qq.com

版權(quán)所有 ? 2020 今日印刷網(wǎng)

關(guān)于我們| 聯(lián)系我們| 投稿合作| 法律聲明| 廣告投放

所載文章、數(shù)據(jù)僅供參考,使用前務(wù)請(qǐng)仔細(xì)閱讀網(wǎng)站聲明。本站不作任何非法律允許范圍內(nèi)服務(wù)!