Documentación

Demo del asistente de hogar inteligente

Código de la demo: un asistente de hogar inteligente que usa TypeSafe para evaluar solicitudes del usuario.

Míralo en acción

Cómo funciona

Fan-out especulativo

El patrón principal que se demuestra aquí es el fan-out especulativo. Cada solicitud del usuario se evalúa contra una larga lista de preguntas, incluidas muchas que acabarán siendo irrelevantes para la mayoría de las solicitudes.

Consideremos la siguiente solicitud del usuario:

“Apaga todas las luces de la casa”

Esta es una solicitud muy sencilla, y nuestro código solo necesitará considerar las respuestas a las siguientes preguntas:

  • “¿Qué categoría de solicitud es esta?” (comando de hogar inteligente)
  • “¿A qué dominio se dirige esta solicitud?” (toda la casa)
  • “¿A qué tipo de dispositivo se dirige esta solicitud?” (luces)
  • “¿Qué acción debe realizarse sobre las luces?” (apagar)

Fíjate en que la última pregunta está escrita dando por supuesto que el usuario está emitiendo un comando sobre las luces, y la hacemos antes de saber qué está pidiendo realmente el usuario. Esto es lo que llamamos una “pregunta especulativa”: la hacemos antes incluso de saber si es relevante, lo que nos permite evaluar todas las preguntas en paralelo y confiar en que el código filtre los resultados irrelevantes después. Este es un patrón clave para construir sistemas que puedan manejar una amplia variedad de solicitudes del usuario con un único conjunto de preguntas.

La forma incorrecta: llamadas secuenciales a la API

La forma incorrecta de hacer esto sería separar las preguntas en varias llamadas a la API, esperando a hacer las preguntas solo cuando estés seguro de que necesitas la respuesta:

  • “¿Qué categoría de solicitud es esta?” (comando de hogar inteligente)

Luego, solo cuando sepas que es un comando de hogar inteligente:

  • “¿A qué dominio se dirige esta solicitud?” (toda la casa)
  • “¿A qué tipo de dispositivo se dirige esta solicitud?” (luces)

Luego, solo cuando sepas que se dirige a las luces:

  • “¿Qué acción debe realizarse sobre las luces?” (apagar)

Este enfoque optimiza para un número mínimo de preguntas, pero termina siendo mucho más lento y costoso que agrupar todas las preguntas en una sola llamada inicial a la API.

Combinación de TypeSafe y LLM

Esta demo también muestra cómo se puede combinar TypeSafe con LLM para atender un sistema que a veces requiere un paso de generación de cadenas:

Dividir una solicitud compuesta del usuario: Una de las preguntas de esta demo es una pregunta de Noul que identifica si la solicitud del usuario pide más de una acción distinta. Si esto es cierto, el sistema usa un LLM para dividir la solicitud en una lista de comandos atómicos. Las solicitudes divididas se evalúan entonces individualmente con TypeSafe.

Recurrir a un LLM conversacional: Cuando TypeSafe determina que la consulta del usuario es una petición de información general o de conversación, el sistema llama a un LLM para generar una respuesta libre. Esto permite que un sistema interactivo atienda solicitudes con un comportamiento determinista conocido de forma rápida y eficiente en costo, sin dejar de lado la flexibilidad que aporta un LLM generativo cuando se necesita. La respuesta inicial de TypeSafe es tan rápida comparada con la del LLM que añade una latencia insignificante al sistema en conjunto.

Ejecútalo tú mismo

Esta demo es una sencilla aplicación de página única Vite/React que usa la API de TypeSafe para evaluar solicitudes del usuario. El código fuente completo estará disponible en GitHub en el lanzamiento. Su README incluye instrucciones para ejecutar la demo en local y un resumen de qué partes del código fuente se encargan de cada parte de la demo.