Publicado em 13 de janeiro de 2024
Este é o primeiro de uma série de três artigos sobre LLMs e chatbots. A parte 2 sobre como criar um chatbot com o WebLLM e a parte 3 sobre como usar a API Prompt já estão disponíveis.
Os modelos de linguagem grandes (LLMs) estão se tornando um elemento básico importante no desenvolvimento de software: eles são adequados para gerar e processar texto de linguagem natural, abrindo casos de uso como extração de dados, resumo ou facilitação de diálogos com dados do usuário.
Nesta série, discutimos os benefícios e as desvantagens dos LLMs no dispositivo e orientamos você a adicionar recursos de chatbot a um aplicativo usando duas abordagens locais e off-line: o WebLLM de execução de LLM baseado na Web e a API experimental Prompt do Chrome.
Possíveis casos de uso
Vamos criar um chatbot em um aplicativo clássico de lista de tarefas. O código-fonte de cada etapa está disponível no GitHub. Os usuários podem adicionar novas tarefas, marcar como concluídas e excluir.
Talvez você queira adicionar um recurso para que os usuários saibam mais sobre os dados da lista de tarefas ou realizem outras funções. Um recurso de chatbot pode permitir que os usuários:
- Pergunta sobre o número de tarefas em aberto.
- Identificar tarefas duplicadas ou muito semelhantes.
- Categorize as tarefas em grupos.
- Receber recomendações de novas tarefas com base nas concluídas.
- Traduzir tarefas para diferentes idiomas.
- Exporte a lista de tarefas no formato XML.
Esses são apenas alguns exemplos de tarefas que os LLMs podem processar.
O que são modelos de linguagem grandes?
Os LLMs são redes neurais artificiais que processam e geram texto em linguagem natural. A maioria dos LLMs atuais é baseada na arquitetura Transformer, desenvolvida no Google. Os exemplos incluem os modelos Gemini e Gemma do Google, a série de modelos GPT da OpenAI e os modelos de código aberto, como o LLaMa da Meta AI e o Mistral da Mistral AI.
Graças ao treinamento com grandes quantidades de dados, os LLMs têm uma variedade impressionante de recursos. Eles entendem várias línguas, têm conhecimento de curiosidades, podem traduzir entre idiomas ou gerar código de programação. A extensão desses recursos pode variar significativamente com base no tamanho do modelo, conforme discutido em Entender os tamanhos de LLM.
Os LLMs levam a uma mudança de paradigma na arquitetura de software, já que a linguagem natural agora se torna um recurso principal na engenharia de software. Em vez de chamar APIs usando interfaces bem definidas, basta expressar a intenção em linguagem natural em um chamado de comando.
Limitações de LLMs
Os LLMs também têm algumas limitações:
- Comportamento não determinista: os LLMs podem produzir respostas variadas e, às vezes, até contraditórias para o mesmo comando, já que as saídas dependem de modelos probabilísticos, e não de regras fixas.
- Alucinações: às vezes, esses modelos podem gerar informações incorretas ou sem sentido, dependendo de padrões aprendidos em vez de precisão factual.
- Injeções de comandos: os LLMs podem ser suscetíveis a ataques de injeção de comandos, em que os usuários criam comandos de entrada que manipulam o modelo para desviar da função pretendida ou produzir resultados indesejados.
Portanto, os usuários precisam verificar os resultados gerados por LLMs antes de realizar ações conseqüentes.
Ao lidar com LLMs no dispositivo, o tamanho deles precisa ser considerado. Eles atingem tamanhos de arquivo de vários gigabytes e precisam ser transferidos para o dispositivo do usuário antes do primeiro uso. Modelos menores tendem a ter respostas de qualidade inferior, principalmente em comparação com modelos com suporte da nuvem.
Escolher soluções locais
Seu primeiro instinto para integrar um LLM ao seu aplicativo da Web pode ser usar um provedor de nuvem. Vários provedores oferecem LLMs de alta qualidade, e alguns deles são exclusivos para provedores específicos. Os LLMs baseados na nuvem oferecem velocidade de inferência rápida a um custo razoável, que geralmente é calculado por token processado.
Em contraste, as soluções locais apresentam vantagens convincentes. Ao operar diretamente no dispositivo do usuário, os LLMs hospedados localmente oferecem tempos de resposta mais confiáveis, permanecem acessíveis mesmo quando o usuário está off-line e não exigem que os desenvolvedores paguem taxas de assinatura ou outros custos contínuos. Eles podem aumentar significativamente a segurança do usuário. Ao manter todas as atividades no dispositivo, é possível evitar a transmissão de informações de identificação pessoal (PII) para provedores ou regiões externos.
Demonstrações
Confira as demonstrações com recursos de chatbot antes de aprender a criar um.
- O app de tarefas original
- Aplicativo de tarefas com WebLLM
- App de tarefas com a API Prompt
- Fonte no GitHub
Em seguida, você vai usar o WebLLM para adicionar um chatbot ao aplicativo de lista de tarefas.