Spaces:
Build error
Build error
File size: 2,329 Bytes
333c51a 5cff373 333c51a d1ea4f6 333c51a d1ea4f6 5cff373 d1ea4f6 5cff373 d1ea4f6 5cff373 d1ea4f6 5cff373 d1ea4f6 333c51a d1ea4f6 333c51a d1ea4f6 333c51a d1ea4f6 333c51a 5cff373 d1ea4f6 333c51a d1ea4f6 333c51a d1ea4f6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 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 }
);
}
}
|