Alura > Cursos de Inteligência Artificial > Cursos de IA para Análise de Dados & BI > Conteúdos de IA para Análise de Dados & BI > Primeiras aulas do curso Agentes de IA na AWS: fundamentos, prompts e RAG

Agentes de IA na AWS: fundamentos, prompts e RAG

Do Texto ao Significado: Fundamentos dos LLMs - Componentes de um agente de AI

Apresentando o curso e o instrutor

Olá! Bem-vindos ao curso Agentes de IA e LLMs: construindo e operando na AWS, sobre Inteligência Artificial generativa e Inteligência Artificial agêntica, envolvendo agentes de IA, LLMs e todo o ecossistema relacionado. Vamos abordar amplamente esses temas ao longo do curso, explorando os aspectos que sustentam agentes inteligentes. Também vamos construir agentes e colocá-los em produção. Para isso, utilizaremos a AWS (Amazon Web Services) como nossa nuvem pública e como conjunto de plataformas e ferramentas para apoiar a construção desses agentes e sua disponibilização em produção.

Nós somos Vinicius Carida, também atendemos pelo apelido Vini. Atualmente atuamos como Distinguished Data Scientist no Itaú Unibanco, lecionamos em cursos de MBA, participamos ativamente da comunidade técnica e detemos o título de AWS Machine Learning Hero. É um prazer estarmos aqui para dialogar sobre AWS e Inteligência Artificial, temas que apreciamos profundamente.

Audiodescrição: Vinicius Carida aparece em plano médio em um ambiente interno bem iluminado, vestindo camisa lisa de tonalidade escura. Ao fundo, há uma parede clara e uma prateleira com livros, objetos decorativos e plantas, compondo um cenário organizado de estúdio.

Além de tudo isso, e mais importante, somos responsáveis parentais de Olivia, que completou um ano recentemente, e mantemos parceria conjugal com Jerusa. Olivia, desde o nascimento, já convive com livros de Inteligência Artificial e aprende sobre redes neurais e IA. Recentemente, estávamos lendo sobre computação quântica, pois nossa leitura noturna sempre envolve temas de tecnologia, estatística, astrofísica ou áreas correlatas. Brincadeiras à parte, essa tem sido uma experiência muito positiva e nova. Vamos, então, concentrar-nos no curso, que é extremamente relevante e está em evidência no mercado. Será fundamental compreender o que está por trás do assunto, indo além da superficialidade, para entendermos em profundidade o que são agentes de IA e como construir agentes prontos para produção que tragam resultados para o negócio.

Demonstrando a primeira interação no Amazon Bedrock

Para começar, vamos diretamente ao console da AWS. A página de acesso para quem nunca entrou é aws.amazon.com, onde acessamos o console da AWS. Basta clicar em iniciar sessão no console. Já deixamos nosso login configurado, por razões de segurança e com autenticação de dois fatores, para acelerar o processo. Ao acessar a conta, veremos os serviços usados recentemente; um deles é o Amazon Bedrock, que utilizaremos. Caso não apareça entre os serviços recentes, clique na busca e digite Bedrock; aparecerá Amazon Bedrock para acesso.

Dentro do serviço, veremos, no lado esquerdo, diversos componentes que apresentaremos em breve e que serão aprofundados ao longo do curso. Para esta primeira experiência simples, vamos ao Playground (área de testes), especificamente o Playground de bate-papo e texto. Ao acessar essa área do Bedrock, há um botão para selecionar o modelo. Observamos muitos modelos disponíveis no Bedrock: modelos da própria Amazon (famílias Titan e Nova), Anthropic, Meta, Mistral, Cohere, AI21 Labs, Stability AI, entre outros. Há uma grande variedade e discutiremos qual modelo usar, quando usar, e em quais situações um modelo é superior a outro. Esse ponto será importante no curso. Para este primeiro teste simples, podemos selecionar qualquer um. Vamos selecionar o modelo Amazon Nova Lite e aplicar.

Após a seleção do modelo, já podemos interagir. No bate-papo, escrevemos, por exemplo: ajude-nos a redigir um e-mail para agendar uma reunião com nosso cliente. O modelo realiza um processo de raciocínio e retorna um e-mail: fornece um assunto, remetente, nome do cliente, um formato bem estruturado de como redigir a mensagem, dicas para personalização e até um exemplo prático com todos os campos preenchidos.

Agora, suponhamos que já tenhamos uma reunião agendada com o cliente, mas não nos lembremos da data, e perguntemos: quando ficou agendada a reunião com nosso cliente? O modelo novamente processa a solicitação, porém retorna outro exemplo de e-mail para confirmar uma reunião — o que não é o que desejamos. O que gostaríamos é que o sistema consultasse nossa agenda e verificasse quando a reunião está, de fato, programada.

Explicando limitações dos LLMs e introduzindo workflows de IA

Esse primeiro exemplo simples ilustra uma limitação e nos leva de volta às lâminas para explorar alguns conceitos. Ao interagirmos com um grande modelo de linguagem, um LLM (Large Language Model, Modelo de Linguagem de Grande Porte) ou outro modelo de IA, sempre teremos uma entrada, isto é, um input (entrada), o modelo fará um processamento e gerará uma saída, isto é, um output (saída). A partir disso, podemos encadear passos: fornecemos uma entrada, recebemos uma saída e a utilizamos como parte de uma etapa subsequente. Por exemplo, quando pedimos um rascunho de e-mail solicitando uma reunião com o cliente, vimos que o modelo atende muito bem a essa demanda. Entretanto, quando perguntamos para quando está agendada a próxima reunião com o cliente, o modelo não gera a resposta que precisamos.

Por que isso ocorre? Porque, embora os LLMs tenham excelente desempenho e muito conhecimento pré-treinado, há limitações quando falamos de informações proprietárias, pessoais ou dados internos da organização. Normalmente, esses modelos não têm acesso a tais dados, a menos que forneçamos esse acesso por meio de ferramentas, que exploraremos adiante. Por padrão, esses modelos se comportam de maneira passiva: aguardam um prompt para então executar algum processamento.

Como resolvemos isso? Podemos criar um processo, isto é, um workflow (fluxo de trabalho) de IA. Esse workflow funciona assim: a partir da entrada do usuário, instruímos o modelo para que, ao receber essa entrada, ele se conecte ao sistema de agenda, acesse o calendário e, com base nessa conexão, disponha de dados adicionais além do conhecimento pré-treinado. Com isso, o modelo consegue responder adequadamente. No exemplo, ele poderia retornar que a próxima reunião com o cliente está agendada para as 10 horas.

Se, em seguida, perguntarmos: como estará o clima amanhã para essa reunião? Novamente, o modelo, por si só, não terá como responder. Para viabilizar essa resposta, incluímos outra etapa no processo: uma ferramenta de clima, que traz informações meteorológicas atualizadas ao modelo, permitindo gerar a resposta. Assim, no dia agendado, o sistema consulta a agenda, identifica a data e, então, consulta o clima para produzir a informação solicitada.

Podemos ampliar esse processo com várias ferramentas. Por exemplo, se quisermos que a saída seja em voz em vez de texto, incluímos um modelo para conversão de texto em áudio, possibilitando obter a resposta em áudio — útil quando estamos dirigindo e queremos ouvir nossa próxima agenda em vez de ler um texto. Esse encadeamento de etapas compõe um workflow de IA. Por que chamamos de workflow? Porque, embora exista um modelo realizando o processamento e gerando a resposta, quem determina as etapas é a pessoa humana: definimos que primeiro se aciona a ferramenta de agenda, depois a ferramenta de clima, depois a ferramenta de conversão de texto em áudio e, assim, sucessivamente, até a saída final.

Apresentando agentes autônomos e validação humana

Entretanto, algumas demandas são mais complexas ou menos determinísticas, o que torna difícil criar um processo determinístico de quais ferramentas o modelo deve acionar. Por exemplo, ao iniciarmos este curso de agentes de IA, podemos querer uma atualização rápida sobre tudo o que ocorreu no último mês nesse tema. Pedimos ao modelo: escreva um relatório sobre tudo o que foi publicado no último mês sobre agentes. Não sabemos em quais sites procurar, nem exatamente por onde começar; queremos que o sistema se organize e resolva a demanda.

Nesses casos, quem elabora o raciocínio — definindo a forma mais eficiente de compilar novos artigos, onde guardar os links, como fazer o processamento final — é o próprio agente de IA. Além de criar o plano de raciocínio para executar a tarefa, o agente determina quais são os melhores recursos para cada ação do plano. Por exemplo, para compilar links, o agente pode usar uma planilha; depois, utilizar uma ferramenta como o Perplexity para acessar cada link e gerar um resumo de cada artigo; em seguida, empregar um modelo da Anthropic para, a partir dos resumos, produzir um relatório final para a pessoa usuária.

Nesse fluxo, o agente cria um plano que inclui compilar os links, resumir os artigos, redigir o relatório e gerar a versão final. Por fim, inserimos a avaliação humana, o chamado humano no processo — em inglês, human in the loop (humano na etapa de validação) — que revisará e fornecerá retroalimentação à última etapa. O modelo gera uma nova versão do relatório e criamos esse ciclo de análise ao final, que é extremamente relevante e será tema importante do curso, principalmente na parte de validação de modelos, ética, alinhamento e demais aspectos de avaliação do resultado.

O que podemos fazer para evoluir ainda mais esse processo? Podemos posicionar o processo de avaliação humana em outra etapa do fluxo, como veremos. O ponto central é que toda essa abordagem de raciocínio e ação dá nome a alguns frameworks (estruturas de trabalho) que encontramos no mercado, como o ReAct — de Reasoning (raciocínio) e Act (ação) —, quando combinamos raciocínio com ação para criar agentes de IA.

Ao final, podemos tornar o fluxo mais inteligente e evoluído, de modo que não acionemos a avaliação humana a cada nova versão do relatório. Em vez disso, criamos outro agente e, por boas práticas, esse agente de análise utiliza um modelo diferente daquele usado para gerar o relatório. Esses dois agentes — geração e análise — interagem entre si até chegar à melhor solução. Somente depois disso inserimos o humano no processo.

Audiodescrição: Pessoa instrutora de pele clara, cabelo castanho curto e óculos, veste camisa preta lisa e está em um estúdio com fundo neutro e iluminação suave; ao fundo, há uma estante com livros e plantas, além de pontos de luz decorativos.

Com isso, ganhamos muito mais velocidade e também deixamos a pessoa focada exatamente nas tarefas quando já as temos mais avançadas, mais evoluídas, para realizar a análise final.

Classificando níveis de agentes e orientando escolhas de solução

É importante entender, nesta primeira etapa, que existem três grandes níveis de agentes de IA. Isso não significa que um seja melhor que outro; está relacionado ao grau de autonomia que esses agentes possuem para a tomada de decisões dentro de uma tarefa em execução. No nível 1, o que chamamos de LLM (Modelo de Linguagem de Grande Porte) puro, toda decisão é baseada no prompt (instrução) e nos dados de pré-treinamento do modelo, que então produz uma saída. No nível 2, o que chamamos de workflow (fluxo de trabalho) de IA — que algumas pessoas chamam de agente de IA simplificado —, temos consultas e ferramentas (como agenda, clima, calculadora). Podemos dispor de várias ferramentas às quais o agente pode acessar e, a partir disso, o modelo processa e gera uma saída, mas todo o encadeamento, o fluxo, o workflow de tarefas é determinado por pessoas. Por fim, existem agentes puramente autônomos que, a partir de um objetivo, fazem planejamento, raciocínio, tomada de ação e interação com outros agentes para gerar a saída final para a pessoa usuária, a qual será avaliada por uma pessoa.

Esse é o cenário, e ao final podemos montar uma matriz que nos ajuda na tomada de decisões ao desenvolver uma solução. Nem toda solução precisa de agentes de IA. Se o problema possui um processo determinístico e um resultado determinístico, não precisamos usar IA; seria, no jargão técnico, usar uma bazuca para eliminar uma formiga. Podemos usar um software tradicional, muito mais rápido, barato e seguro, por ser determinístico, para resolver esse tipo de problema. Agora, se temos um problema cujo processo é probabilístico e o resultado é probabilístico, um agente de IA autônomo é a melhor solução. Se o processo é determinístico, mas o resultado é probabilístico, um workflow (fluxo de trabalho) de IA é a melhor opção. Portanto, não se trata de tecnologia pela tecnologia, e sim de qual é o problema de negócio ou da sociedade que queremos resolver e como desenvolvemos a melhor solução para esse problema.

Evoluindo maturidade analítica e empregando RAG

Normalmente, essa solução tem graus de maturidade. Para começar, iniciamos com um processo mais descritivo, para entender o que aconteceu. Depois de saber o que aconteceu, passamos a usar modelos para nos ajudar a compreender por que isso aconteceu (diagnóstico). Em seguida, começamos a prever como serão os resultados (predição) — por exemplo, prever as vendas do mês seguinte. Para treinar modelos preditivos, precisamos de todo o descritivo e diagnóstico de vendas passadas, de modo que o modelo aprenda e nos auxilie na predição. Depois, avançamos para a prescrição, até chegar a assistentes autônomos ou agentes inteligentes que nos ajudarão a resolver problemas mais complexos.

Na prática, não é necessário que tudo seja muito complexo. Podemos usar técnicas como RAG, que exploraremos em detalhe: RAG é a sigla de Retrieval-Augmented Generation (Geração Aumentada por Recuperação). Em termos gerais, é a geração aumentada por recuperação de informação, baseada no retorno de uma busca. Podemos, por exemplo, automatizar uma FAQ simples; em vez daquela FAQ antiga na qual a experiência da pessoa usuária não é boa, podemos usar RAG para automatizá-la.

Também abordaremos a parte de raciocínio: como criar um raciocínio para resolver um problema, seja simples, seja complexo. Podemos partir de soluções mais simples para soluções muito complexas, nas quais a recuperação de informação do RAG é mais orientada por alguma lógica — oferecendo suporte sistêmico à decisão —, e não apenas um raciocínio baseado em empilhamento de informação, mas uma construção lógica fundamentada em memória ou outras informações. Isso faz com que o agente deixe de ser uma ferramenta de conhecimento passiva e passe a ser um agente cognitivo ativo para resolver problemas.

Detalhando entradas, memórias e capacidades dos agentes

Ao final, os agentes podem ter diferentes tipos de entrada e saída. Os inputs (entradas) e outputs (saídas) podem ser texto; podem ser documentos completos que passarão por um LLM (Modelo de Linguagem de Grande Porte) ou por um modelo de IA generativa que pode acionar ferramentas como calendários, sites de clima, bases de dados da empresa e sistemas ERP. Esse conjunto de tipos de documento de entrada e saída pode incluir imagem, vídeo, áudio e também acesso à memória, pois queremos conhecer a pessoa usuária e suas demandas. Essa memória pode ser episódica, semântica, de curto prazo ou de longo prazo. Existem vários tipos de memória, e vamos explorar como gerir cada uma delas ao longo do curso. Além disso, essas memórias não estão apenas em bases de dados vetoriais; podem estar em bases de dados semânticas, que funcionam de forma diferente.

O agente também pode ter habilidades para ajudar na tomada de decisões, como raciocínio, planejamento, aprendizado (precisa ir aprendendo e adaptando-se com o tempo), delegação (nem tudo será resolvido por um único agente) e comunicação com outros agentes. A adaptação é importante porque o agente está constantemente influenciado pelo ambiente com o qual interage e também pelo prompt de sistema (instrução de sistema), que incide diretamente em suas decisões. Todas essas capacidades formam um agente; não quer dizer que todos os agentes precisem ter todas as capacidades, mas é esse o conjunto disponível para desenvolver agentes que realmente resolvam problemas do mundo real, seja nas empresas, seja na sociedade como um todo.

Arquitetando sistemas multiagentes e plataforma de suporte

Quando falamos de arquitetura multiagente, criamos vários agentes que interagem entre si. Uma arquitetura multiagente não é apenas ter muitos agentes, e sim ter agentes conectados de forma lógica, que trocam informações e delegam atividades para chegar à melhor solução ao final. Nesse caso, podemos ter vários agentes representados pelos agentes A, B e C. Vamos explorar diferentes tipos de arquitetura: qual é melhor, quando funciona uma, como funciona a outra, qual é mais rápida, qual é mais barata. Não existe bala de prata, mas, em uma arquitetura multiagente, normalmente temos a figura de um agente gerente, que vai gerir todo o fluxo de decisão e delegar aos agentes especialistas — A, B e C — quais atividades cada um executará, para ao final gerar a melhor saída para a pessoa usuária na ponta.

Tudo isso sempre se baseia em uma plataforma de IA que garanta acesso a dados em tempo real, uma camada de orquestração, um grande conjunto de modelos que possam ser acionados — como vimos rapidamente em Amazon Bedrock, cada agente pode acionar um modelo diferente porque faz mais sentido para a especialidade de cada agente —, acesso a grafos, bases de dados vetoriais e toda a capacidade de segurança, controle, monitoramento e validação desses agentes. Essa plataforma oferece as garantias necessárias para que nossos agentes sejam executados sobre ela e garantam o melhor resultado ao final: assegura reutilização, escalabilidade, tudo o que é importante não para sistemas de POC (prova de conceito), de avaliação simples, de teste simples, mas sim para sistemas em produção.

Planejando a construção na AWS e componentes do Bedrock

Por isso, vamos usar a AWS (Amazon Web Services) para nos apoiar como ferramenta para a criação desses agentes, sobre todo o arcabouço da Amazon que veremos no próximo slide. Vamos explorar sete camadas principais: o prompt de sistema (instrução de sistema); os modelos LLM (Modelos de Linguagem de Grande Porte) e modelos base (foundation models); ferramentas que podem ser APIs (interfaces de programação de aplicações), servidores, MCP (Model Context Protocol), sistemas ERP e assim por diante; memória episódica; memória de trabalho vetorial; memória de longo e curto prazos; toda a orquestração de workflow (fluxo de trabalho), rotas, workflow de agentes e a conexão e orquestração entre múltiplos agentes; a interface com a pessoa usuária; e a parte de validação — como validar um agente em produção, quais métricas usar, como garantir segurança e ética em tudo que desenvolvemos.

Tudo isso será construído durante o curso sobre a plataforma da AWS, um portfólio de ferramentas de IA que vai desde a infraestrutura — onde temos os modelos que podemos criar de forma customizada, seja com inferência mais clássica, seja com modelos de IA generativa; toda a parte de data foundation (fundação de dados) para processamento de dados, busca vetorial e governança —, a parte de computação (quando colocamos um modelo em produção, como garantir escala para milhões de chamadas simultâneas, que é a parte de inferência), ou, se quisermos treinar um modelo do zero ou fazer fine-tuning (ajuste fino), a necessidade de hardware especializado, como GPUs (unidades de processamento gráfico); e também toda a parte de construção de agentes, capacidades de conexão com bases de conhecimento — knowledge bases (bases de conhecimento) —, até a última camada, que são as aplicações, como o Amazon Q (especialmente o Amazon Q Developer), ferramenta de agentes de IA para ajudar no desenvolvimento de código. Vamos passar por todos esses componentes dentro da plataforma da AWS.

Voltando ao console onde fizemos o teste, podemos ver todos esses componentes em Amazon Bedrock. Vamos trabalhar com prompt routing (roteamento de prompts), criação de agentes, knowledge base (base de conhecimento), guardrails (travas de segurança) e validação de modelos. Vamos explorar durante o curso todas essas capacidades e criar agentes em produção.

Encerrando com responsabilidade e próximos passos

Para finalizar esta Aula 1, deixamos uma mensagem muito importante, inspirada também por uma foto de nossa filha. Existe uma grande responsabilidade quando criamos agentes ou modelos de IA. Se queremos construir sociedades melhores e mais justas, precisamos ter responsabilidade na criação dessas aplicações. Elas devem refletir e amplificar as melhores partes da nossa natureza humana. Não podemos permitir vieses; precisamos criar modelos com ética e responsabilidade. Essa é uma mensagem que deve acompanhar todo o curso.

Agradecemos por estarem aqui na nossa primeira aula. Temos convicção de que o curso vai agradar muito. Deixamos aqui nosso link para quem quiser conectar-se nas redes sociais. Vamos à próxima aula, que traz muitos conteúdos interessantes para aprender. Agradecemos a atenção.

Do Texto ao Significado: Fundamentos dos LLMs - Como funcionam os LLMs na prática

Apresentando a aula e objetivos

Nesta aula, com Vinicius Carida, vamos dar continuidade ao nosso curso Agentes de IA e LLMs: construindo e operando na AWS (Amazon Web Services).

Para recapitular, um agente é composto por diversos componentes: habilidades como raciocínio, planejamento, delegação, memória, conexão com base de dados, chamadas a tools e, no centro de tudo, o LLM (grande modelo de linguagem), que orquestra o processo e auxilia na geração da resposta final ao usuário. Hoje, a proposta é entender melhor o que é esse LLM, como funciona e por que isso nos dará base para interpretar as saídas e escolher os modelos mais adequados, dependendo do contexto de uso.

Acessando o Playground e iniciando experimentos

Para começar, vamos acessar o console da AWS. Já o conhecemos minimamente, e passaremos a explorar progressivamente mais capacidades. Vamos ao Amazon Bedrock (plataforma de modelos), acessamos o Bedrock e, dentro dele, abrimos o Playground (área de testes) para realizar alguns experimentos.

O primeiro teste simples será selecionar um modelo. Vamos escolher um da própria Amazon, o Amazon Nova Lite, aplicar, e perguntar ao modelo qual é a data de seu treinamento. No Playground, executamos o seguinte prompt:

qual a data do seu treinamento?

Em seguida explicaremos o que significa “treinamento”. O modelo informou que a data de corte do conjunto de treinamento é outubro de 2023. Portanto, ele tem conhecimento até outubro de 2023 e declarou não ter acesso a informações reais posteriores a essa data (2024, 2025, 2026 e assim por diante), o que impõe limitações relevantes.

Comparando datas de treinamento entre modelos

Em seguida, vamos trocar de modelo e escolher um da Anthropic, o Claude 3 Sonnet, e fazer a mesma pergunta: qual é a data de seu treinamento? Repetimos o mesmo prompt no novo modelo:

qual a data do seu treinamento?

Neste caso, a resposta do modelo da Anthropic foi que o treinamento foi concluído em setembro de 2023, o que significa que a base de conhecimento inclui informações até essa data. A resposta veio de forma mais direta, mas a janela de treinamento é muito parecida entre eles. Este é um ponto importante a observar. Podemos repetir esse experimento com vários modelos para comparar diferenças. Faremos outros testes com diferentes modelos, mas essa é uma informação central.

Formulando pergunta factual e observando latência

Outro experimento útil é escolher um fato relevante e formular uma pergunta. Como atuamos no mundo financeiro, sabemos, por exemplo, que entre 2023 e 2024 houve mudança de CEO no Banco Bradesco, no Brasil. Vamos perguntar ao modelo Claude 3 Sonnet: “Quem é o CEO do Banco Bradesco?” Digitamos no Playground:

quem é o CEO do banco bradesco

O modelo iniciou o raciocínio; o painel indica que está buscando informações para gerar a resposta. Podemos minimizar a seção de raciocínio enquanto processa. Está levando mais tempo que o normal, o que pode acontecer. Latência é um ponto muito importante, que também discutiremos ao longo do curso, considerando quanto atraso um modelo pode ou não introduzir.

Repetindo a consulta em outro modelo e validando a resposta

Como a resposta não foi concluída, vamos tentar novamente. Voltamos ao modelo anterior, o da Amazon (Amazon Nova Lite), aplicamos e repetimos a pergunta: “Quem é o CEO do Banco Bradesco?” Reenviamos o prompt:

quem é o ceo do banco bradesco?

A resposta veio rapidamente, informando que, até a data de agosto de 2023, o presidente é Rubem de Freitas Novaes. Vamos conferir no Google para obter a informação mais atualizada: o CEO atual do Bradesco, que assumiu a partir de novembro de 2023, é Marcelo de Araújo Noronha. Portanto, o modelo errou ao indicar “Rubem”. Interessante notar que, como a janela de dados do modelo vai até 2023, um erro esperável seria mencionar o CEO anterior, Octavio de Lazari Junior. No entanto, o modelo citou uma pessoa diferente. Podemos posteriormente verificar quem é esse “Rubem de Freitas Novaes”, pois não o identificamos como CEO do Bradesco.

Reavaliando no Claude e refletindo sobre os resultados

Voltemos ao Playground e troquemos novamente para o modelo da Anthropic para observar se agora responde. Perguntamos: “Quem é o CEO do Banco Bradesco?” Enviamos novamente a pergunta:

quem é o CEO do banco bradesco?

O modelo permaneceu no raciocínio e não gerou a resposta final; pode estar apresentando alguma lentidão. Ao examinar o final do raciocínio, apareceu um possível nome: Walter Schalka, que não reconhecemos. Vemos que também não se trata da resposta correta. A resposta correta é Marcelo de Araújo Noronha.

Essas observações são importantes para conectarmos conhecimentos que discutiremos na conversa de hoje.

Descrevendo etapas de pré-treinamento e alinhamento de LLMs

É fundamental compreender que, quando falamos de grandes modelos de linguagem — como o da Anthropic que testamos —, todos esses modelos estão disponíveis dentro da AWS. Há modelos próprios da AWS e de outros vendors (fornecedores), como Meta e Anthropic. Esses grandes modelos de linguagem contam, de forma geral, com três etapas, abrangendo pré-treinamento e pós-treinamento, e tudo isso ocorre antes de serem colocados em produção.

Temos uma primeira etapa de pré-treinamento, na qual o modelo recebe uma quantidade massiva de dados — basicamente utilizamos toda a internet para realizar esse pré-treinamento dos modelos. Concluído o pré-treinamento, é necessário realizar o que chamamos de alinhamento, que consiste em aproveitar todo esse conhecimento e alinhar o modelo para responder perguntas e gerar textos de acordo com a capacidade mais relacionada ao que queremos que gere.

Para isso, uma técnica muito utilizada é o que chamamos de Supervised Fine-Tuning (ajuste fino supervisionado), SFT, que serve, por exemplo, para aprender um domínio específico. Também utilizamos o aprendizado por reforço a partir de feedback humano, Reinforcement Learning from Human Feedback (aprendizado por reforço a partir de feedback humano), RLHF. Essas são etapas importantes — o pré-treinamento e, em seguida, o alinhamento — para que então tenhamos um LLM disponível para uso em aplicações do dia a dia, como as que testamos no Playground (ambiente de experimentação) da AWS ou qualquer outra aplicação que utilize um LLM por trás.

Ilustrando limitações de representações esparsas no processamento de linguagem natural

O que é importante conhecer? Como funciona essa parte do pré-treinamento. É o que nós veremos agora. Nós gostamos de trazer alguns exemplos que ajudam a tornar esse conhecimento mais lúdico. Apresentamos um exemplo clássico, com frases em inglês porque se trata de um caso real que a Amazon já treinou no passado. Havia um problema: existem milhões de produtos na Amazon, clientes deixam avaliações desses produtos e a empresa queria entender essas avaliações para melhorar produtos e serviços. Como são milhões de avaliações, não era viável fazer a leitura manual, então foi pensado um sistema de aprendizado de máquina, Machine Learning (aprendizado de máquina), para automatizar esse processo. Utilizaremos alguns exemplos reais para ilustrar.

Temos uma avaliação positiva: a primeira, "good price (preço bom)"; a qualidade não é ruim; estamos satisfeitos com a compra realizada. E a segunda, negativa: "bad quality (qualidade ruim)"; então estamos tristes, "I'm sad (estou triste)"; vamos devolver a compra realizada. Assim, temos uma avaliação positiva e uma avaliação negativa. O que precisamos fazer? O modelo de inteligência artificial, o computador, não processa texto: processa números e realiza operações matemáticas, como multiplicação matricial. Portanto, precisamos converter os textos em números e, uma forma de fazer isso, é criar um vetor de zeros e uns — uma representação esparsa — com algoritmos clássicos como o bag-of-words (saco de palavras), um dos mais tradicionais na literatura.

Como isso funciona? Criamos um dicionário de palavras que fica no cabeçalho dessa matriz, por exemplo: "good (bom)", "card (cartão)", "price (preço)", "quality (qualidade)". Em seguida, marcamos, para representar a primeira frase, 1 quando a palavra aparece e 0 quando não aparece. Assim, "good (bom)" apareceu, colocamos 1; "card (cartão)" não apareceu, colocamos 0; e assim sucessivamente. Obtemos um vetor de zeros e uns que representa numericamente a primeira avaliação. Repetimos o procedimento para a segunda; no caso, a palavra "good (bom)" não aparece na segunda, e assim por diante. Dessa forma, a segunda linha da matriz representa a segunda frase.

Chega uma terceira avaliação: "price not good (preço não é bom)", "bad quality (qualidade ruim)", e não estamos satisfeitos com a compra realizada. Agora temos um exemplo de avaliação positiva (a primeira), um exemplo de avaliação negativa (a segunda) e uma terceira que não sabemos se é positiva ou negativa; queremos usar um algoritmo de inteligência artificial para classificá-la. O que precisamos fazer? Utilizar a mesma conversão para obter a representação numérica e, então, realizar um cálculo vetorial para entender se o vetor que representa a terceira frase é mais semelhante ao primeiro ou ao segundo.

Ao observarmos, o vetor da terceira avaliação pode sair exatamente igual ao da primeira. Inclusive destacamos algumas palavras: "good (bom)", "quality (qualidade)", "bad (ruim)", "not (não)", "happy (feliz)". Vemos que as palavras principais de uma aparecem na outra. Nesse caso, nosso modelo classificaria a terceira avaliação como positiva, por ser idêntica à primeira, que é positiva. Contudo, sabemos que ela é negativa; portanto, o modelo erraria.

Por que isso ocorre? Porque, para realizar esse tipo de classificação na abordagem mais clássica de Processamento de Linguagem Natural, adotamos duas grandes etapas: uma de representação do texto (como no exemplo em que representamos o texto em vetores de zeros e uns) e outra do modelo de classificação de sentimento, para o qual fornecemos exemplos positivos e negativos, treinamos esse modelo e, depois, ele passa a classificar. Neste caso, o problema não está no modelo de classificação de sentimento — que é supervisionado, daí a necessidade de exemplos —, mas sim na representação do texto, que é muito simplista e não considera, por exemplo, a ordem em que as palavras aparecem.

Esse é um problema importante que precisamos tratar e que surge quando criamos uma representação esparsa. É por isso que os grandes modelos de linguagem são muito mais capazes do que algoritmos mais clássicos em algumas tarefas específicas.

Do Texto ao Significado: Fundamentos dos LLMs - Por que o contexto importa nos modelos de linguagem

Introduzindo a motivação e o exemplo do tesgüino

No vídeo anterior, vimos que existem representações mais simplistas, como bag-of-words (saco de palavras), que têm limitações e não capturam adequadamente algumas características importantes do texto. Por isso, surge a ideia de representação densa. Para explicar essa representação, trazemos um exemplo que consideramos claro e fácil de entender.

Nós perguntamos se vocês sabem o que significa “tesgüino”. Alguém já ouviu essa palavra? É provável que não; ela existe, mas é pouco conhecida. Vamos apresentar alguns contextos em que essa palavra aparece.

Apresentando contextos de uso da palavra

Uma garrafa de tesgüino está sobre a mesa.

Todo mundo gosta de beber tesgüino.

É possível ficar embriagado com tesgüino.

O tesgüino é feito de milho.

Inferindo o significado a partir dos contextos

Não dissemos o que é o tesgüino, mas fornecemos alguns contextos em que essa palavra aparece. Agora, é possível identificar o que é o tesgüino? Conseguimos inferir o que é o tesgüino?

Provavelmente foi possível identificar que poderia ser uma cerveja, um uísque, um tipo de vinho ou, de modo mais geral, uma bebida alcoólica — que é o caso. O tesgüino é uma cerveja, uma cerveja pouco conhecida do norte do México; por isso, este exemplo é adequado, pois poucas pessoas a conhecem. No entanto, não podemos afirmar, somente a partir dos contextos, que se trata especificamente de uma cerveja; pelos contextos apresentados, podemos afirmar que é uma bebida alcoólica feita à base de milho.

Explicando o mecanismo de substituição por contexto

Por que conseguimos fazer essa inferência? Como nosso cérebro realiza esse reconhecimento? Como isso funciona?

Teoricamente, o que nosso cérebro faz é ocultar a palavra que queremos entender — neste caso, “tesgüino” — dos contextos que conhecemos e tentar encaixar, no lugar onde estava “tesgüino”, palavras que já conhecemos.

Neste exemplo, "som" é uma palavra aleatória; nosso cérebro tenta fazer essa conexão. Uma garrafa de "som" está sobre a mesa — não faz sentido. Uma garrafa de suco de laranja está sobre a mesa — faz sentido. Uma garrafa de vinho está sobre a mesa — também faz sentido. Podemos nos embriagar com suco de laranja — não faz sentido —, assim como afirmar que o suco de laranja é feito de milho — também não faz sentido.

Vamos encaixando as palavras que já conhecemos e, com isso, observamos o seguinte: o vetor criado baseia-se nos contextos em que a palavra aparece. Assim, tesgüino se encaixa nos quatro contextos, "som" não se encaixa em nenhum, suco de laranja em dois e vinho em três dos quatro.

Consolidando a ideia de aprendizado por contexto

Deixamos de nos fixar apenas nas palavras que aparecem e passamos a olhar o contexto em que cada palavra aparece. A partir desse contexto, começamos a entender o significado real da palavra. Sabendo o que é vinho, reconhecemos que ele é o que mais se encaixa nos contextos e que é uma bebida alcoólica; portanto, provavelmente tesgüino também é uma bebida alcoólica.

Em linhas gerais, esse é o processo que nosso cérebro realiza. A partir dele, criamos esses vetores e podemos fazer o cálculo de similaridade, não mais por palavras isoladas, mas pelos contextos em que ocorrem. Essa é a ideia central: aprender pelo contexto, e não palavra por palavra, o que nos proporciona uma capacidade muito maior de entender tudo o que está acontecendo.

Com isso, podemos realizar o cálculo matemático de verificação de similaridade de cada um dos contextos e, a partir daí, aplicá-lo para criar nossos grandes modelos de linguagem.

Sobre o curso Agentes de IA na AWS: fundamentos, prompts e RAG

O curso Agentes de IA na AWS: fundamentos, prompts e RAG possui 167 minutos de vídeos, em um total de 38 atividades. Gostou? Conheça nossos outros cursos de IA para Análise de Dados & BI em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda IA para Análise de Dados & BI acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas