import { NextRequest, NextResponse } from "next/server"; // ⚠️ IMPORTANT: Update with your valid MiniMax API key // Get key from: https://platform.minimaxi.com/ const MINIMAX_API_KEY = process.env.MINIMAX_API_KEY || "YOUR_API_KEY_HERE"; const MINIMAX_BASE_URL = "https://api.minimax.chat/v1"; interface Message { role: "system" | "user" | "assistant"; content: string; } interface RequestBody { message: string; language: "es" | "en"; businessType: string; businessName: string; history?: Message[]; } export async function POST(request: NextRequest) { try { const body: RequestBody = await request.json(); const { message, language, businessType, businessName, history = [] } = body; // Strict rules as per spec const systemPrompt = `Eres el asistente de IA de SiteMente, una empresa que ayuda negocios locales en España a implementar inteligencia artificial. REGLAS OBLIGATORIAS: 1. NUNCA digas que eres humano o un empleado real. Eres "el asistente de inteligencia artificial". 2. NUNCA des precios exactos. Usa "desde €299/mes" o "consulta nuestro pricing". 3. NUNCA garantices resultados o números de ventas. 4. SIEMPRE sugiere reservar una demo de 15 minutos con una persona real. 5. Responde de forma natural y conversacional, como un profesional útil. 6. Si no entiendes, sé honesto y pide que repitan. IDIOMA: Responde siempre en el mismo idioma que usa el usuario. Por defecto español de España. EJEMPLOS: - "¿Cuánto cuesta?" → "Tenemos planes desde 299€/mes.¿Te gustaría que te mandemos detalles?" - "¿Puedes hacer esto?" → "Podemos ayudarte con eso. ¿Qué tal si agendamos una llamada de 15 minutos?" - "¿Quién eres?" → "Soy el asistente de IA de SiteMente. ¿En qué puedo ayudarte?" Contexto: Negocio tipo: ${businessType}. Empresa: ${businessName}.`; // Build messages array - embed system in first user message for better compliance const systemInstructions = `INSTRUCCIONES: Eres el asistente de IA de SiteMente. - NO digas que eres humano - NO des precios exactos (usa "desde €299") - NO garantices resultados - SIEMPRE sugiere una demo de 15 min - Responde en español natural Usuario dice: ${message}`; const messages: Message[] = [ { role: "user", content: systemInstructions } ]; // Add conversation history (last 6 messages for context) if (history.length > 0) { const cleanHistory = history.slice(-6).map((msg: any) => ({ role: msg.role === "user" ? "user" : "assistant", content: msg.content })); messages.push(...cleanHistory); } // Add current message messages.push({ role: "user", content: message }); // Call MiniMax API const response = await fetch(`${MINIMAX_BASE_URL}/text/chatcompletion_v2`, { method: "POST", headers: { "Authorization": `Bearer ${MINIMAX_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ model: "MiniMax-M2.5", messages, temperature: 0.7, max_tokens: 300 }) }); if (!response.ok) { const error = await response.text(); console.error("MiniMax API error:", error); const fallback = language === "es" ? "Disculpa, ¿podrías repetirlo?" : "Sorry, could you repeat that?"; return NextResponse.json({ response: fallback }); } const data = await response.json(); const aiResponse = data.choices?.[0]?.message?.content?.trim() || data.reply || (language === "es" ? "¿En qué puedo ayudarte?" : "How can I help you?"); return NextResponse.json({ response: aiResponse }); } catch (error) { console.error("Voice chat API error:", error); return NextResponse.json( { response: "¿Podrías repetirlo, por favor?" }, { status: 500 } ); } } export const runtime = "nodejs";