Criar um chatbot local e off-line com a API Prompt

Publicado em: 13 de janeiro de 2025

Este é o último de uma série de três artigos sobre chatbots LLM. Os artigos anteriores discutiram o poder dos LLMs do lado do cliente e mostraram como adicionar um chatbot com tecnologia WebLLM a um aplicativo de lista de tarefas.

Alguns dispositivos mais recentes são enviados com modelos de linguagem grandes e outros modelos de IA. O Chrome propôs a integração de APIs de IA integradas ao navegador, com um número de APIs em diferentes estágios de desenvolvimento. Muitas dessas APIs estão passando pelo processo de padrões para que os sites possam usar a mesma implementação e modelo para alcançar o desempenho máximo de inferência.

A API Prompt é uma dessas APIs de IA. Para usá-la, os desenvolvedores são incentivados a se inscrever no Programa de testes antecipados. Depois de aceito, você vai receber instruções sobre como ativar a API Prompt nos navegadores. A API Prompt está disponível em um teste de origem para extensões do Chrome, assim, você pode testar essa API para usuários reais de extensões.

Acesso ao modelo compartilhado

A API Prompt se comporta de maneira semelhante ao WebLLM. No entanto, não há seleção de modelo desta vez (é necessário usar o LLM enviado com o navegador). Ao ativar a IA integrada, o Chrome faz o download de um modelo de fundação no navegador. Esse modelo pode ser compartilhado em várias origens e executado com desempenho máximo. Há um problema do GitHub em que um desenvolvedor solicitou a adição de um recurso de seleção de modelo.

Configurar a conversa

Você pode iniciar a conversa de mensagens da mesma maneira, mas a API Prompt também oferece uma sintaxe abreviada para especificar o prompt do sistema. Inicie a sessão do modelo de linguagem usando o método create() na interface LanguageModel:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

Responda à sua primeira pergunta

Em vez de ter um objeto de configuração para configurar o streaming, a API Prompt oferece dois métodos separados:

  • prompt() retorna a string completa
  • promptStreaming() retorna um iterável assíncrono. Ao contrário do WebLLM, a API Prompt responde com a resposta de string completa, então não é necessário combinar os resultados.

Se nenhuma outra origem tiver acionado o download do modelo antes, sua primeira solicitação poderá levar muito tempo enquanto o modelo é baixado no navegador. Se o modelo já estiver disponível, a inferência será iniciada imediatamente.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

Demonstração

Resumo

A integração de LLMs em aplicativos pode melhorar significativamente a experiência do usuário. Embora os serviços de nuvem ofereçam modelos de maior qualidade e alto desempenho de inferência, independentemente do dispositivo do usuário, as soluções no dispositivo, como o WebLLM e a API Prompt do Chrome, são capazes de trabalhar off-line, melhorar a privacidade e economizar custos em comparação com alternativas baseadas na nuvem. Teste essas novas APIs e deixe seus aplicativos da Web mais inteligentes.