31 lines
674 B
TypeScript
31 lines
674 B
TypeScript
import { openai } from '@ai-sdk/openai';
|
|
import {
|
|
consumeStream,
|
|
convertToModelMessages,
|
|
streamText,
|
|
UIMessage,
|
|
} from 'ai';
|
|
|
|
export const maxDuration = 30;
|
|
|
|
export async function POST(req: Request) {
|
|
const { messages }: { messages: UIMessage[] } = await req.json();
|
|
|
|
const prompt = convertToModelMessages(messages);
|
|
|
|
const result = streamText({
|
|
model: openai('gpt-4o'),
|
|
prompt,
|
|
abortSignal: req.signal,
|
|
});
|
|
|
|
return result.toUIMessageStreamResponse({
|
|
onFinish: async ({ isAborted }) => {
|
|
if (isAborted) {
|
|
console.log('Aborted');
|
|
}
|
|
},
|
|
consumeSseStream: consumeStream, // needed for correct abort handling
|
|
});
|
|
}
|