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

Node.js调用GPT-3.5-Turbo接口仅返回success:true无数据问题

问题解决:调用GPT-3.5-Turbo接口未返回预期症状清单数据

问题原因

你代码中读取GPT响应内容的字段错误。GPT-3.5-Turbo的createChatCompletion接口返回的对话内容,存储在choices[0].message.content字段中,而你当前代码用的choices[0].text是旧版文本补全接口(如text-davinci-003)的字段,因此会获取到undefined,最终返回的JSON里data字段缺失,表现为仅返回{"success":true}。

修正后的代码

const express = require("express");
require("dotenv").config();
const { Configuration, OpenAIApi } = require("openai");
const app = express();
app.use(express.json());
const configuration = new Configuration({
  apiKey: process.env.OPEN_AI_KEY,
});
const openai = new OpenAIApi(configuration);

app.post("/try", async (req, res) => {
  try {
    const { prompt } = req.body;
    const response = await openai.createChatCompletion({
      model: "gpt-3.5-turbo",
      messages: [
        {
          role: "system",
          content: "你是一个症状清单提供者,请返回清晰的症状检查清单,建议用分点形式呈现",
        },
        {
          role: "user",
          content: `请列出关于${prompt}需要检查的症状`,
        },
      ],
      max_tokens: 1000,
      temperature: 0,
      top_p: 1.0,
      frequency_penalty: 0.0,
      presence_penalty: 0.0,
    });
    // 修正字段获取逻辑,同时增加空值判断
    const content = response.data.choices[0]?.message?.content || "未获取到症状数据";
    return res.status(200).json({
      success: true,
      data: content,
    });
  } catch (error) {
    return res.status(400).json({
      success: false,
      error: error.response
        ? error.response.data
        : "服务器出现问题 :(",
    });
  }
});

const port = process.env.PORT || 3001;
app.listen(port, () => console.log("server running"));

额外优化建议

如果需要让GPT返回JSON格式的响应(方便后续解析处理),可以修改prompt明确要求:

  • 将system prompt改为:"你是一个症状清单提供者,请严格以JSON数组格式返回需要检查的症状,每个元素为字符串类型的症状描述"
  • user prompt保持不变,这样返回的data就是标准JSON格式,前端可以直接解析使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:43:17