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

解决ChatGPT回复中途截断问题(排除CURL原因)

问题解决:OpenAI API回复被截断

原因分析

你的问题出在text-davinci-002模型的默认参数限制上——该模型调用createCompletion时,默认max_tokens值为16,这个参数控制模型生成内容的最大token数量,16个token仅能输出极短的内容,直接导致回复中途截断。

解决方案

调用createCompletion时,显式设置max_tokens参数为合适数值(比如200、500,注意text-davinci-002最大支持4097个token),即可让模型生成更长的完整回复。可选搭配temperature参数调整回复随机性。

修改后的核心代码片段:

// Generate a response with ChatGPT
const completion = await openai.createCompletion({
  model: "text-davinci-002",
  prompt: prompt,
  max_tokens: 200, // 调整此值控制回复长度
  temperature: 0.7 // 可选,0为严谨风格,1为随机风格
});

完整修改代码

const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");

const { Configuration, OpenAIApi } = require("openai");

const configuration = new Configuration({
  apiKey: "my-api-key",
});
const openai = new OpenAIApi(configuration);

// Set up the server
const app = express();
app.use(bodyParser.json());
app.use(cors())

// Set up the ChatGPT endpoint
app.post("/chat", async (req, res) => {
  // Get the prompt from the request
  const { prompt } = req.body;

  // Generate a response with ChatGPT
  const completion = await openai.createCompletion({
    model: "text-davinci-002",
    prompt: prompt,
    max_tokens: 200, // 新增参数,控制最大生成token数
    temperature: 0.7
  });

  console.log(completion.data.choices[0].text)
  res.send(completion.data.choices[0].text);
});

// Start the server
const port = 8080;
app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

验证测试

重启服务后,使用原CURL命令测试:

curl -X POST -H "Content-Type: application/json" -d '{"prompt":"Hello, how are you doing today?"}' http://localhost:8080/chat

此时模型将生成完整的长回复,不会再出现截断问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:35:11