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.