我是python新手,找不到一个可行的解决方案,所以我请求你的帮助
下面是我的代码:
import requests
import json
import sseclient
API_KEY = 'Hidden for reasons'
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",
"maxtokens": 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()
字符串
我得到了错误:
Exception has occurred: NameError
name 'reqUrl' is not defined
File bot.py", line 20, in <module>
request = requests.post(reqUrl, stream=True, headers=reqHeaders, json=reqbody)
NameError: name 'reqUrl' is not defined
型
我试着再次定义它,或者在顶部,尝试在请求API中使用不同的命令,或者将它们创建为对象,但都不起作用
3条答案
按热度按时间azpvetkf1#
您必须将
reqBody...
缩进到print(json.loa...
上一级。正确代码:
字符串
toe950272#
pyhton不使用{ }来表示代码块,而是在程序中使用缩进,因为
request = requests.post(reqUrl,stream=True,headers=reqHeaders,json=reqbody)没有缩进,它首先被调用,而不是if条件。
mzaanser3#
我不明白你为什么认为这会起作用。很明显,变量
reqUrl
的级别低于变量request
,因此代码不可能工作。你做了一个奇怪的选择,在函数中定义一个变量。你必须全局化变量reqUrl
或者在函数performRequestWithStreaming()
中定义整个代码。既然你想利用字符串
最好把所有的代码都放在同一个函数中。下面是正确的代码:
型