调用OpenAI gpt-3.5-turbo API遇InvalidRequestError求助
解决gpt-3.5-turbo批量请求的错误问题
核心问题分析
- 用错了API接口:
gpt-3.5-turbo是聊天模型,必须用openai.ChatCompletion.create()接口,你之前用的openai.Completion.create()是给文本补全模型(比如text-davinci-003)设计的,不支持messages参数。 - 代码变量名错误:循环遍历的是
item,但构建请求时误用了未定义的prompt变量。
修正后的完整代码
import openai import os # 别硬编码API密钥,建议用环境变量或Colab Secrets存储 openai.api_key = os.getenv("OPENAI_API_KEY") # 替换成你的密钥获取方式 def get_response(prompts: list, model="gpt-3.5-turbo"): responses = [] for item in prompts: response = openai.ChatCompletion.create( model=model, messages=[{"role": "user", "content": item}], # 这里用item而非prompt temperature=0, max_tokens=20, top_p=1, frequency_penalty=0, presence_penalty=0 ) responses.append(response['choices'][0]['message']['content'].strip()) return responses # 测试调用 prompts = ['What are your functionalities?', 'what is the best name for an ice-cream shop?', 'who won the premier league last year?'] responses = get_response(prompts) for idx, res in enumerate(responses): print(f"Prompt {idx+1}: {prompts[idx]}") print(f"Response: {res}\n")
额外优化建议
- 密钥安全:绝对不要把API密钥直接写在代码里,Colab可以用左侧栏的「Secrets」功能存储,再通过
os.getenv读取。 - 异常处理:加上try-except块应对网络错误、配额不足等问题,避免程序直接崩溃:
def get_response(prompts: list, model="gpt-3.5-turbo"): responses = [] for item in prompts: try: response = openai.ChatCompletion.create( model=model, messages=[{"role": "user", "content": item}], temperature=0, max_tokens=20, top_p=1, frequency_penalty=0, presence_penalty=0 ) responses.append(response['choices'][0]['message']['content'].strip()) except Exception as e: responses.append(f"请求失败: {str(e)}") return responses
内容的提问来源于stack exchange,提问作者corvusMidnight
相关产品推荐
相关产品推荐

