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

使用Jupyter Notebook调用GPT-3 API获意外响应,求排查

问题原因及解决方案

核心问题1:模型选择错误

你使用的是davinci(GPT-3基础补全模型),它的定位是文本补全,而非对话交互。这类模型会基于训练数据中出现的类似prompt上下文进行补全,而不是像ChatGPT那样做针对性的对话回应。训练数据里大量存在包含"Hello, ChatGPT!"的评测、教程类内容,所以模型会输出这类无关结果。

正确的做法是使用专门的对话模型,比如gpt-3.5-turbo,这类模型对应OpenAI的ChatCompletion接口,而非Completion接口。

核心问题2:Prompt缺乏明确指令

你的prompt仅为"Hello, ChatGPT!",没有明确告知模型需要以对话助手的身份回应。对于补全模型来说,这种模糊的prompt会触发训练数据中最常见的关联内容,而非你预期的对话回复。

修正后的代码示例

import openai
import os

# 设置API密钥
openai.api_key = os.environ["OPENAI_API_KEY"]

# 使用对话模型
model_engine = "gpt-3.5-turbo"

# 构造对话格式的prompt,明确角色
messages = [
    {"role": "system", "content": "你是一个友好的对话助手,用简洁的语气回应用户的问候。"},
    {"role": "user", "content": "Hello, ChatGPT!"}
]

# 调用ChatCompletion接口
response = openai.ChatCompletion.create(
    model=model_engine,
    messages=messages,
    temperature=0.5,
    frequency_penalty=0.0,
    presence_penalty=0.0
)

# 提取并打印回应
print(response.choices[0].message["content"])

额外说明

  • 对话模型的messages参数需要明确角色(system定义模型身份,user为用户输入),这能精准引导模型的输出方向。
  • 之前调整的temperature、惩罚参数并非核心问题,当模型和prompt正确后,适度调整这些参数即可优化多样性,无需设置过高的惩罚值(0.0-0.2的范围足够)。

内容的提问来源于stack exchange,提问作者JoeyC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:47:15