UNPKG

skailan-ai

Version:

Servicio de IA y procesamiento de lenguaje natural para Skailan

170 lines (142 loc) 5.36 kB
import { AIService } from './AIService'; export class ContentGenerationService { aiService; constructor(llmConfig) { this.aiService = new AIService(llmConfig); } async generateEmail(data, options) { const prompt = ` Genera un email profesional basado en la siguiente información: Asunto: ${data.subject} Destinatario: ${data.recipient} Propósito: ${data.purpose} Contexto: ${data.context || 'N/A'} Tono: ${options?.tone || data.tone || 'professional'} Instrucciones adicionales: - Longitud: ${options?.length || 'medium'} - Idioma: ${options?.language || 'es'} - Incluir llamada a la acción: ${options?.includeCallToAction ? 'Sí' : 'No'} ${options?.customInstructions ? `- Instrucciones personalizadas: ${options.customInstructions}` : ''} Genera un email completo con: 1. Saludo apropiado 2. Cuerpo del mensaje 3. Cierre profesional 4. Firma si es necesario Responde solo con el contenido del email, sin formato adicional. `; return await this.aiService.generateText(prompt); } async generateQuote(data, options) { const servicesList = data.services.join(', '); const currency = data.currency || 'USD'; const validUntil = data.validUntil || '30 días'; const prompt = ` Genera una cotización profesional con la siguiente información: Cliente: ${data.clientName} Servicios: ${servicesList} Monto total: ${data.totalAmount} ${currency} Válida hasta: ${validUntil} Notas especiales: ${data.specialNotes || 'N/A'} Tono: ${options?.tone || 'professional'} Longitud: ${options?.length || 'medium'} Genera una cotización que incluya: 1. Encabezado profesional 2. Detalle de servicios 3. Desglose de costos 4. Términos y condiciones básicos 5. Información de contacto Responde solo con el contenido de la cotización, sin formato adicional. `; return await this.aiService.generateText(prompt); } async generateReport(data, options) { const prompt = ` Genera un reporte basado en la siguiente información: Título: ${data.title} Tipo de reporte: ${data.type} Audiencia: ${data.audience || 'general'} Datos: ${JSON.stringify(data.data, null, 2)} Tono: ${options?.tone || 'professional'} Longitud: ${options?.length || 'medium'} Genera un reporte que incluya: 1. Resumen ejecutivo 2. Análisis de datos 3. Conclusiones 4. Recomendaciones (si aplica) Responde solo con el contenido del reporte, sin formato adicional. `; return await this.aiService.generateText(prompt); } async generateConversationSummary(messages, options) { const conversationText = messages .map(msg => `${msg.role}: ${msg.content}`) .join('\n'); const prompt = ` Genera un resumen de la siguiente conversación: Conversación: ${conversationText} Tipo de resumen: ${options?.length || 'medium'} Tono: ${options?.tone || 'professional'} Genera un resumen que incluya: 1. Puntos principales discutidos 2. Decisiones tomadas (si las hay) 3. Acciones pendientes (si las hay) 4. Estado general de la conversación Responde solo con el resumen, sin formato adicional. `; return await this.aiService.generateText(prompt); } async generateBotResponse(userMessage, context, intent, options) { const prompt = ` Genera una respuesta de bot para un chatbot basada en la siguiente información: Mensaje del usuario: "${userMessage}" Contexto de la conversación: "${context}" Intención detectada: "${intent}" Tono: ${options?.tone || 'friendly'} Longitud: ${options?.length || 'short'} Genera una respuesta que: 1. Sea apropiada para la intención detectada 2. Mantenga el contexto de la conversación 3. Sea natural y conversacional 4. Proporcione valor al usuario Responde solo con la respuesta del bot, sin formato adicional. `; return await this.aiService.generateText(prompt); } async generateMarketingContent(product, targetAudience, purpose, options) { const prompt = ` Genera contenido de marketing para el siguiente producto: Producto: ${product} Audiencia objetivo: ${targetAudience} Propósito: ${purpose} Tono: ${options?.tone || 'casual'} Longitud: ${options?.length || 'medium'} Incluir llamada a la acción: ${options?.includeCallToAction ? 'Sí' : 'No'} Genera contenido que: 1. Capture la atención del público objetivo 2. Destaque los beneficios del producto 3. Sea persuasivo pero no agresivo 4. Incluya una llamada a la acción clara (si se solicita) Responde solo con el contenido, sin formato adicional. `; return await this.aiService.generateText(prompt); } async generateDocumentation(topic, audience, purpose, options) { const prompt = ` Genera documentación para el siguiente tema: Tema: ${topic} Audiencia: ${audience} Propósito: ${purpose} Tono: ${options?.tone || 'professional'} Longitud: ${options?.length || 'medium'} Genera documentación que: 1. Sea apropiada para la audiencia especificada 2. Sea clara y fácil de entender 3. Incluya ejemplos si es necesario 4. Esté bien estructurada Responde solo con la documentación, sin formato adicional. `; return await this.aiService.generateText(prompt); } } //# sourceMappingURL=ContentGenerationService.js.map