2023-11-20 14:15:32 -06:00

50 lines
1.3 KiB
TypeScript

// pages/api/agent.js
//This is the API route called by front end to generate text (story, DALLE descriptors, etc.)
import { NextRequest, NextResponse } from 'next/server';
import OpenAI from 'openai';
export async function POST(req: NextRequest): Promise<NextResponse> {
if (req.method === 'POST') {
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
const { prompt } = await req.json();
try {
const imageCompletion = await openai.images.generate({
model: 'dall-e-3',
prompt: prompt,
size: '1024x1024'
});
const { data } = imageCompletion;
console.log({ data });
console.log('THIS IS THE DALLE IMAGE:', data[0].url);
return new NextResponse(JSON.stringify({ text: data }), {
status: 200
});
} catch (error) {
if (error instanceof OpenAI.APIError) {
return new NextResponse(JSON.stringify({ error: error.message }), {
status: 400
});
}
return new NextResponse(JSON.stringify({ error: error.message }), {
status: 500
});
}
}
const response = NextResponse.next();
response.headers.set('Allow', 'POST');
// Return a 405 response with a custom message
return new NextResponse(`Method ${req.method} Not Allowed`, {
status: 405,
headers: {
Allow: 'POST'
}
});
}