Prompt Engineering para Voice AI: Steps + Objetivos

Voice AIPrompt EngineeringNova SonicDesarrollo7 min de lectura
Prompt Engineering para Voice AI: Steps + Objetivos

Prompt Engineering para Voice AI: Steps + Objetivos

El problema de los prompts planos

Cuando construyes un agente de voz, la tentación es escribir el system prompt como una lista de reglas: "haz esto", "no hagas aquello", "usa esta herramienta". Funcionan... hasta que no. El agente se pierde, salta pasos, hace tres preguntas seguidas cuando debía hacer una, o busca productos antes de entender qué necesita el usuario.

El problema es que una lista plana no tiene dirección. No hay un objetivo claro ni una secuencia que seguir. El modelo tiene que inferir el flujo de la conversación, y en voz — donde cada segundo de silencio se siente eterno — eso se traduce en respuestas erráticas.

Después de meses iterando nuestros agentes de voz con Nova Sonic, llegamos a un patrón que resolvió esto: Steps + Objetivos.

El patrón: Behavior, no Rules

En lugar de una lista de reglas, cada personalidad de agente define tres cosas:

  1. Objetivo — Qué debe lograr la conversación
  2. Steps secuenciales — Pasos en orden, cada uno con una condición de avance
  3. Rules — Guardrails que aplican durante toda la conversación

Así se ve para un agente de ventas:

text
ROL: Agente de ventas consultivo
Tu objetivo es: Cerrar la venta o capturar el lead del prospecto.
Sigue estos pasos en orden:

Paso 1 — Saluda y detecta intención. Avanza cuando el usuario diga qué busca.
Paso 2 — Descubre necesidades con 1-2 preguntas agrupadas.
         Avanza cuando sepas nivel y presupuesto. Máximo 2 turnos.
Paso 3 — Busca productos con searchProducts. Avanza cuando tengas resultados.
Paso 4 — Presenta 1-2 opciones con beneficios concretos.
         Avanza cuando el usuario reaccione.
Paso 5 — Resuelve objeciones o cierra. Captura lead si hay interés.

Importante: Agrupa preguntas. Si ya sabe qué quiere, salta al paso 3.
Nunca presiones.

Lo clave es el formato narrativo. No JSON, no bullets, no markdown. Texto corrido que el modelo puede seguir como una conversación interna.

Por qué funciona en voz

En texto, el usuario puede releer. En voz, cada turno es irreversible. Si el agente hace la pregunta equivocada en el momento equivocado, no hay scroll hacia arriba. Los steps resuelven esto porque:

  • Cada paso tiene un gate: el agente no avanza hasta que se cumpla la condición (until). No va a buscar productos si todavía no sabe qué necesita el usuario.
  • maxTurns previene loops: si después de 2 turnos de descubrimiento no tiene lo que necesita, avanza. Mejor una recomendación imperfecta que un interrogatorio.
  • Los saltos son explícitos: "Si ya sabe qué quiere, salta al paso 3" le da permiso al modelo de romper la secuencia cuando tiene sentido.

Lo que dice la industria

Cuando investigamos si este patrón tenía respaldo, encontramos que la industria converge en lo mismo — con nombres diferentes.

AWS Nova Sonic

La documentación oficial de Nova Sonic recomienda progressive disclosure: entregar información un paso a la vez, confirmar antes de avanzar, y no abrumar al usuario. Exactamente lo que hacen nuestros steps con condiciones until.

AWS también enfatiza que las interacciones de voz pueden ser limitadas en contexto y requieren ir y venir para pedir más información — lo cual valida tener pasos explícitos en lugar de dejar que el modelo improvise.

Vapi

Vapi — una de las plataformas líderes en voice AI — recomienda estructurar el prompt en cuatro secciones: Identity, Style, Response Guidelines, Task & Goals. Dentro de Task, usan steps secuenciales con condicionales y markers de espera entre pasos. Es prácticamente el mismo patrón.

ElevenLabs

Su guía de prompting para agentes conversacionales sigue la misma estructura: rol, objetivo, pasos, guardrails. La industria converge.

La comparación

AspectoAWS Nova SonicVapiElevenLabsFormmy
Rol / Identityrole
Objetivo / GoalImplícitoobjective
Steps secuencialesProgressive disclosureTask stepsConversation flowsteps[]
Condiciones de avanceConfirm before proceedingCondicionalesStage gatesuntil
Límite de turnosNo estándarNo estándarNo estándarmaxTurns
Guardrails / Rulesrules[]

El maxTurns es nuestra adición. Ninguna guía lo menciona explícitamente, pero en la práctica es lo que evita que un agente de ventas se quede haciendo preguntas infinitas antes de buscar productos.

Implementación en TypeScript

El patrón se modela con dos interfaces simples:

typescript
interface VoiceStep {
  action: string;    // "Descubre necesidades con 1-2 preguntas agrupadas"
  until: string;     // "Sepas nivel y presupuesto"
  maxTurns?: number; // 2
}

interface VoiceBehavior {
  role: string;
  objective: string;
  steps: VoiceStep[];
  rules: string[];
}

Y se renderiza a texto narrativo:

typescript
function renderBehavior(behavior: VoiceBehavior): string {
  const lines: string[] = [];
  lines.push(`ROL: ${behavior.role}`);
  lines.push(
    `Tu objetivo es: ${behavior.objective} Sigue estos pasos en orden:`
  );
  behavior.steps.forEach((step, i) => {
    let line = `Paso ${i + 1}${step.action}. Avanza cuando ${step.until}.`;
    if (step.maxTurns) line += ` Máximo ${step.maxTurns} turnos.`;
    lines.push(line);
  });
  if (behavior.rules.length) {
    lines.push(`Importante: ${behavior.rules.join(" ")}`);
  }
  return lines.join("\n");
}

No hay magia. El render produce texto plano que el modelo entiende como instrucciones secuenciales. Sin XML, sin JSON, sin formato especial — porque Nova Sonic procesa texto corrido, no estructura.

Adaptando por personalidad

Cada tipo de agente tiene un behavior diferente con el mismo esquema:

Ventas: 5 pasos, objetivo de cierre, regla de agrupación de preguntas y salto explícito al paso 3.

Soporte: 4 pasos, objetivo de resolución rápida, regla de "busca antes de responder".

Default: 3 pasos, objetivo genérico, sin reglas especiales.

La estructura es la misma, lo que cambia es el contenido. Esto hace que agregar una nueva personalidad sea cuestión de definir el behavior, no de reescribir un prompt desde cero.

Lo que no incluimos (a propósito)

  • Sección "HERRAMIENTAS": Las tools se inyectan por el runtime de Nova Sonic. Mencionarlas en los steps ("Busca con searchProducts") es suficiente. Una sección separada era redundante.
  • Wait markers: Vapi usa <wait for user response> entre pasos. Nova Sonic maneja el turn-taking por sí solo, así que no los necesitamos. Si en el futuro vemos que el agente se adelanta, es un refinamiento fácil.
  • JSON en el prompt: Algunos frameworks pasan el behavior como JSON. Nuestras pruebas muestran que texto narrativo funciona mejor para voz — el modelo lo interpreta como una conversación interna, no como datos a parsear.

Conclusiones

Los prompts planos funcionan para agentes simples. Pero cuando necesitas que un agente de voz siga un flujo de conversación — descubrir, buscar, presentar, cerrar — necesitas estructura secuencial.

El patrón de Steps + Objetivos no es invención nuestra. AWS, Vapi y ElevenLabs recomiendan variantes del mismo concepto. Lo que aportamos es la implementación tipada con VoiceBehavior, el renderizado narrativo, y maxTurns como escape valve para loops conversacionales.

Si estás construyendo agentes de voz, prueba este patrón antes de seguir agregando reglas a una lista plana.


Prueba Formmy

Nuestros agentes de voz usan este patrón en producción. Puedes probarlo tú mismo con una llamada real.

Prueba Formmy Gratis — Agentes de voz con IA que siguen conversaciones, no solo responden preguntas.

¿Tienes preguntas? Nuestro equipo está listo para ayudarte.