wuyiqunLu
feat: add message to ask user login (#36)
58d7e55 unverified
raw
history blame
No virus
1.3 kB
import { OpenAIStream, StreamingTextResponse } from 'ai';
import OpenAI from 'openai';
import { auth } from '@/auth';
import {
ChatCompletionMessageParam,
ChatCompletionContentPart,
} from 'openai/resources';
import { MessageBase } from '../../../lib/types';
export const runtime = 'edge';
export const POST = async (req: Request) => {
const json = await req.json();
const { messages } = json as {
messages: MessageBase[];
id: string;
url: string;
};
const session = await auth();
if (!session?.user?.email) {
return new Response('Unauthorized', {
status: 401,
});
}
const formattedMessage: ChatCompletionMessageParam[] = messages.map(
message => {
const contentWithImage: ChatCompletionContentPart[] = [
{
type: 'text',
text: message.content as string,
},
];
return {
role: 'user',
content: contentWithImage,
};
},
);
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
const res = await openai.chat.completions.create({
model: 'gpt-4-vision-preview',
messages: formattedMessage,
temperature: 0.3,
stream: true,
max_tokens: 300,
});
const stream = OpenAIStream(res);
return new StreamingTextResponse(stream);
};