GoGma's picture
Update src/app/api/prompt-engineer/route.ts
d1ea4f6 verified
raw
history blame
2.33 kB
import { NextRequest, NextResponse } from "next/server";
import ZAI from "z-ai-web-dev-sdk";
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const { prompt, type, platform } = body;
if (!prompt) {
return NextResponse.json(
{ success: false, error: "Prompt requerido" },
{ status: 400 }
);
}
const zai = await ZAI.create();
// Guías por plataforma
const platformGuides: Record<string, string> = {
instagram: "Formato cuadrado o vertical, colores vibrantes, lifestyle",
tiktok: "Video corto, dinamico, trending sounds",
youtube: "Thumbnail llamativo, titulo optimizado, larga duracion",
onlyfans: "Contenido exclusivo, conexion personal",
general: "Contenido universal, apto para todas las plataformas",
};
// Guías por tipo
const typeGuides: Record<string, string> = {
image: "Prompt para generacion de imagen detallado",
video: "Prompt para video con movimiento y escenas",
reel: "Prompt para reel corto y dinamico",
carousel: "Prompt para serie de imagenes coherentes",
};
const guide =
platformGuides[platform || "general"] ||
platformGuides.general;
const typeGuide =
typeGuides[type || "image"] ||
typeGuides.image;
// ✅ PROMPT BIEN FORMADO
const completion = await zai.chat.completions.create({
messages: [
{
role: "system",
content:
"Eres un ingeniero de prompts experto. Optimiza el prompt del usuario para generar mejor contenido. Responde SOLO con el prompt optimizado, sin explicaciones.",
},
{
role: "user",
content: `Optimiza este prompt para ${platform || "general"}:
Guia: ${guide}
Tipo: ${typeGuide}
Prompt original:
${prompt}`,
},
],
});
const optimizedPrompt =
completion.choices?.[0]?.message?.content || prompt;
return NextResponse.json({
success: true,
originalPrompt: prompt,
optimizedPrompt,
type: type || "image",
platform: platform || "general",
});
} catch (error) {
console.error("Prompt engineer error:", error);
return NextResponse.json(
{ success: false, error: "Error" },
{ status: 500 }
);
}
}