使用Python调用OpenAI GPT-4时消息参数格式错误问题求助
问题解答
1. 不同模型代码差异的原因
OpenAI的模型主要分为两类,对应不同的API接口,并非20种完全不同的代码:
- 补全模型(如Babbage、Davinci等旧版基础模型):使用
completions接口,输入为纯文本prompt。 - 聊天模型(如GPT-3.5-turbo、GPT-4系列):使用
chat.completions接口,输入为结构化的messages数组,模拟多轮对话场景。
你之前用Babbage成功运行,是因为它属于补全模型,而GPT-4是聊天模型,接口逻辑不同,这是代码存在差异的核心原因。
2. GPT-4调用报错的修复方案
报错的直接原因是prompt变量末尾多了一个逗号,导致prompt变成元组类型(而非字符串),API接收messages[0].content时,期望传入字符串或合法消息对象,却收到了元组,因此触发类型错误。
修复后的代码:
model = 'gpt-4' prompt = f"Translate the following from Ancient Greek into English: {txt}\n" # 移除末尾多余的逗号 messages = [{'role':'user','content': prompt}] obj = client.chat.completions.create(model=model, messages=messages) # 获取结果示例 translation = obj.choices[0].message.content
如果需要添加系统提示词规范翻译风格,正确写法是分开构造消息数组:
messages = [ {'role':'system','content': '你是专业的古希腊语翻译专家,翻译需准确贴合语境,保留原文学术性'}, {'role':'user','content': f"Translate the following from Ancient Greek into English: {txt}\n"} ]
内容的提问来源于stack exchange,提问作者logic1976
相关产品推荐
相关产品推荐

