You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:16:03