nextjs15使用ai sdk的一些问题
目前作者使用的版本:
"@ai-sdk/openai": "^2.0.10",
"@ai-sdk/react": "^2.0.10",
"ai": "^5.0.10",
"@modelcontextprotocol/sdk": "^1.17.2",
"next": "15.4.5",
1.streamObject
方法不支持调用工具tools
可以使用streamText
方法替换,并在配置中添加experimental_output
的属性支持,即可以流式返回了,配合前端使用useObject
前端代码
const { object, submit } = useObject({
api: '/api/test',
schema: z.object({
databases: z.array(z.string()),
}),
});
route.ts
代码,注意⚠️一定要添加stopWhen: stepCountIs(6)
const result = streamText({
model: openai('gpt-4.1-mini'),
prompt: "列出PostgresDB中所有数据库",
tools: tools,
stopWhen: stepCountIs(6),
experimental_output: Output.object({
schema: z.object({
databases: z.array(z.string()),
})
}),
onFinish: async () => {
await mcpClient.close();
},
onError: async (error) => {
console.error("mcp error:", error);
await mcpClient.close();
},
});
License:
CC BY 4.0