OpenAI API 提供了大量可用于執(zhí)行各種 NLP 任務(wù)的尖端 AI 模型。但是,在某些情況下,僅向 OpenAI 發(fā)出 API 請求可能還不夠,例如需要實時更新時。這就是服務(wù)器發(fā)送事件 (SSE) 發(fā)揮作用的地方。
SSE 是一種簡單有效的技術(shù),用于將數(shù)據(jù)從服務(wù)器實時流式傳輸?shù)娇蛻舳恕?span id="n5n3t3z" class="kdocs-color" style="color:#080F17;">如何在 Windows 計算機中備份驅(qū)動程序在本文中,我們將探討如何使用 Python 和 SSE 實時流式傳輸來自 OpenAI API 的響應(yīng)。到本教程結(jié)束時,您將對如何實現(xiàn)此技術(shù)有深入的了解,并且能夠輕松地將響應(yīng)從 OpenAI API 流式傳輸?shù)侥膽?yīng)用程序。
檢索您的 OpenAI API 密鑰
為了能夠從您的 Python 腳本中訪問 OpenAI API,我們需要使用 API 密鑰。
要檢索您的 OpenAI API 密鑰,您需要在 https://openai.com/ 創(chuàng)建一個用戶帳戶并訪問 OpenAI 儀表板中的 API 密鑰部分以創(chuàng)建一個新的 API 密鑰。

此密鑰是秘密的,不得與任何其他人共享。稍后在實現(xiàn) Python 腳本以訪問 OpenAI 的 API 時,我們將需要使用此密鑰。
執(zhí)行腳本
在一個新文件夾中創(chuàng)建一個文件 main.py 并通過插入以下四行代碼開始實施:
import requests
import json
import sseclient
API_KEY = '[INSERT YOUR OPENAI API KEY HERE]'
這段代碼在 Python 中導(dǎo)入了三個模塊:requests、json 和 sseclient。
requests 是一個流行的 Python 庫,用于向服務(wù)器發(fā)送 HTTP 請求并接收響應(yīng)。
json 是一個提供處理 JSON 數(shù)據(jù)的函數(shù)的庫。它允許您編碼和解碼 JSON 數(shù)據(jù)。sseclient 是一個用于處理服務(wù)器發(fā)送事件 (SSE) 的庫——一種在客戶端和服務(wù)器之間通過 HTTP 進行的事件驅(qū)動通信。
如果您之前沒有在 Python 開發(fā)環(huán)境中安裝這些庫,您首先需要使用 pip 命令來安裝這些包:
pip install requests json sseclient-py
該代碼還定義了一個用于存儲 OpenAI API 密鑰的變量 API_KEY。請將占位符文本 [INSERT YOUR OPENAI API KEY HERE] 替換為您之前從 OpenAI 帳戶中檢索到的 API 密鑰。
接下來通過實現(xiàn)和執(zhí)行 performRequestWithStreaming() 函數(shù)來進一步完成實現(xiàn),該函數(shù)包含向 OpenAI API 完成端點執(zhí)行 POST 請求并以流模式接收答案所需的所有邏輯:
import requests
import json
import sseclient
API_KEY = '[INSERT YOUR OPENAI API KEY HERE]'
def performRequestWithStreaming():
reqUrl = 'https://api.openai.com/v1/completions'
reqHeaders = {
'Accept': 'text/event-stream',
'Authorization': 'Bearer ' + API_KEY
}
reqBody = {
"model": "text-davinci-003",
"prompt": "What is Python?",
"max_tokens": 100,
"temperature": 0,
"stream": True,
}
request = requests.post(reqUrl, stream=True, headers=reqHeaders, json=reqBody)
client = sseclient.SSEClient(request)
for event in client.events():
if event.data != '[DONE]':
print(json.loads(event.data)['choices'][0]['text'], end="", flush=True),
if __name__ == '__main__':
performRequestWithStreaming()
該函數(shù)使用請求模塊向 URL https://api.openai.com/v1/completions 發(fā)出 POST 請求。請求標頭包括 Accept 和 Authorization 字段,授權(quán)標頭使用代碼中前面定義的 API_KEY 變量。
請求正文定義為 reqBody 變量,包含 API 請求的多個參數(shù),包括模型名稱、提示文本、要返回的最大令牌數(shù)、溫度以及對流式響應(yīng)的要求。
來自 API 請求的響應(yīng)被分配給請求變量。然后,使用 sseclient 庫處理響應(yīng),并將請求對象傳遞給 SSEClient 構(gòu)造函數(shù)以創(chuàng)建新的客戶端對象。
然后代碼使用 for 循環(huán)迭代客戶端對象中的事件。對于每個事件,事件數(shù)據(jù)都會打印到控制臺,除非事件數(shù)據(jù)等于“[DONE]”,在這種情況下什么都不打印。json.loads()函數(shù)用于解析事件中的JSON數(shù)據(jù),提取結(jié)果字典的choices字段,得到補全的文本。print() 函數(shù)的 end 和 flush 參數(shù)用于確保輸出不被緩沖并立即顯示在控制臺上。
執(zhí)行腳本
執(zhí)行腳本
$ python main.py
然后您應(yīng)該能夠看到 OpenAI 提供的答案(提示“什么是 Python?”)被流式傳輸?shù)矫钚小?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-418716.html
結(jié)論
總之,使用 SSE 和 Python 實時流式傳輸來自 OpenAI API 的響應(yīng)是在應(yīng)用程序中訪問 AI 模型的一種強大而高效的方式。按照本文中的分步指南,您現(xiàn)在應(yīng)該能夠?qū)嵤┐思夹g(shù)并從 OpenAI API 接收實時更新。SSE 是一種簡單有效的解決方案,用于將數(shù)據(jù)從服務(wù)器流式傳輸?shù)娇蛻舳耍瑢τ谀切┫M麑⑵鋺?yīng)用程序的 AI 功能提升到一個新水平的人來說,它是一個很好的選擇。文章來源地址http://www.zghlxwxcb.cn/news/detail-418716.html
到了這里,關(guān)于使用 Python 流式傳輸來自 OpenAI API 的響應(yīng):分步指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!