Documentação

Demo do assistente de casa inteligente

Código de demonstração: um assistente de casa inteligente que usa a TypeSafe para avaliar solicitações do usuário.

Veja em ação

Como funciona

Fan-out especulativo

O principal padrão demonstrado aqui é o fan-out especulativo. Cada solicitação do usuário é avaliada em relação a uma longa lista de perguntas, incluindo muitas que acabarão sendo irrelevantes para a maioria das solicitações.

Consideremos a seguinte solicitação do usuário:

“Apague todas as luzes da casa”

Esta é uma solicitação muito simples, e nosso código só precisará considerar as respostas às seguintes perguntas:

  • “Qual é a categoria desta solicitação?” (comando de casa inteligente)
  • “A que domínio esta solicitação se dirige?” (casa inteira)
  • “A que tipo de dispositivo esta solicitação se dirige?” (luzes)
  • “Qual ação deve ser executada sobre as luzes?” (apagar)

Observe que a última pergunta está escrita com a suposição de que o usuário está emitindo um comando para as luzes, e nós a fazemos antes de saber o que o usuário está realmente pedindo. É o que chamamos de “pergunta especulativa”: fazemos a pergunta antes mesmo de saber se ela é relevante, o que nos permite avaliar todas as perguntas em paralelo e contar com o código para filtrar os resultados irrelevantes depois. Este é um padrão fundamental para construir sistemas que conseguem lidar com uma grande variedade de solicitações do usuário com um único conjunto de perguntas.

A forma errada: chamadas sequenciais à API

A forma errada de fazer isso seria separar as perguntas em várias chamadas à API, esperando para fazer as perguntas só quando você tiver certeza de que precisa da resposta:

  • “Qual é a categoria desta solicitação?” (comando de casa inteligente)

Depois, só quando você souber que é um comando de casa inteligente:

  • “A que domínio esta solicitação se dirige?” (casa inteira)
  • “A que tipo de dispositivo esta solicitação se dirige?” (luzes)

Depois, só quando você souber que se dirige às luzes:

  • “Qual ação deve ser executada sobre as luzes?” (apagar)

Essa abordagem otimiza para um número mínimo de perguntas, mas acaba sendo muito mais lenta e cara do que agrupar todas as perguntas numa única chamada inicial à API.

Combinação de TypeSafe e LLM

Esta demo também mostra como a TypeSafe pode ser combinada com LLMs para lidar com um sistema que às vezes exige uma etapa de geração de texto:

Dividir uma solicitação composta do usuário: Uma das perguntas desta demo é uma pergunta Noul que identifica se a solicitação do usuário pede mais de uma ação distinta. Se isso for verdade, o sistema usa um LLM para dividir a solicitação numa lista de comandos atômicos. As solicitações divididas são então avaliadas individualmente pela TypeSafe.

Recorrer a um LLM conversacional: Quando a TypeSafe determina que a consulta do usuário é um pedido de informação geral ou de conversa, o sistema chama um LLM para gerar uma resposta livre. Isso permite que um sistema interativo trate solicitações com comportamento determinístico conhecido de forma rápida e econômica, sem abrir mão da flexibilidade oferecida por um LLM generativo quando necessário. A resposta inicial da TypeSafe é tão rápida comparada com a do LLM que acrescenta uma latência insignificante ao sistema como um todo.

Execute você mesmo

Esta demo é uma aplicação de página única simples em Vite/React que usa a API da TypeSafe para avaliar solicitações do usuário. O código-fonte completo estará disponível no GitHub no lançamento. O README dela inclui instruções para executar a demo localmente e uma visão geral de quais partes do código-fonte são responsáveis por quais partes da demo.