import { openai } from "@ai-sdk/openai"; import { streamText, type UIMessage, convertToModelMessages, tool, stepCountIs, zodSchema, } from "ai"; import { z } from "zod"; // Allow streaming responses up to 30 seconds export const maxDuration = 30; export async function POST(req: Request) { const { messages }: { messages: UIMessage[] } = await req.json(); const result = streamText({ model: openai("gpt-5.4-nano"), messages: await convertToModelMessages(messages), stopWhen: stepCountIs(10), tools: { get_current_weather: tool({ description: "Get the current weather", inputSchema: zodSchema( z.object({ city: z.string(), }), ), execute: async ({ city }) => { return `The weather in ${city} is sunny`; }, }), }, }); return result.toUIMessageStreamResponse(); }