Automatización de soporte

De mensajes de soporte
a tickets listos para usar.

Una empresa recibe quejas y consultas de sus clientes. Su equipo pierde tiempo leyendo cada mensaje y creando un ticket a mano: una ficha con asunto, categoría y prioridad para asignar el problema.

La empresa automatiza esa tarea. Su aplicación envía los mensajes a una IA, que los interpreta y genera un ticket por mensaje. Pide el resultado en JSON, un formato de datos que el código puede guardar y filtrar.

Lo que escribe el cliente

«No puedo entrar: mi contraseña dejó de funcionar.»

Lo que necesita la aplicación

{"id": 1, "titulo": "Error al iniciar sesión",
 "categoria": "acceso", "prioridad": "alta"}

Aquí procesaremos 20 mensajes y obtendremos 20 objetos JSON: cada objeto es un ticket. .mini cambia cómo escribe la IA esa respuesta; el resultado para la aplicación conserva los mismos datos.

1. ¿Por qué cambiar la respuesta JSON?

En cada ticket, JSON repite los nombres "titulo", "categoria" y "prioridad", además de comillas y signos. Esa repetición también se genera y se factura. Los tokens son fragmentos de texto: la API cuenta los que recibe (entrada) y los que genera (salida) para calcular el coste.

TOON reduce esa repetición declarando campos una vez en tablas. .mini también los declara una vez, en un contrato adaptado al dominio de la aplicación. El contrato fija el orden y los tipos; la IA escribe principalmente los valores. Por eso no hay que volver a escribir cada nombre en cada ticket.

El mismo resultado de 20 tickets, contado con o200k_base:

RespuestaTokens de salida
JSON443
TOON304
.mini278

.mini usa un 37,2 % menos que JSON y un 8,6 % menos que TOON en esta salida. Menos tokens de salida pueden reducir esa parte de la factura.

No es el coste total: el prompt .mini de este caso tiene 571 tokens y la corrección también cuesta tokens. En lotes pequeños ese gasto puede superar el ahorro. Mide el flujo completo con tu modelo.

Explorar el coste completo →

2. Prepara el formato y conecta tu aplicación

  1. Guarda un JSON real de tu IA. Debe mostrar los campos y tipos que necesita tu aplicación.
  2. mini setup Elige español o inglés e indica tu muestra JSON. Crea contract.json (reglas de los campos), prompt.es.md o prompt.en.md (instrucciones para la IA) y workflow.py (código que comprueba y convierte la respuesta).
  3. Elige el archivo que llama a tu IA. Setup prepara la integración en ese archivo. Tu código envía el contenido del prompt generado y pide .mini. El workflow valida, usa Repair, pide una corrección si hace falta, comprueba otra vez y convierte a JSON.
  4. ¿Todavía no tienes un flujo? Elige esa opción en setup. Conserva el kit: el comando para conectarlo más adelante queda en README.md y GUIA.md.
  5. Prueba antes de guardar datos reales. Copia try-prompt.md a tu IA: pide 20 objetos ficticios con tu contrato. Un registro es un objeto; aquí, un ticket. El workflow comprueba toda la respuesta antes de entregarla.

La edición automática cubre un patrón Python de chat completions + json.loads. Para otros SDK y lenguajes se genera una guía con las rutas reales para tu IA de código. El callback permite conservar tu proveedor.

Instalar y seguir la guía →
Probar con una IA real y mi API key

Descarga el paquete, instálalo y abre el formulario local:

python examples/flujo-soporte/run.py --serve

El formulario tiene un campo para tu API key y el modelo. La clave se usa en memoria; no se guarda. Puedes seguir usando la grabación sin clave. Las llamadas reales y las correcciones se facturan por tu proveedor.

3. Sigue una ejecución, desde la IA hasta el JSON

Repite una ejecución guardada de 20 tickets, sin API key. Muse escribió las respuestas de ejemplo; añadimos dos fallos para enseñar la reparación. El contrato, el validador, el reparador y el parser Python sí se ejecutaron.

Listo. No se llamará a una API.

    Ver los 20 mensajes de entrada
    [
      {
        "id": 1,
        "mensaje": "No puedo entrar: mi contraseña dejó de funcionar."
      },
      {
        "id": 2,
        "mensaje": "Tengo dos cobros iguales en la factura de septiembre."
      },
      {
        "id": 3,
        "mensaje": "La aplicación tarda un minuto en abrir el panel."
      },
      {
        "id": 4,
        "mensaje": "Quiero actualizar la dirección de mi cuenta."
      },
      {
        "id": 5,
        "mensaje": "Al descargar el informe aparece un error 500."
      },
      {
        "id": 6,
        "mensaje": "El enlace para restablecer mi contraseña caducó."
      },
      {
        "id": 7,
        "mensaje": "No veo el pago que hice ayer en mi cuenta."
      },
      {
        "id": 8,
        "mensaje": "No llegan las notificaciones por correo."
      },
      {
        "id": 9,
        "mensaje": "Necesito invitar a dos compañeros a mi equipo."
      },
      {
        "id": 10,
        "mensaje": "El buscador no encuentra un ticket que existe."
      },
      {
        "id": 11,
        "mensaje": "La pantalla se queda en blanco al abrir un adjunto."
      },
      {
        "id": 12,
        "mensaje": "Necesito cambiar el nombre de mi empresa."
      },
      {
        "id": 13,
        "mensaje": "La exportación CSV pierde los acentos de los nombres."
      },
      {
        "id": 14,
        "mensaje": "Mi sesión se cierra cada cinco minutos."
      },
      {
        "id": 15,
        "mensaje": "La factura tiene un número fiscal antiguo."
      },
      {
        "id": 16,
        "mensaje": "El botón de guardar no responde desde el móvil."
      },
      {
        "id": 17,
        "mensaje": "Quiero dejar de recibir el resumen semanal."
      },
      {
        "id": 18,
        "mensaje": "No puedo subir un PDF de dos megabytes."
      },
      {
        "id": 19,
        "mensaje": "Los filtros del panel se reinician al volver."
      },
      {
        "id": 20,
        "mensaje": "Necesito descargar todas mis facturas del año."
      }
    ]
    Historial: respuesta, error y corrección

    Las repeticiones se guardan sólo en este navegador.

      Probar el formato en el playground · Más ejemplos