VoiceBooker

Prompts / Instrucciones

Los prompts generalmente le indican al LLM qué hacer a continuación. Por ejemplo, pedir al usuario información específica como su nombre, número de seguro, dirección/datos de contacto, etc.

Los prompts pueden ser estáticos o dinámicos.

Prompts estáticos / texto simple

Ejemplo:

Saluda al llamante y pide su nombre.

En los prompts estáticos, puedes acceder a todas las variables del state usando {{variableName}}.

Ejemplo: La siguiente información está almacenada en el state:

{
    companyName: "claiverly GmbH"
}

Prompt que usa esta información:

Saluda al llamante con la siguiente frase: "Bienvenido a {{companyName}}".

Prompts dinámicos / programáticos

A veces es necesario incluir información dinámica en el prompt que proviene de una fuente externa o del state y no es estática.

Ejemplo: Tu aplicación necesita la fecha y la hora actuales. Los LLM se entrenan hasta cierto momento y son textuales, por lo que no conocen la fecha y la hora actuales. Si la aplicación depende de información de tiempo, por ejemplo para programar citas, el LLM puede ser informado de la fecha y hora actuales.

Ejemplo de cómo proporcionar la fecha y hora actuales al LLM:

function prompt(params) {
    return ({ "prompt": "Today is " + new Date().toLocaleString() });
}

Ejemplo de cómo incluir la temperatura actual en Berlin Alexanderplatz mediante una consulta webhook en el prompt:

function prompt(params) {
    const temperature = webhook("https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m", {}, {method: "get"});
    return ({ "prompt": `The temperature in Berlin is right now: ${JSON.stringify(temperature)}`});
}

Cómo escribir prompts eficaces

Un buen prompt describe claramente el objetivo, los límites y el comportamiento esperado del asistente. Empieza por el resultado que quieres y añade solo el contexto y las reglas necesarios. El prompting es iterativo: prueba una primera versión con conversaciones realistas, revisa el resultado y mejora la instrucción que causó el comportamiento no deseado.

Estructura el prompt

Divide el prompt en secciones breves y claramente nombradas: Rol, Objetivo, Contexto, Reglas de conversación, Herramientas, Límites, Fallbacks y Ejemplos. En un bot multi-stage, mantén cada stage centrado en un estado de la conversación e indica claramente cuándo pasar al siguiente stage.

## Rol
Eres la persona amable de recepción de una clínica dental.

## Objetivo
Ayuda a los interlocutores a reservar, cambiar o cancelar una cita.

## Reglas
- Saluda y pregunta cómo puedes ayudar.
- Haz una sola pregunta cada vez.
- Usa un lenguaje natural adecuado para una conversación telefónica.
- Repite la fecha y la hora y pide confirmación antes de reservar.

## Límites
- Nunca inventes disponibilidad, precios ni datos de pacientes.
- Si falta información, dilo y ofrece transferir la llamada.

Describe el comportamiento con precisión

Evita instrucciones vagas como “sé útil”. Describe qué debe hacer el asistente, cuándo y con qué resultado. Define explícitamente qué hacer si faltan datos, una herramienta no devuelve resultados o falla, el interlocutor no está de acuerdo o la solicitud está fuera del alcance.

Cuando el interlocutor quiera cancelar una cita:
1. Pregunta la fecha y el nombre del interlocutor.
2. Busca la cita correspondiente.
3. Lee los detalles de la cita.
4. Pregunta: “¿Debo cancelar esta cita?”
5. Llama a `cancel_appointment` solo después de la confirmación.

Diseña para conversaciones de voz

  • Mantén las respuestas breves y haz una pregunta cada vez.
  • Usa frases cortas y evita listas largas, URL y términos técnicos.
  • Confirma los nombres, fechas, horas, direcciones e importes importantes.
  • Define cómo deben leerse los números, las fechas y las direcciones de correo.
  • Especifica cómo gestionar interrupciones y respuestas inciertas.
  • Indica el idioma, el tono, el nivel de formalidad y la terminología.
Habla en español formal. Usa el formato de 24 horas. Después de recibir un teléfono,
repite cada dígito y pide confirmación. Si no entiendes algo, haz una pregunta breve en
vez de adivinar.

Haz previsibles las llamadas a herramientas

Describe el propósito y el momento de cada herramienta, sus requisitos, las confirmaciones necesarias y el comportamiento después de un éxito o un error. El prompt y la descripción de la herramienta no deben contradecirse. En bots single- o multi-stage, especifica cuándo llamar herramientas, cambiar de stage, enviar mensajes, reservar o transferir. Consulta herramientas y funciones.

Usa contexto y ejemplos

Incluye los hechos relevantes en el prompt o proporciónalos mediante el state, una base de conocimiento o un prompt dinámico. Indica qué fuente debe utilizarse y qué hacer si falta información. Nunca incluyas secretos ni credenciales en los prompts. Los ejemplos deben ser breves, realistas, variados y coherentes con las reglas de producción.

Evita problemas habituales

  • Elimina o corrige instrucciones contradictorias.
  • Divide las responsabilidades no relacionadas entre varios stages o asistentes.
  • Define fallbacks para datos ausentes, errores, silencios y transferencias.
  • Elimina las reglas que no afectan al resultado deseado.
  • Especifica longitud, formato, idioma y tono.
  • Indica al asistente que pida aclaraciones en vez de adivinar.

Prueba y mejora de forma sistemática

Define primero los criterios de éxito. Prueba casos normales, interrupciones, respuestas ambiguas, datos ausentes, errores de herramientas y transferencias. Revisa las transcripciones y las llamadas de funciones y cambia solo una parte cada vez. La documentación de depuración explica cómo inspeccionar state, stacks, funciones y webhooks.

En esta página