Aplicando modelos de linguagem grandes

May 02 2023
Introdução
O OpenAI ChatGPT conquistou o mundo. A taxa inédita de adoção pelos usuários foi acompanhada por experimentação sem precedentes com sua API pela comunidade de desenvolvedores.

O OpenAI ChatGPT conquistou o mundo. A taxa inédita de adoção pelos usuários foi acompanhada por experimentação sem precedentes com sua API pela comunidade de desenvolvedores. Nem um único dia se passa sem que um ou dois, mas vários PoCs sejam publicados em blogs ou tweetados. Estes são então melhorados por outro conjunto de desenvolvedores alimentando o frenesi tecnológico.

O desenvolvimento de novos Large Language Models (LLMs) também acelerou bastante. Modelos mais novos estão sendo anunciados por empresas ou de código aberto. Muitos projetos de código aberto foram disponibilizados ou lançados para resolver várias facetas da declaração do problema, desde o treinamento de modelos personalizados até o ajuste fino, corpus de dados, etc.

Ao mesmo tempo, a comunidade de desenvolvedores tem trabalhado rapidamente para publicar estruturas que facilitariam a operação com o LLM. Frameworks como LangChain e Llama Index fornecem código clichê e frameworks que resolvem muitos casos gerais e específicos. Além disso, pode-se usá-los para construir seus próprios casos de uso complexos.

Assim, vemos que toda a paisagem está evoluindo em um ritmo extremamente rápido. Na verdade, frameworks como o LangChain fornecem um lançamento menor a cada dois dias.

Aplicação de OpenAI

Os enormes dados de treinamento do OpenAI LLM fornecem acesso a um corpus de conhecimento extremamente grande. Isso os torna inerentemente ideais para contornar casos de uso baseados em conteúdo.

Alguns casos de uso em que já foram aplicados são:

  • resumo
  • enriquecimento de conteúdo
  • Criação de título
  • reformulando
  • Criação de vários formatos, como forma curta, tweets, pontos de apresentação, etc.

Nos casos acima, os recursos de linguagem do LLM foram usados ​​para resolver ou auxiliar no trabalho relacionado ao conteúdo.

Outros casos de uso em que o conhecimento inerente do LLM é usado são:

  • Questionário geração de conteúdo
  • Enquetes ou questionário de pesquisa.

Passar um contexto de entrada e responder a perguntas sobre o mesmo é uma tarefa na qual os LLMs são bastante adeptos. Esse recurso está sendo usado para muitos conteúdos, como obter respostas a perguntas sobre artigos de formato longo ou documentos PDF.

A solução geral envolve a criação de um prompt no seguinte formato geral:

Contexto:

O Vale Ziro em Arunachal Pradesh é o lar da tribo Apatani e é conhecido por suas vistas perfeitas do vale. Ziro fica a aproximadamente 167 km da capital Itanagar, e a viagem até ela é uma das mais belas que você experimentará em Arunachal Pradesh. O vale é cercado por uma floresta verdejante e fazendas em terraços que ficam deslumbrantes em qualquer época do ano. Olhando para os riachos suaves borbulhando ao longo da estrada, você tem uma sensação de paz em Ziro. Não é à toa que o vale é um dos lugares mais visitados de Arunachal Pradesh.

Este cenário idílico do Vale Ziro é uma das principais razões pelas quais o Festival de Música Ziro anual é realizado aqui, bem nos prados verdes. O local do festival é um dos locais mais bonitos da Índia. Os amantes da música de toda a Índia e do mundo vêm aqui para o festival e a grande vibração.

Instruções imediatas: responda à pergunta abaixo em 100 palavras a partir do contexto fornecido acima

Pergunta: A que distância Ziro fica da capital?

Responder:

O LLM fornece a resposta para a consulta a partir do contexto fornecido. É preciso mexer na configuração do prompt para obter o resultado desejado.

Essa abordagem geral abre o mundo para responder às consultas do usuário com base em um corpus de conteúdo. Por exemplo, um corpus criado de notícias e artigos sobre o orçamento pode ser usado simplesmente para responder a perguntas que os leitores possam ter. Isso causa um curto-circuito no modelo tradicional de usuário que fornece uma string de pesquisa e, em seguida, vários links de artigos são exibidos, que o usuário precisa ler para obter a resposta que deseja. Isso fornece uma experiência de usuário muito melhor e economiza muito tempo.

A abordagem gira em torno de fornecer o contexto certo ao LLM para que ele possa responder à consulta. Assim, o problema agora é como identificar o conjunto correto de trechos do corpus que são relevantes para a consulta, pois o aplicativo LLM tem limitações quanto à quantidade de entrada que pode ser enviada.

Este é principalmente um problema de pesquisa agora. O conteúdo pode ser dividido em trechos e indexado. Um banco de dados de vetores como Pinecone ou Milvus pode ser usado para fazer isso. O conteúdo é vetorizado e armazenado no banco de dados. Quando o usuário fizer uma pergunta, basta vetorizar a consulta e fazer uma pesquisa por similaridade para obter os trechos relevantes.

Pesquisa de texto livre mais inteligente

A pesquisa de texto livre é mais fácil do ponto de vista da UX em comparação com a pesquisa baseada em filtro tradicional. No entanto, envolve o desenvolvimento de lógica de análise complexa para identificar os filtros de pesquisa da entrada de texto fornecida pelo usuário. Assim, é propenso a bugs ou a um pequeno conjunto de formatos fixos de entrada de texto.

A capacidade de linguagem do LLM pode ser aproveitada aqui para analisar o texto de pesquisa e identificar os parâmetros de pesquisa.

A solução geral envolve a criação de um prompt no seguinte formato geral:

Instruções de prompt: analise a consulta de entrada fornecida no seguinte formato JSON”

Formato JSON:

{“lugar”: “Lugar que se está visitando. Obrigatório” , “checkInDate”: ”A data de check-in para reserva. Obrigatório. Formato dd/mm/aaaa”, “checkOutDate”: “A data de check-out para reserva. Obrigatório. Check-in padrão mais 2 dias. Formato dd/mm/aaaa”, “minimumRating”: “Classificação mínima exigida para o hotel. Opcional”, “maximumPricePerNight”: “Preço máximo por noite que se está disposto a pagar. Opcional” }

Exemplos:

Questão: À procura de quartos de 23 de julho a 28 de julho em Shimla com classificação de 4 e acima.

Resposta: {“place”: “Shimla” , “checkInDate”: ”23/07/2023”, “checkOutDate”: “28/07/2023”, “minimumRating”: “4”}

Questão: À procura de quartos a partir de 15 de agosto para 3 dias em Darjeeling.

Resposta: {“place”: “Darjeeling” , “checkInDate”: ”15/08/2023”, “checkOutDate”: “17/08/2023”}

Questão: Sair de férias para Pondicherry por 5 dias a partir de 3 de setembro.

Responder:

Nesse caso, usamos um recurso do LLM chamado Zero Shot Learning. Além das instruções, também demos alguns exemplos para mostrar o resultado esperado para um conjunto de perguntas. O LLM demonstrou grande capacidade de ajustar seu comportamento aprendendo com o pequeno conjunto de amostras.

O LLM analisaria a consulta do usuário e forneceria um JSON em um formato fixo. O mesmo pode ser simplesmente usado para ativar a funcionalidade de pesquisa real.

Nesse caso, o LLM é essencialmente um analisador de texto inteligente.

Bot de suporte

Vamos dar um exemplo de um aplicativo de reserva de viagens para explorar esse caso de uso.

Um usuário interage com um bot de suporte para obter respostas a perguntas sobre como usar um aplicativo ou benefícios gerais, etc. Ou eles desejam obter respostas sobre as transações que fizeram no aplicativo.

Um corpus de uso geral do aplicativo, os conteúdos associados ao aplicativo podem ser criados para responder a consultas sobre o mesmo.

Da mesma forma, um analisador de consulta inteligente baseado em LLM pode ser usado para analisar as consultas do usuário sobre suas reservas e, em seguida, buscar os registros de reserva. Como um aplicativo pode ter vários tipos de transações do usuário, o analisador LLM pode ser ajustado para fornecer o tipo de transação, bem como os parâmetros para a transação específica.

Incorporar ambas as funcionalidades em um único bot de front-end também envolveria uma etapa na qual precisamos identificar qual é a intenção do usuário, se a consulta é sobre como fazer uma transação ou o status da última transação. Até aqui, o LLM pode ser usado para identificar corretamente a intenção do usuário.

Assim, a solução global envolve:

  • Identificando a intenção: consulta de corpus ou consulta de reserva
  • Processando consulta de corpus
  • Corpus de pesquisa
  • Identificando snippets relevantes
  • Chamando LLM passando trechos relevantes e consulta do usuário.
  • Consulta de reserva de processamento
  • Chamando o LLM para identificar o tipo e os parâmetros
  • Analisar resposta LLM JSON.
  • Invocar funções apropriadas.
  • Fig 1: Bot de suporte para um aplicativo de viagem.

LLM vem com alguns desafios para trabalhar.

Tradicionalmente, os desenvolvedores estão acostumados a trabalhar em um mundo determinístico. As respostas da chamada de função são de natureza determinística, mesmo quando falham e geram erros.

No entanto, o LLM funciona de maneira probabilística. Suas respostas nem sempre são necessariamente o que prevemos. Isso significa que, ao desenvolver aplicativos usando-os, invariavelmente, os desenvolvedores devem estar sempre cientes disso e criar a resiliência apropriada para lidar com o inesperado.

Os tempos de resposta da API OpenAI são muito sensíveis por natureza. Eles variam de 2 a 12 segundos. Depende muito da quantidade de conteúdo envolvido. Por exemplo, enviar um grande contexto e esperar uma resposta detalhada a uma consulta envolveria muita computação para o LLM, portanto, os tempos de resposta seriam maiores. Algumas delas podem ser manipuladas com base na percepção, mudando para APIs de streaming, mas isso ainda significa que a resposta final é concluída após um tempo relativamente alto, em comparação com os SLAs tradicionais de tempo de resposta da API.

Os prompts são a principal maneira de instruir os LLMs sobre o que queremos que eles façam. Acertar os prompts é, portanto, crítico. No entanto, há uma curva de aprendizado associada ao mesmo. Além disso, os prompts que funcionam com uma versão do LLM funcionam de maneira ligeiramente diferente com outra, exigindo ajustes para fazer o mesmo.

O LLM como tecnologia abriu as possibilidades de inventar novas maneiras de resolver problemas. Ainda estamos na iminência de entender seu verdadeiro potencial. As novas ideias que estão inundando a internet todos os dias são uma prova do fato de que há tempos emocionantes pela frente.