Python;对象未定义错误,我以为我定义了它

问题描述 投票:0回答:1

我是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 中尝试不同的命令,或者将它们创建为对象,但没有成功

python python-3.x python-requests sse openai-api
1个回答
0
投票

您必须将

reqBody...
的位置缩进到
print(json.loa...
上一级。

正确代码:

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()
© www.soinside.com 2019 - 2024. All rights reserved.