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

升级OpenAI至4.0+后Vercel AI SDK无响应及Runtime适配问题

解决OpenAI v4+与Vercel AI SDK在Node.js Runtime下无响应问题

核心问题分析

你的代码中直接从req.body解构messages是错误的——在Node.js Runtime的Next.js API路由中,请求体并非直接可用的JSON对象,需要先通过await req.json()解析。这会导致messages为undefined,OpenAI API调用失败,最终没有返回响应,触发日志中的“API resolved without sending a response”提示。

修复后的代码

import { OpenAIStream, StreamingTextResponse } from 'ai'
import OpenAI from 'openai'

export const runtime = 'nodejs'

const openai = new OpenAI({
    apiKey: process.env.OPENAI_TOKEN
});

export default async function POST(req) {
    // 关键修复:先解析请求体
    const body = await req.json();
    const { messages } = body;

    // 复制原数组再修改,避免意外修改请求体数据
    const modifiedMessages = [...messages];
    modifiedMessages.unshift({
        role: 'system',
        content: 'You are a chatbot...'
    })

    const res = await openai.chat.completions.create({
        model: 'gpt-3.5-turbo',
        messages: modifiedMessages,
        stream: true,
    })

    const stream = OpenAIStream(res);

    return new StreamingTextResponse(stream)
}

额外检查项

  • 确保你的ai包(Vercel AI SDK)版本是最新的,以适配OpenAI v4+:执行npm update ai或yarn upgrade ai
  • 确认环境变量OPENAI_TOKEN已正确配置,且包含完整的API密钥(以sk-开头)
  • 可添加错误捕获排查隐性问题:
    try {
      const res = await openai.chat.completions.create({...});
      // ...后续逻辑
    } catch (err) {
      console.error('OpenAI API Error:', err);
      return new Response(JSON.stringify({ error: err.message }), { status: 500 });
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:42:39