无法安装OpenAI库,用Python调用ChatGPT报错的解决方法
问题修复方案
错误原因分析
从报错信息可定位三个核心问题:
- 模型名称拼写错误:
text-danvinci-003应为正确的text-davinci-003,这是触发"That model does not exist"错误的直接原因 - API端点使用错误:调用的
/v1/engines/{model}/jobs不是文本补全的正确端点,官方指定的端点为/v1/completions - 响应处理逻辑错误:API返回的是字典对象,不能用
.choices这种属性访问方式,且未提前处理错误响应,导致后续代码崩溃
修复后的代码
import requests with open('../api-key.txt','r') as key: data = key.read().strip() api_key = data # 修正模型名称拼写 model="text-davinci-003" def chat_with_chatgpt(prompt): # 修正API端点,同时请求体中添加model参数 res = requests.post("https://api.openai.com/v1/completions", headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" }, json={ "model": model, "prompt":prompt, "max_tokens":100 }).json() # 优先处理错误响应 if "error" in res: print(f"Error: {res['error']['message']}") return None # 用字典键索引方式获取结果,去除多余空白字符 return res['choices'][0]['text'].strip() while True: prompt = input('Me: ') # 处理空输入情况 if not prompt: print("请输入有效内容") continue response = chat_with_chatgpt(prompt) if response: print(f'ChatGPT: {response}')
修改说明
- 模型名称修正:修正拼写错误,匹配OpenAI官方提供的模型标识
- API端点调整:更换为官方文本补全API端点,同时按照要求在请求体中指定
model参数 - 响应逻辑优化:
- 先检查响应中的错误字段,提前拦截并输出错误信息,避免后续代码报错
- 改用字典键索引的方式访问返回内容,符合Python字典的操作规范
- 对返回文本执行
strip()处理,去除多余空白字符,优化输出格式
- 空输入处理:添加空输入判断,避免无意义的API调用
内容的提问来源于stack exchange,提问作者John Delvin
相关产品推荐
相关产品推荐

