Python中NameError: reqUrl未定义问题求助
Python代码出现NameError: name 'reqUrl' is not defined的解决方法
你的代码报错核心是变量作用域错误,同时还有两处拼写问题,具体修正方案如下:
错误原因
reqUrl和reqHeaders定义在performRequestWithStreaming函数内部,属于局部变量,函数外部的代码无法访问这些变量- 请求逻辑代码写在函数外部,但主入口调用的是空函数,实际请求代码根本没执行
- 存在两处拼写错误:
maxtokens应为max_tokens(OpenAI API参数要求),reqbody应为reqBody(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", "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()
关键修改说明
- 将
reqBody、请求发送、SSE处理的所有代码移到performRequestWithStreaming函数内部,确保所有变量在同一作用域内可访问 - 修正
maxtokens为max_tokens,符合OpenAI API的参数命名规范 - 修正
reqbody为reqBody,匹配变量定义的大小写
内容的提问来源于stack exchange,提问作者Tibor Varga
相关产品推荐
相关产品推荐

