我正在尝试使用 Nextjs 13 的新路由处理程序解决方案创建一个 API 端点。该 API 使用 LangChain,并将响应流式传输回前端。当调用 OpenAI 包装器类时,我传入 Streaming 属性,并提供回调函数。然后,该回调函数将流作为块(即令牌)提供。我想将这些令牌流式传输到前端,以在生成人工智能时输出其响应。
我能够使用“旧”API 路由解决方案和以下代码来完成此工作:
import { OpenAI } from "langchain/llms/openai";
export default async function handler(req, res) {
const chat = new OpenAI({
modelName: "gpt-3.5-turbo",
streaming: true,
callbacks: [
{
handleLLMNewToken(token) {
res.write(token);
},
},
],
});
await chat.call("Write me a song about sparkling water.");
res.end();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将此代码转换为新的路由处理程序解决方案,但我无法使其正常工作。
我尝试了很多不同的方法,但没有成功。
例如:
import { NextResponse } from "next/server";
import { OpenAI } from "langchain/llms/openai";
export const dynamic = "force-dynamic";
export const revalidate …Run Code Online (Sandbox Code Playgroud) 我正在尝试 Next v13.2 中的新 Route API,但似乎无法弄清楚如何获取 POST 请求中的正文值。
在客户端,我调用 API 的方式如下:
const response = await fetch("/api/bot", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt: "Testing" }),
});
Run Code Online (Sandbox Code Playgroud)
然后我在应用程序目录中创建了一个名为route.js的文件
我为 POST 请求创建了函数,并尝试以多种方式从请求对象中获取值,但没有成功。
就像是:
export async function POST(request) {
console.log("Request", request.body.prompt);
return new Response({ response: prompt });
}
Run Code Online (Sandbox Code Playgroud)
我尝试从请求对象中获取正文值,但似乎没有任何效果。