Crie um agente de IA (OpenAI, LlamaIndex, Pinecone e Streamlit) | David Armendariz | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Crie um agente de IA (OpenAI, LlamaIndex, Pinecone e Streamlit)

teacher avatar David Armendariz

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Apresentação

      1:46

    • 2.

      Configurando o ambiente de desenvolvimento

      15:19

    • 3.

      Obtendo uma chave de API OpenAI

      3:16

    • 4.

      Entendendo LlamaIndex e RAG

      3:39

    • 5.

      O que são agentes?

      5:04

    • 6.

      Incorporações de vetores

      2:37

    • 7.

      Criando uma ferramenta para buscar papéis do arXiv

      8:11

    • 8.

      Criando uma ferramenta para baixar papéis

      3:48

    • 9.

      Definindo os modelos de incorporação e LLM

      3:40

    • 10.

      Construindo o índice e salvando-o localmente

      11:55

    • 11.

      Criando a ferramenta do mecanismo de consulta RAG

      10:33

    • 12.

      Construindo e interagindo com o agente

      9:03

    • 13.

      Baixando os papéis e buscando novos papéis

      5:15

    • 14.

      Aprimorando o prompt para baixar arquivos

      7:39

    • 15.

      Construindo um curso para gerenciar o índice

      6:13

    • 16.

      Construindo um curso para interagir com o agente

      4:53

    • 17.

      Construindo uma interface de bate-papo com Streamlit

      13:34

    • 18.

      Como obter uma chave de API da Pinecone

      3:09

    • 19.

      Criando um gerenciador de índice para Pinecone

      11:29

    • 20.

      Usando o índice Pinecone no aplicativo Streamlit

      2:42

    • 21.

      Implantando o aplicativo para Streamlit Community Cloud

      5:31

    • 22.

      Conclusão

      0:53

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

501

Estudantes

1

Projetos

Sobre este curso

Você está pronto para mergulhar no mundo da IA e criar agentes poderosos usando ferramentas de ponta? Este curso foi projetado para levar você do zero ao herói na construção de agentes de IA inteligentes com OpenAI, LlamaIndex, Pinecone e Streamlit. Quer você seja um iniciante explorando IA ou um desenvolvedor experiente que quer expandir suas habilidades, este curso oferece tudo o que você precisa para construir aplicativos de IA interativos e do mundo real.

O que você vai aprender:

  • Como usar a API do OpenAI para gerar respostas inteligentes.

  • Construindo e gerenciando índices de conhecimento com LlamaIndex.

  • Armazenamento e recuperação de incorporações vetoriais com o Pinecone para pesquisas eficientes de IA.

  • Criando interfaces de usuário interativas para seus agentes de IA com o Streamlit.

  • Melhores práticas para integrar essas ferramentas para construir soluções de IA escaláveis.

Por que fazer este curso?

A demanda por aplicativos orientados por IA está disparando, e entender como criar agentes de IA é uma habilidade que muda o jogo. Este curso fornece experiência prática com casos de uso do mundo real. No final, você terá construído um agente de IA totalmente funcional pronto para implantar e mostrar.

Para quem é este curso:

  • Desenvolvedores e engenheiros interessados em IA e aprendizado de máquina.

  • Cientistas de dados que querem explorar ferramentas baseadas em IA.

  • Empreendedores e inovadores ansiosos para construir aplicativos baseados em IA.

  • Estudantes e profissionais que buscam experiência prática no desenvolvimento de IA.

Junte-se agora e libere o potencial dos agentes de IA em seus projetos!

Conheça seu professor

Hi! My name is David Armendariz. I am from Ecuador.

I studied mathematics at USFQ (Universidad San Francisco de Quito). However, I love coding and that's why I transitioned to the software industry. I love to share my knowledge here in Skillshare.

I hope you enjoy my courses as much as I enjoy doing them and remember: never stop learning!

Visualizar o perfil completo

Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Apresentação: Olá, bem-vindo a este curso, criando um agente de IA com Open AI, Lama index, pine cone e streamlt Eu sou o Vidar Mendais e serei o instrutor deste curso. Quem sou eu? Sou bacharel em matemática, mestre em ciência e análise de dados , com foco em LMS Sou um engenheiro de software completo com mais de seis anos de experiência Tenho a certificação AW, a Ashur e sou entusiasta da cibersegurança O que vamos fazer neste curso? Criaremos um agente LLM baseado no mini modelo OpenAI GPT 40 O objetivo do agente será encontrar e resumir trabalhos de pesquisa da plataforma de arquivamento e usaremos a estrutura do índice Lama para aumentar a base de conhecimento do O que vamos aprender neste curso? Vou aprender conceitos básicos de IA como incorporações vetoriais, índices vetoriais, geração aumentada de recuperação ou RAC, modelos Crum, agentes de reação, como otimizar as instruções dos agentes, bancos de dados vetoriais, índice Lama para aumentar o conhecimento, necessidade de streaming para criar uma interface de usuário e implantá-la e as melhores práticas de Python e engenharia de software , como incorporações vetoriais, índices vetoriais, geração aumentada de recuperação ou RAC, modelos Crum, agentes de reação, como otimizar as instruções dos agentes, bancos de dados vetoriais, índice Lama para aumentar o conhecimento, necessidade de streaming para criar uma interface de usuário e implantá-la e as melhores práticas de Python e engenharia de software. Quais ferramentas vamos usar? O agente usará três ferramentas um mecanismo de consulta em rack para buscar informações de uma base de conhecimento, uma ferramenta de busca de artigos de pesquisa para pesquisar ou encontrar informações sobre artigos que não temos em nossa base de conhecimento e um download em PDF se você quiser baixar documentos diretamente em sua Espero que você goste desse curso porque gostei muito de construí-lo. Espero poder te ver na próxima lição. Tchau. 2. Configurando o ambiente de desenvolvimento: Olá e bem-vindo de volta. Nesta lição, vamos configurar o ambiente de desenvolvimento. Algumas coisas que você deve ter em mente. Vamos usar o código VS como editor de código. Vamos criar um GidhubRPO para compartilhar o resultado final com você e vamos usar o PDM, que significa Python Dependency Manager para gerenciar as dependências do projeto Python gerenciar Também precisaremos de uma chave de API de IA aberta para usar seus modelos. Então, quais são as dependências que teremos neste projeto Teremos o Archive, que é uma biblioteca para baixar os documentos da plataforma de arquivamento, python dot F para gerenciar as variáveis de ambiente Nesse caso, teremos a chave da API OpenAI. Queremos que isso seja um segredo, então é por isso que vamos usar o Python Vamos usar o Notebook porque vamos usar Jupiter Notebook e também vamos instalar o Lemma Index, que é a estrutura para ajudar a criar aplicativos LLM Então essa é a parte chata do curso, mas temos que fazer isso Vamos para github.com, e esta é minha conta do GitHub Você acessa sua conta do GitHub. Se você não tiver um, você pode criar um, e vamos criar um novo repositório Então, o nome do repositório, vou chamá-lo de pesquisador de arquivos Você pode chamá-lo do que quiser. Vamos torná-lo público para que eu possa compartilhar o resultado final com você. Vamos adicionar um Gid Ignore para um projeto em Python. Licença, não, e esses são apenas aplicativos que eu tenho. Provavelmente, se você não tiver nenhum aplicativo, isso não será exibido para você, mas basta clicar em Criar repositório Um novo repositório foi criado para mim. Vou abrir um terminal, clicar aqui no código e copiar esse SSH Se você não tiver uma chave SSH, configure-a na sua conta do Gita e use HTTPS, use HTTPS, mas o SSH é a maneira recomendada de fazer Vou copiar isso.Vá para o terminal e diga git clone Agora eu tenho esse repositório na minha máquina local e vou abrir o código VS aqui Como você pode ver, temos o GTI nor, que é o mesmo que eu tenho aqui Se eu abrir esse GTI nor, você encontrará muitas coisas que geralmente são ignoradas em um projeto Python Então, vamos usar o gerenciador de dependências do Python quando inicializarmos um projeto com o PDM, essas são as coisas que serão ignoradas Vamos pesquisar por PVM PVM Python. Portanto, o URL é pdmpject.org. Se eu clicar aqui, vou ver o site do PDM. O PDM, conforme descrito, é um gerenciador moderno de pacotes e dependências do iPhone suporta os padrões PEP mais recentes Mas é mais do que um gerenciador de pacotes. Ele impulsiona seu fluxo de trabalho de desenvolvimento em vários aspectos. O objetivo principal do PDM é basicamente a resolução de dependências Porque quando você instala pacotes, esses pacotes podem depender de subpacotes Portanto, os pacotes precisam concordar sobre quais versões dos subpacotes você precisa instalar Essa é basicamente a ideia de resolução de dependências. O PDM é uma ótima ferramenta para gerenciar Então, como você instala isso? Em primeiro lugar, você precisa instalar o Python 3.9 ou posterior Ele funciona em várias plataformas, incluindo Windows, Linux e macOS Como você deve ter notado, estou usando o macOS Outra coisa que o PDM faz é gerenciar várias versões do Python Então, por exemplo, se eu quiser usar o Python 3.10 ou 3.11 ou 3.12, Python 3.10 ou 3.11 ou 3.12, eu posso fazer isso. Vamos ver como fazer isso em um momento. Mas quero que você acesse a documentação e siga as etapas do método de instalação recomendado. Diz que, como o PIP, PDM fornece um script de instalação que instalará o PDM em um Para Linux e Mac, basta copiar esse comando e colá-lo no seu terminal. No Windows, você pode fazer isso com o PowerShell. Mas se você estiver no Windows, eu recomendo fortemente que você use o Windows Subsystem for Linux, para que você tenha um ambiente Linux dentro de sua máquina Windows Se você não quiser fazer isso, se não estiver familiarizado com o Windows Subsystem for Linux, poderá instalar o PDM com Ok. Então, depois de fazer isso, você deve ter o PDM em sua máquina Também há instruções se você quiser desinstalar o PDM, mas eu direi que fique com ele É uma ótima ferramenta. Então, se eu for ao meu terminal e digitar PDM, eu o tornarei maior Você vai ver que isso tem muitas opções. PDM ad é um dos comandos que vamos usar, e isso é para adicionar pacotes a um arquivo chamado Piroject Isso é semelhante ao pacote Jason se você vem do mundo do No JS PDM, outro comando que vamos usar é o PDM nele, que é para inicializar um projeto Pipe que o Tumel Outro comando que vamos usar e que podemos usar é o PDM Python , que é para gerenciar as várias versões do Python que eu estava lhe dizendo Então, vamos ver, outro comando muito importante é o PDM remove, que é usado para remover que é usado para pacotes do projeto Pi até o TamelFle Está bem? Então, vamos ver o que acontece se eu digitar PDM Python Portanto, se eu digitar PDM Python , terei subcomandos adicionais A primeira é a lista, que consiste em listar todos os intérpretes do Python instalados Se eu digitar PDM Python list , você verá que eu tenho essas quatro versões do Python instaladas versões 3,12 0,2, 3,11 0,5, 3,13 0,0 e 3,11 0,8 Agora, suponha que eu queira instalar uma nova versão do Python, eu possa digitar PVM Python install. Devo especificar a versão do Python Se eu digitar PDM Python Install Help , você verá que eu tenho esse Deixe-me digitar a lista de instalação do PBM Python e você verá todas as versões do Python disponíveis Se eu apenas digitar PDM Python Install como fiz aqui , ele instalará a versão mais recente é Python Mas suponha que eu queira instalar o Python 3.12 0.7. Vamos usar essa versão do Python neste projeto e apenas fazer PDM Python Install e você não precisa digitar todo o Você acabou de digitar 3.12 0.7 e isso deve ser suficiente. Então, ele baixará essa versão do Python, a instalará e salvará o executável nesta pasta Agora estamos prontos para inicializar um projeto PDM. Vamos voltar ao código do VS e vamos digitá-lo no terminal PDM Agora, se eu tornar isso um pouco maior, isso me incentivará a escolher a versão do Python para usar neste projeto versão do Python para usar neste Vou usar 3,12 0,7. Essa é essa opção aqui. Eu vou ter a opção quatro. Ok. E isso vai criar essa pasta chamada VENV, que é o ambiente virtual É aqui que todos os pacotes serão instalados e, em seguida, ele está me perguntando qual será o nome do projeto? Eu posso simplesmente digitar Enter várias vezes para manter os valores padrão aqui. Ok. Então, ele cria um projeto Pi que se acumula Novamente, se você vem do mundo NoJS, isso é semelhante a um arquivo JSON de pacote Aqui você pode ver que ele tem dados sobre o projeto, a descrição do projeto, os autores do projeto, as dependências, a versão do Python necessária , etc O que vamos fazer agora é instalar as dependências que precisaremos para este produto Para isso, vou dizer PDM em Archive, index, typon dot e Se eu digitar Enter, você verá que está funcionando para o ambiente Ele está resolvendo todos os subpacotes que serão instalados E isso pode demorar um pouco. Enquanto isso, quero que você observe este arquivo PDM Python Isso apenas indica que o executável do Python para este projeto está dentro desse Você pode ver que isso é muito específico para minha máquina. É por isso que está no GTI não. Quando você selecionou esse Python, GTI nem modelo, ele já tem esse arquivo no modelo, então ele já é Ok. Agora vamos ver aqui o que está acontecendo. Já passou 1 minuto e ainda está sendo resolvido para os pacotes Agora, ele resolveu toda a dependência. Ele resolveu 149 pacotes. Isso é muito porque acabamos instalar quatro desses pacotes. Mas esses quatro pacotes no total, eles usam 149 pacotes nos bastidores Portanto, o PDM é inteligente o suficiente para resolver todas as versões para que não tenhamos conflitos nas versões Tudo foi instalado com sucesso, sem erros, e esse arquivo pdm dot log foi criado Novamente, se você vem do mundo No JS, esse é o pacote, o arquivo de log do pacote. E isso contém informações sobre todas as dependências, subdependências que A última coisa que vamos fazer ver se vamos criar um arquivo EMV de pontos E esse arquivo EMB conterá nossa API OpenAI. Vamos vincular o OpenAI APIKey e aqui vamos colar nosso Uma estratégia ou uma prática recomendada é ter um arquivo NBTeample Portanto, esse exemplo de EMB que não estará no GitKnt pode ser confirmado com segurança Acabamos de colocar as mesmas informações que temos no arquivo EMV, mas sem os valores Aqui ainda não tínhamos o valor. Aqui nunca teremos o valor. Essa é uma boa prática para que qualquer pessoa que clone o repositório saiba que, ei, eu preciso ter um rei de API de IA aberta Isso é tudo para esta lição. Espero que você goste e até a próxima aula. H 3. Obtendo uma chave de API OpenAI: Olá e bem-vindo de volta. Antes que esqueçamos, vamos obter uma chave de API de IA aberta. Acesse open.com, acesse produtos e acesse API Login. Eles mudam isso o tempo todo. Se você não tiver uma conta Open AI, cadastre-se e, se tiver uma, faça login. Vou fazer login com minha conta. E vá até o painel. E acesse as chaves de API. Em primeiro lugar, você precisa ter o faturamento ativado. Então, vá para as configurações, acesse o faturamento na forma de pagamento aqui e você pode colocar $5 Acho que é o mínimo. Então não se esqueça de fazer isso. Vamos voltar ao Dashboard, chaves de API e criar uma nova chave secreta. Então, isso será chamado de Arquivo e, no projeto, você pode definir o escopo dessas chaves de API para projetos. Não vou definir o escopo de um produto específico porque não tenho nenhum projeto. Então, vou usar um projeto padrão e, nas permissões, você pode ser muito rigoroso e escolher o que quiser, por exemplo, apenas para modelos, para áudio, para conclusão de bate-papos, para incorporações Não vou me complicar. Eu só vou dizer, Oh, eu vou criar a chave secreta e essa vai ser minha chave secreta. Obviamente, vou excluí-lo depois de terminar de criar este curso. Agora vou copiá-lo. Vou voltar ao código Vs e, no arquivo EMV de pontos, vou colar isso Essa é a chave de API que vou usar antes que esqueçamos, vamos fazer uma história em quadrinhos Vamos digitar o kit, ter tudo. Git commit e vamos dizer um projeto inicializado com o PDM e Então podemos empurrar essas correntes. OK. Agora, se formos ao Github e atualizarmos, veremos que o arquivo dotNB não exemplo do NB está comprometido, mas isso não tem nada Então, isso é seguro. Caso contrário, as pessoas verão sua chave de API e isso será ruim. Ok, então isso é tudo para esta lição. Espero que você goste e até a próxima aula. 4. Entendendo LlamaIndex e RAG: Olá e bem-vindo de volta. Então, o que é o índice Lama? Em primeiro lugar, qual é o problema com o LMS? Eles são ótimos, mas são pré-treinados em grandes quantidades de dados disponíveis publicamente. Qual a melhor forma de aumentar o LMS com nossos próprios dados privados? É aí que entra o índice Lama. Precisamos de um kit de ferramentas abrangente para ajudar a realizar esse aumento de dados para Portanto, o Lama Index oferece conectores de dados para ingerir suas fontes de dados e formatos de dados existentes, como APIs, PDFs, cães Ele também fornece maneiras de estruturar seus dados para que possam ser facilmente usados com o LMS Veremos que a forma mais comum de estruturar esses dados é por meio de um índice vetorial, que também fornece uma interface de consulta de recuperação avançada sobre seus dados Você pode inserir qualquer solicitação de entrada do LM, recuperar o contexto e a saída aumentada de conhecimento Não podemos falar sobre o índice ama sem falar sobre o RAC. O que é Rag? Rag é uma geração aumentada recuperável Essa é uma abordagem no processamento de linguagem natural que combina a força de dois componentes principais. Recuperação de informações, que busca dados relevantes de uma base de conhecimento externa, banco de dados ou repositório de documentos, e geração de texto, que usa um modelo de linguagem como OpenAIS, GPT four Omni ou qualquer outra coisa para gerar texto semelhante ao humano Como funciona o RAG? Primeiro, um usuário faz uma pergunta ou consulta. Em seguida, recuperamos documentos relevantes de uma fonte externa e geramos uma resposta usando um modelo de linguagem que usa a consulta do usuário e o contexto de recuperação Então, por que temos que usar o RAG? Porque podemos ter acesso a informações atualizadas, permitindo que os sistemas de IA incorporem conhecimento além de seus dados de treinamento. Isso melhora a precisão das respostas porque agora as respostas são baseadas em fontes verificadas e recuperáveis e podemos ter adaptabilidade de domínio Podemos adaptar facilmente o sistema a setores ou tópicos específicos vinculando-o a fases de conhecimento especializado Isso é uma prateleira em uma imagem. A primeira etapa é recuperar e ingerir esses documentos, passá-los por um modelo de incorporação e armazená-los em um banco de dados vetorial A segunda etapa é o usuário fazer uma consulta. Em seguida, essa consulta do usuário passa pelo mesmo modelo de incorporação e , em seguida, pesquisaremos no banco de dados vetoriais, no contexto ou em passagens ou documentos muito semelhantes à consulta que o usuário está Quando tivermos esse contexto, teremos a consulta, o contexto e algum prompt que criaremos. Vamos passar todas essas informações para o LLM, e o LLM vai gerar uma resposta, e essa resposta vai voltar para o usuário Isso é Rag em poucas palavras. Espero que você goste desse vídeo. Nos vemos na próxima aula. 5. O que são agentes?: Olá e bem-vindo de volta. Agora vamos falar sobre agentes. O que é um agente? Um agente é um mecanismo automatizado de raciocínio e decisão. Ele recebe uma entrada do usuário e pode tomar decisões internas para executar essa consulta a fim de retornar o resultado correto Os principais componentes do agente podem incluir, mas não se limitam a, dividir uma questão complexa em questões menores, escolher uma ferramenta externa a ser usada, além de criar parâmetros para chamar essa ferramenta, planejar um conjunto de tarefas, armazenar tarefas concluídas anteriormente, um módulo de memória etc Portanto, os agentes compartilham cinco blocos de construção fundamentais. Percepção, raciocínio, memória, planejamento e ação. O primeiro alicerce é a percepção. Percepção é a capacidade do agente coletar informações sobre seu ambiente. Esse objetivo envolve processar consultas de texto, analisar dados de sensores, interpretar imagens ou até mesmo ler tabelas de dados estruturados de um banco de dados Quanto mais efetivamente um agente pode perceber, mais rico é o contexto que ele pode entender Com uma percepção mais forte, os agentes podem se adaptar melhor às mudanças e responder com precisão às condições em evolução Então temos o raciocínio. raciocínio é onde o agente dá sentido às informações que ele percebeu Isso envolve interpretar contextos, opções diferentes e formar conclusões e formar O raciocínio sustenta a inteligência de um agente. Isso garante que o agente não apenas reaja cegamente, mas avalie cenários para tomar decisões informadas raciocínio avançado geralmente envolve a utilização grandes modelos de linguagem ou outras estruturas de IA para entender as nuances de uma determinada situação Memória, a memória é a maneira do agente reter informações relevantes ao longo do tempo Isso pode incluir contexto de curto prazo como a última solicitação do usuário, e conhecimento de longo prazo, como um banco de dados de interações passadas ou conhecimentos gerais do setor. A memória dá ao agente uma sensação de continuidade. Em vez de tratar cada interação como uma interação isolada, o agente pode se basear em experiências anteriores, melhorando sua precisão e a percepção do contexto à medida que avança. Então temos o planejamento. O planejamento é onde o agente decide quais etapas tomar para atingir suas metas. Ele pode dividir tarefas complexas em etapas mais simples, sequenciá-las em uma ordem ideal e antecipar possíveis obstáculos planejamento garante que o agente não esteja apenas reagindo a uma solicitação por vez, mas traçando proativamente um caminho em direção a objetivos de longo Isso é crucial para tarefas como otimização da cadeia de suprimentos ou gerenciamento de projetos ou qualquer outro cenário em que as ações tomadas agora tenham aplicações futuras. Nós temos ação. Ação é a execução real das decisões do agente. Por exemplo, enviar um e-mail, ajustar os níveis de estoque, recomendar um produto ou realizar uma operação no nível do sistema Sem nenhuma ação, toda a percepção, raciocínio, memória e planejamento do mundo serão desperdiçados ação fecha o ciclo e permite que o agente tenha um impacto tangível em seu ambiente, entregando um resultado no mundo real Como eles trabalham juntos então? A percepção ajusta o agente aos dados. memória armazena e recupera informações úteis do passado imediato e distante raciocínio usa esses dados e o contexto para formar um plano, e o plano mapeia as etapas necessárias para atingir metas do agente e a ação executada nessas etapas, criando valor mensurável Há muitos casos de uso. Qualquer coisa pode ser um agente hoje em dia. Temos agentes de engenharia de software, agentes telefônicos de IA, agentes de vendas, agentes de pesquisa. Isso é o que vamos fazer agora. Chefe de equipe de IA, que pode agilizar as operações diárias, isso é muito louco Assistentes de pesquisa de vendas, agente, contador, assistente mensal e próximo de IA Há muitos casos de uso que os agentes podem ter hoje em dia. Como os agentes de IA trabalharão na prática? Bem, você tem que treinar o agente de IA. Você precisa fornecer seu caso de uso, dados e manual para adaptar os recursos da IA às suas necessidades específicas Insira dados como transcrições, gravação de chamadas, faturas, critérios de qualificação e objetivos principais para Em seguida, você precisa configurar os fluxos de trabalho e as integrações Você precisa alinhar o agente de IA com suas ferramentas e processos existentes Por exemplo, configurar integrações de SIMDs com CRMs, calendários e sistemas de negócios enquanto define ações, alertas e protocolos de escalonamento que atendam aos Em seguida, você precisa implantar e gerenciar as operações. Você precisa lançar o agente de IA para lidar com as operações de forma autônoma, monitorar seu desempenho por meio de métricas em tempo real, avaliar os resultados e refinar processos para alcançar os melhores 6. Incorporações de vetores: Vamos falar sobre incorporações vetoriais. As incorporações vetoriais são representações numéricas de dados. Os dados podem ser texto, imagens ou áudio em um espaço de alta dimensão. Isso significa que eles são vetores com uma dimensão fixa. Cada dado é convertido em um vetor e captura seu significado, contexto ou característica Como funciona, itens semelhantes são representados como vetores mais próximos uns dos outros É assim que você permite uma comparação fácil. Por exemplo, as palavras rei e rainha terão vetores próximos, refletindo sua semelhança semântica Como você mede essa semelhança? Bem, existem métricas diferentes que você pode usar, como o produto de pontos ou a similaridade do cosseno O que são índices vetoriais? São estruturas de dados que organizam essas incorporações vetoriais para busca e recuperação eficientes Eles permitem que os sistemas de IA encontrem rapidamente os pontos de dados mais relevantes com base em medidas de similaridade como similaridade de cosseno ou produto pontual, essas métricas das quais eu estava falando Eles agrupam grandes conjuntos de dados e permitem a recuperação escalável em tempo real permitem a recuperação escalável em tempo real de informações relevantes. Para gerar esses vetores, precisamos de um modelo de incorporação precisamos Neste curso, usaremos a incorporação de texto em três grandes dimensões, que é um modelo avançado de incorporação desenvolvido pela Open AI Ele foi projetado para transformar texto em representações vetoriais de alta dimensão, capturando o significado semântico da entrada, conforme já explicamos Quais são os principais recursos desse modelo de incorporação? Ele pode gerar representações de alta qualidade. Ele produz incorporações que capturam efetivamente o contexto, os relacionamentos e o significado do texto É versátil, é adequado para uma ampla variedade de tarefas, como recuperação de informações, busca por similaridade e agrupamento, além da dimensionalidade que otimiza vetores densos e de alta dimensão Espero que você goste dessa lição na próxima. 7. Criando uma ferramenta para buscar papéis do arXiv: Então, vamos começar a programar. Primeiro, vamos criar uma pilha de ferramentas. No terminal, toque em ferramentas dot PY. Neste módulo, vamos usar a biblioteca Archive. Portanto, se consultarmos a documentação da biblioteca Archive, você verá que o Archive é apenas um wrapper Python para a Portanto, o Archive já tem uma API e essa biblioteca é apenas um invólucro para usar essa API de uma forma mais simples. Então, como você o instala com o PIP? Fizemos isso com o PDM. Nós importamos o Archive. Então, vamos fazer isso. Importar arquivo. E então podemos buscar resultados construindo primeiro o cliente de API padrão Vamos criar esse cliente. Então, por exemplo, podemos pesquisar os dez artigos mais recentes correspondem à palavra-chave quantum. Depois, basta pesquisar isso e podemos iterar esses resultados Os resultados são um gerador, então podemos iterar seus elementos um por um E também há uma documentação avançada de sintaxe de consulta que nos diz para ver o manual do usuário da API de arquivamento, que está neste link aqui, e a consulta pode ser algo assim AU significa autor. Se eu não estou errado, e eu não sei. Vamos acessar esse link e ver esses prefixos. AU significa, TI significa título, ABS, resumo, comentário, etc Se quisermos pesquisar todas essas coisas ao mesmo tempo, basta dizer tudo então é isso que faremos em nossa função. Vamos apenas usar e agrupar alguns tópicos. Isso é o que vamos fazer. Vamos começar a programar. Vamos definir essa função chamada fetch archive papers, que usará dois parâmetros O primeiro é o título ou a consulta, qualquer que seja o segundo parâmetro a contagem de artigos. Quantos papéis queremos buscar. Portanto, a consulta de pesquisa será toda a coluna e o título. Essa será nossa consulta de pesquisa. Então vamos fazer isso. Não sei por que isso não é indentação por si só. Então, uma coisa que precisamos fazer é selecionar o interpretador Python No Mac, o pino Command Shift no Windows, acho que é o pino Control Shift e vamos tocar aqui para selecionar o intérprete e selecionar esse arquivo V&V com pontos Agora ele tem mais recursos, o editor de código, porque sabe que estamos usando esse ambiente virtual. Essa consulta não será quântica, será uma consulta de pesquisa. O resultado máximo não será dez, será a contagem dos papéis . Esse parâmetro será passado ou construído pelo agente. Você verá isso em ação em algumas aulas e depois classificará pela data de envio. Tudo bem. Agora vamos inicializar uma matriz vazia de papéis e obter os resultados Cliente de resultados que resulta na pesquisa. Agora temos um gerador e vamos iterar sobre cada um dos resultados Para obter resultados, informações do nosso artigo serão um dicionário com um título. Resultado desse título Veja título deste resultado e ele tem mais coisas. Como sabemos qual foi o resultado? Quais outros atributos ele tem? Bem, se passarmos o mouse sobre o resultado, podemos ver que é do tipo resultado. Qual é o resultado do tipo? Bem, podemos clicar com o botão de controle ou clicar com o comando no módulo de arquivamento aqui com o comando F ou o controle F aqui no Windows, podemos pesquisar o documento, desculpe, não o documento para obter o resultado. Então, temos que sujar as mãos aqui e você pode ver que essa é a definição de resultado. Ele tem um ID de entrada, que é o URL, o atualizado, quando o resultado foi atualizado pela última vez, o publicado, quando o resultado foi publicado originalmente, o título, os autores, que é uma lista de autores, o resumo, que é uma string, comentário, comentário autor para apresentar, revista revisada, o brinquedo, etc Vamos ver o que é esse autor. Autor é outra definição de tipo que só tem o nome como atributo. Com todas essas informações, obteremos mais atributos. O segundo atributo será resumo, resolva esse resumo. Também obteremos o resultado publicado que foi publicado. Vamos obter a referência do diário, vendemos a referência do diário, vamos obter o Di, resolvemos esse Di A, obviamente você tem o preenchimento automático do editor de código. Teremos a categoria primária, a categoria primária. Teremos as categorias, resolveremos essas categorias, e o copiloto do GitHub também está me ajudando muito Resolvemos que o URL do PDF e o Arquivo Arquivo resultaram em Arquivo, URL e não no arquivo. É o ID da entrada e os autores, que serão uma matriz, nome do ponto do autor para autor nos autores resultantes. Lembre-se de que essa era uma lista de autores. Essas serão as informações do nosso papel, e vamos anexar essas informações do artigo à lista de artigos Caneta, papel, tinta. Finalmente, vamos devolver todos os papéis. Essa é nossa função simples de buscar documentos de arquivo e, como você verá, também será uma ferramenta para o agente É isso que vamos fazer nesta lição. Espero que você goste. Nos vemos na próxima aula. 8. Criando uma ferramenta para baixar papéis: Olá e bem-vindo de volta. Agora vamos codificar nossa segunda ferramenta. Como você pode ver, essas são apenas funções do Python, então elas são muito fáceis de codificar Essa segunda função será uma ferramenta de download de PDF, que receberá uma URL de PDF, que será uma string e um nome de arquivo de saída, que será também uma string. Para isso, vamos usar a biblioteca de solicitações. Para fazer uma solicitação para baixar o PDF, também usaremos a biblioteca do sistema operacional para criar um diretório, caso ele não exista, porque queremos organizar nosso projeto. Então, vamos, primeiro de tudo, tentar criar um diretório chamado papers. E se ele já existe, então não o crie. Não cometa um erro, viva com ele. Está bem? E aqui, vamos colocar o passe de aceitação. Vamos especificar a camada de erro. Agora vamos declarar o caminho de saída completo e vamos dizer sistema operacional, o caminho, a junção, os papéis e o arquivamento de saída Esse será o caminho de saída completo, a pasta papers concatenada com o Em seguida, obteremos uma resposta usando a biblioteca de solicitações, faremos uma solicitação GET para o URL do PDF. E se houver algum erro, vamos aumentar. Aumente o status. Portanto, esse método apenas gera um erro H TTP, caso ocorra. No exceto, o que vamos fazer é aceitar solicitações de exceção de ponto, exceção de solicitação de ponto como E. Vamos retornar as sequências de caracteres e o erro, e vamos imprimir esse erro Se nada acontecer, abriremos o caminho de saída completo com as permissões corretas, WB, e nomearemos esse arquivo e arquivaremos o conteúdo do ponto de resposta E temos que devolver alguma coisa. Temos que retornar uma string dizendo que PDF foi baixado com sucesso e nos salvou, e vamos colocar o caminho de saída completo aqui. Está bem? Então, como você pode ver, essa é uma função Python muito, muito simples que simplesmente baixa algo Ele pode baixar um artigo, pode baixar um documento adjacente, qualquer coisa. Nesse caso, vamos apenas baixar o artigo a partir do URL do PDF. É isso para este vídeo. Muito, muito simples. Espero que gostem e nos vemos na próxima. 9. Definindo os modelos de incorporação e LLM: Ok, então vamos continuar codificando. Vamos criar um novo arquivo chamado constantes no terminal, toque em Constance Neste arquivo, declararemos o modelo incorporado e o modelo LM para reutilizá-los quando criarmos o índice e quando criarmos o Primeiro, vamos chamar a função Load dot M. Primeiro, vamos importar a partir do ponto de carregamento DotM. O que isso faz é carregar toda a variável de ambiente do arquivo ENB Agora podemos acessar o OpenAI APIKey com o módulo OS. Vamos importar e deixar o Github Copilot me ajudar a escrever este APK do OS dot OpenAI Combina muito bem. Agora vamos dizer que o modelo de incorporação será a incorporação de IA aberta e vamos importá-la das incorporações de pontos de índice do Plama OpenAI, da IA aberta a partir daí, e estou sentindo falta das incorporações aberta a partir daí, e estou sentindo falta Incorporação de IA aberta e também tipo de modelo de incorporação de IA aberta. Temos outra coisa. Incorporação, não, isso não Nós não precisamos disso. Só precisamos desses dois. Vamos criar uma instância da incorporação de IA aberta Vamos passar a chave de API, que será a chave aberta de APN de IA, e o modelo será do tipo de modelo de incorporação de IA aberta Veja isso, temos Ava, Baba Cree, DaVinci. São modelos muito antigos. Os mais novos são embed Ada 002 embed three small e bed three large Vamos usar a incorporação de três grandes. E para o modelo LM, vou importar do Lama index dot OpenAI, Import Open AI Vamos criar uma instância de IA aberta. Novamente, temos que passar a chave de API, que será nossa IA, chave de API I , e o modelo, que neste caso será string, e será GPT for mini Ok, então esses são os dois modelos da Open AI que vamos usar. Eu quero que você note uma coisa. Quando importamos coisas de embeddings e de LLMs, tínhamos apenas a opção Open AI Isso porque, por padrão, Lama Index só tem esse plugin por padrão, apenas o material de IA aberta. Mas se você quiser usar, por exemplo, clot ou Mistral AI ou qualquer outra coisa , o Lama tem todos esses conectores que falamos neste slide, mas você precisa Espero que você goste desse vídeo. Nos vemos na próxima. 10. Construindo o índice e salvando-o localmente: Olá e bem-vindo de volta. Agora estamos prontos para criar o índice. Para criar o índice, vamos criar um notebook de Júpiter chamado build Index, o terminal, touch build index IPYNB Ótimo. Primeiro de tudo, vamos adicionar uma célula. E aqui, se você não tiver o VENV, pode clicar. Provavelmente dirá que você selecione o kernel aqui e você escolherá no VENB qual é o ambiente virtual, desculpe por este projeto Certifique-se de que o ponto VENV esteja selecionado. Então, primeiro de tudo, vamos criar nosso índice. Isso significa nossa base de conhecimento. Serão artigos sobre um tópico específico. Que já os temos em nosso banco de dados ou repositório. Então, primeiro de tudo, a partir das ferramentas, vamos importar os papéis do arquivo e vamos buscar alguns O tópico será ou o título, modelos de linguagem, ou seja, modelos de linguagem. Queremos aprender sobre modelos de linguagem, e a contagem de artigos será de dez. Ok. Você pode baixar 100 artigos, se quiser. O tamanho ou o número de papéis não importam. Lembre-se de que os índices são criados para lidar com consultas em grandes Ok, então vamos executar a célula e imprimir os títulos dos papéis que recuperamos Então, papel, título ou papel em papéis. Então, esses são os artigos que buscamos relacionados a modelos de linguagem Ok, agora que temos isso, vamos criar uma função chamada criar documentos a partir de papéis. E o que é exatamente um documento? Bem, isso é apenas uma interface genérica para um documento de dados. Portanto, este documento se conecta apenas às fontes de dados. Vamos passar um texto que conterá as informações do título do artigo, dos autores do resumo do publicado, da referência do periódico, do DOI, da categoria primária, das categorias, do URL do PDF e do URL do arquivo Vamos colocar todas essas informações em uma única string e depois passaremos essa string única para a interface do documento do índice Lama. Primeiro de tudo, a partir do Lama index dot core, vamos importar o documento e, em seguida, vamos criar documentos a partir de papéis e passar a lista de papéis. Primeiro de tudo, vamos inicializar uma lista vazia e , em seguida, vamos repetir esses papéis Então, o conteúdo será uma única string com as informações do título, e vou deixar o e vou deixar copiloto do Github fazer o trabalho chato Os autores serão uma lista de autores separados por vírgula Lembre-se de que autores são uma lista. Lembra disso? É uma lista. Também vamos colocar o resumo, vamos colocar as informações publicadas. Vamos colocar a referência do jornal, referência jornal. Vamos colocar o Di na categoria principal. As categorias também são uma lista. Embora não tenhamos feito nenhum processamento dessa lista aqui, apenas colocamos isso e analisamos isso. Todas as categorias de resultados, ou seja, uma lista de sequências de caracteres. Podemos unir todas essas strings por meio desse comando. Teremos o URL do PDF e também o URL do arquivo. Que desta vez o Githukpilot falha. Oh, não, não falhou. É um URL de arquivamento. Sim, URL do arquivo. Ok, ótimo. Então, agora temos nossa string. O que vamos fazer agora é acrescentar o conteúdo a um documento E o documento desapareceu, a importação desapareceu porque eu tenho uma configuração que remove os documentos não utilizados para salvar Ok. Então, vamos trazê-lo de volta e dizer que o texto será conteúdo. E, obviamente, temos que devolver essa lista, certo. E agora vamos chamar essa função. Digamos documentos, sequência para criar documentos a partir de papéis, papéis Ok. E vamos ver essa lista. Portanto, essa lista é uma lista desse objeto de documento, e cada objeto de documento tem uma ID. Ele ainda não tem uma incorporação. Ele tem metadados vazios. Isso pode ser útil em muitos aplicativos com metadados, mas não estamos definindo nenhum metadado para este documento Porém, se quiser, você pode colocar metadados aqui e colocar qualquer dicionário Python Uma informação que você deseja. Deixe-me fechar isso novamente. Ele também tem mais atributos, mas o que nos interessa é o recurso de texto, recurso de mídia, o texto, e essa é a string que construímos. Você pode ver que pode ser uma corda muito longa. Ok. Então, agora que temos isso, vamos construir nosso índice. Então, como fazemos isso? Vamos primeiro importar do núcleo de pontos do índice ama. Vamos importar configurações e vamos importar o índice da loja de vetores Também a partir de constantes, vamos importar o modelo incorporado porque, lembre-se, precisamos passar o texto por meio de um modelo incorporado Ok. Então, primeiro, vamos dizer que o tamanho do fragmento das configurações será igual a 1024 configurações. A sobreposição do fragmento será igual 1024 configurações. A sobreposição do fragmento Vou explicar o que é isso em um momento. Deixe-me primeiro criar o índice. Eu vou dizer que o índice de armazenamento vetorial a partir de documentos. Vamos passar a lista de documentos e o modelo incorporado será o modelo incorporado que instanciamos nessa incorporado que instanciamos Lembre-se de que este é um texto incorporado em três tamanhos grandes. Ok, então quais são o tamanho e a sobreposição desses pedaços? Ok, então chunk size define a propriedade chunk size para esse número Isso significa que os dados, o texto aqui, serão processados em partes de 1024 unidades Nesse caso, unidades significam caracteres. Se, por exemplo, esse texto tiver 2080, desculpe , 2048 caracteres , ele será dividido em duas partes, mas não exatamente porque temos essa outra configuração chamada sobreposição de partes mas não exatamente porque temos essa outra configuração A sobreposição significa que haverá uma sobreposição de 50 unidades entre blocos consecutivos Isso pode ser útil para garantir a continuidade entre os blocos ao Isso significa que um trecho pode ter algum contexto do trecho consecutivo e do vice-verso Portanto, essas duas configurações são muito importantes. Eles são chamados de hiperparâmetros porque podem ser 128 se você quiser manter mais contexto, mas terá mais partes Portanto, esses são bons padrões para essas duas propriedades. Agora que temos isso, já temos nosso índice. Ótimo. Então, nos bastidores, isso está chamando a API OpenAI para converter tudo isso em vetores Ele está usando o modelo de incorporação de texto de três grandes dimensões . Converta tudo em vetores. Agora, podemos armazenar esse índice usando o contexto de armazenamento, esse método de persistência, e vamos armazená-lo em uma pasta chamada index Certo. Agora temos essa pasta de índice com todos esses arquivos JSON, e isso é algo que provavelmente queremos ter no Git Ignore Então, vamos adicionar o índice aqui no Getting porque isso é dinâmico. Se você pesquisar outra coisa, o índice obviamente mudará. Isso é tudo para criar um índice. Você pode ver que, com o índice Lama, isso é muito fácil. Obviamente, esse índice é um índice local. Podemos usar um índice baseado em nuvem como o Pine Cone, um serviço como o pinecone, ou podemos usar ferramentas mais sofisticadas, como o Chroma TB, que também é um banco de dados vetorial local, mas precisamos implantá-lo Existem outros serviços, serviços em nuvem, como o Vate para armazenar esses índices na Eles usam a AWS nos bastidores ou o GCP. Mas, por enquanto, vamos armazenar o índice localmente nessa pasta. Espero que você goste desse vídeo e até a próxima aula. 11. Criando a ferramenta do mecanismo de consulta RAG: Olá e bem-vindo de volta. Agora vamos começar a criar o agente em si. Vamos criar outro arquivo chamado agente IPYNV. Desta vez, aqui você tem que selecionar o kernel. Lembre-se de selecionar VENV. Ótimo. Primeiro, vamos carregar nosso índice do armazenamento. Essa é a primeira coisa. Tudo o que está armazenado nesses arquivos JSON, vamos carregar isso O Lama Index tem um método chamado índice de carga do armazenamento. Então, do Lama index dot core, vamos importar o contexto Starch e o índice de carga do armazenamento. Precisamos importar o modelo incorporado para que esse contexto de amido seja o contexto de armazenamento a partir dos padrões e o diretório persistente seja o Agora podemos carregar o índice com esse índice de carga do armazenamento. Passamos o contexto de armazenamento e passamos o modelo de incorporação. Ótimo. Agora temos nosso índice, nosso índice local, carregado. O que vamos fazer agora é criar um mecanismo de consulta para. Vamos ver como essa ferramenta de mecanismo de consulta funciona nos bastidores. Das ferramentas de pontos do Lama index.co, vamos importar o mecanismo de consulta para Também vamos importar das constantes o modelo LLM. Então, o mecanismo de consulta será o índice, mas esse índice tem um método chamado mecanismo de consulta. Temos que passar pelo modelo LLM, que no nosso caso será GPT four Omni, e podemos passar outro parâmetro chamado Top K, similaridade, top K, e vamos dizer cinco Vamos recuperar no máximo cinco vetores quando enviarmos uma consulta, encontraremos no máximo cinco vetores semelhantes Agora vamos definir a ferramenta RAC como uma ferramenta de mecanismo de consulta E, novamente, a importação desaparece, então temos que fazer isso de novo. Ferramentas principais, importe o mecanismo de consulta para. Dos padrões, e os padrões serão o mecanismo de consulta Também precisamos fornecer o nome dessa ferramenta. Então, o nome será artigo de pesquisa, ferramenta de mecanismo de consulta. E também é uma boa prática dar uma descrição. E essa descrição vai ajudar o agente a saber do que se trata essa ferramenta. Então, vou dizer que este é um motor de trapos com trabalhos de pesquisa recentes Portanto, essa é a ferramenta que o agente usará para buscar informações em para buscar informações nosso banco de dados existente ou em nosso repositório existente Agora, quero que você mostre que quero mostrar os prompts que esse mecanismo de consulta usa nos bastidores Por padrão, o Lama Index usa um prompt refinado antes de retornar uma resposta. E aprenderemos mais sobre isso em um momento. Em primeiro lugar, deixe-me importar do IPython essa tela. Vou importar markdown e display. Essas são apenas funções utilitárias para ver as coisas um pouco melhor aqui na tela Vou definir esse dicionário de prompt de exibição e vou passar o dicionário de prompts para o prompt teclas e o prompt digt desses itens Vou mostrar algumas reduções aqui. O markdown será a chave de alerta. E tudo isso vai fazer sentido em um momento. Apenas tenha paciência comigo. E solicite que obtenha o modelo. Agora que definimos essa função, vamos dizer que o dicionário de solicitações será o mecanismo de consulta que receberá solicitações e exibiremos as OK. Mecanismo de consulta. Ok, nós não executamos essa célula. OK. Aqui está. Portanto, esse mecanismo de consulta que definimos aqui tem dois prompts. O primeiro é esse modelo de QA de texto do sintetizador de resposta e o segundo é esse modelo de refinamento do sintetizador de resposta sintetizador Então, quando recuperamos as informações relevantes, um pedaço de informação, ele usará o fragmento mais relevante Ele responderá à pergunta ou a qualquer consulta que o usuário postar usando esse trecho e usando esse modelo As informações de contexto estão abaixo. E dadas as informações do contexto e não o conhecimento prévio, responda à pergunta. A consulta é o que nós, como usuário, colocamos e a resposta é a resposta do LLM Depois de ter uma resposta, ele repetirá as outras partes, as outras informações relevantes Porque lembre-se, teremos cinco deles no máximo cinco, com os outros quatro, ele usará esse modelo aqui. A consulta original é a seguinte. Fornecemos uma resposta existente , então esta é a resposta desta solicitação aqui Temos a oportunidade de refinar a resposta existente somente se necessário com mais alguns contextos Esse contexto será outra parte, outra informação relevante Dado o novo contexto, refine a resposta original para melhor responder à consulta Se o contexto não for útil, retorne a resposta original. Isso é chamado de modo de resposta no índice Lama e temos essa documentação aqui. Por padrão, o modo de resposta é refinado Crie e refine a resposta percorrendo sequencialmente cada fragmento de texto recuperado, o que faz uma chamada LLM separada para o nó ou o fragmento uma chamada LLM separada Os detalhes, a primeira parte, é usada em uma consulta usando o modelo de texto qa Usando esse modelo aqui, usando a parte mais relevante o LLM recuperará uma resposta Em seguida, a resposta e a próxima parte bem como a pergunta original, usam uma consulta com o prompt de modelo refinado e assim por diante até que todas as partes tenham sido analisadas Com os blocos consecutivos, ele usará esse modelo aqui e terá uma resposta refinada Se um pedaço for muito grande para caber na janela, considerando o tamanho do baile, ele será dividido usando um divisor de texto simbólico Permitindo que algum texto se sobreponha entre partes, as novas partes adicionais são consideradas partes da coleção de partes original Isso ocorre somente se o pedaço for muito grande. Há outro modo de resposta chamado compacto. Portanto, o compacto, semelhante ao refinado, mas compacto, concatena os pedaços de antemão, resultando em menos chamadas de LLM. Então, em vez de passar pelos outros quatro blocos separadamente, ele mesclará todos os outros quatro blocos e executará esse prompt com o conteúdo mesclado executará esse prompt Portanto, é muito importante que você entenda o que está acontecendo nos bastidores. Um agente tem a capacidade de se corrigir usando essa técnica criativa e refinada. Vamos manter essa abordagem e vamos terminar a aula aqui. Espero que você goste e até a próxima aula. 12. Construindo e interagindo com o agente: Oi, e bem vindo de volta. Agora vamos definir as outras duas ferramentas que a agência vai usar. Vamos importar das ferramentas, baixar o PDF e buscar documentos do arquivo Para definir essas ferramentas, vamos importar as ferramentas do cordão de índice do Lama. Vamos importar a ferramenta de função. E vamos definir a ferramenta de download de PDF, que será uma instância dessa ferramenta de função, e temos que passar a função em si, que é baixar PDF. Temos, novamente, que dar um nome a ele. Então, vou chamar isso de ferramenta de download de arquivos PDF, e também temos, desculpe , ferramenta de função padrão E também temos que dar uma descrição. É uma prática recomendada fornecer uma descrição. Então, eu vou dizer que isso é uma função Python. Isso baixa o arquivo PDF por link. Essa é a nossa ferramenta de download de PDF e também vamos definir outra ferramenta chamada ferramenta FEG Archive, que será a mesma coisa Passamos a função de documentos do PE Archive, damos um nome a ela, buscamos no Archive E forneceremos a descrição dizendo que baixe os dizendo que baixe os artigos de Max PursultSrcent sobre Podemos colocar esse espaço reservado lá do Arquivo. C. E temos que fechar isso. Ok, agora que definimos essas duas ferramentas, vamos criar uma nova célula e vamos criar o agente. Então, do Lama index dot core, esse agente, vamos importar um agente de reação. Então, temos várias coisas aqui, vamos criar uma instância de um agente de reação. Por que reagir? Porque vai funcionar Este agente opera em dois estágios principais. A primeira etapa é o raciocínio, então ele recebe uma consulta, o agente avalia se tem informações suficientes para responder diretamente ou se precisa de uma ferramenta e, em seguida, e, em seguida Se o agente decidir usar uma ferramenta, ele executa a ferramenta e seguida, retorna ao estágio de raciocínio para determinar se agora pode responder à consulta ou se precisa de mais Portanto, é tão fácil quanto dizer agente de reação nas ferramentas. E passe uma lista de ferramentas. Então, baixe o PDF two, ferramenta Rack, e busque o Archive two Temos que fornecer um LM que isso vai usar. Vamos aprovar nosso modelo LM, o GPT 40 Mini. Por último, mas não menos importante, vamos dizer que o Vervos verdadeiro para que saibamos o que está acontecendo nos bastidores, todos os registros que esse agente lança fora E é isso. Agora, criamos um agente. Assim, podemos começar a conversar com nosso agente. Para isso, precisaremos de um modelo de consulta. Vamos criar um modelo de consulta e, provavelmente, vamos refiná-lo em lições futuras Então, isso vai dizer que estou interessado em algum tópico, certo? Encontre artigos em seu banco de dados de conhecimento relacionados a esse tópico. Use o modelo a seguir para consultar um artigo de pesquisa, uma ferramenta de mecanismo de consulta para. Eu vou dizer que forneça o título, o resumo, os autores e o link para baixar quatro artigos. Deixe-me ver quatro artigos relacionados ao tópico. Período. Eu tenho Whoops. E eu vou dizer que, se não houver, você poderia buscar o recente no Archive Do Arquivo. Ok. Então, este é um modelo de consulta que eu escrevi , vamos ver se isso funciona. Vamos criar um novo eu e dizer que a resposta é igual à do agente desse chat Vamos passar o modelo de consulta e formatar para fornecer o tópico. O tópico será modelos de vários modelos. Espero dessa lista de artigos que, por exemplo, modelos de vários modelos sejam recuperados E provavelmente outra coisa. Mas não sei quais outros papéis serão recuperados porque esse é apenas o título E lembre-se dessas buscas pelo resumo , tem resumo, tem categorias e todas essas coisas. Então, provavelmente, também buscará outros papéis. Então, vamos executar isso, e você pode ver que a saída está dizendo a etapa de execução e esse ID, a entrada da etapa é o modelo de consulta com o tópico, que são modelos multimodais Agora, a ideia do agente é que o idioma atual do usuário é o inglês. Preciso usar uma ferramenta para me ajudar a responder à pergunta. Então, a ação que será tomada é usar o artigo de pesquisa, a ferramenta de mecanismo de consulta, e a entrada será essa: fornecer o resumo do título, os autores e o link para download artigos relacionados a modelos multimodais Então, o que isso está fazendo é usar esse mecanismo de consulta. Lembre-se de que o mecanismo de consulta usa GPT four omni tem a capacidade de fornecer uma resposta seguindo este modelo aqui Seguindo ou fornecendo o título, o resumo dos autores e o link para baixar o artigo. A observação é que ele retornará. Tudo isso é gerado pelo GPT 40 M. Ele fornece o título, o resumo, os autores e o URL do PDF Podemos visualizar melhor essa resposta usando essa classe Markdown. Eu vou dizer Markdown, resposta com pontos de resposta. Ok. Agora podemos visualizar isso melhor Essa é a resposta do GPT 40 Mini. Acabou de me dar uma lista de quatro artigos. Isso é ótimo. Nesta lição, vamos terminar aqui. Na próxima lição, veremos se ele pode baixar todos esses documentos. Espero que você goste. Nos vemos na próxima aula. 13. Baixando os papéis e buscando novos papéis: Olá e bem-vindo de volta. Agora, nesta lição, vamos baixar todos esses documentos. O agente, lembre-se de que uma das características do agente é que ele retém a memória das tarefas que já foram concluídas Como o agente retém esse histórico de bate-papo, podemos solicitar o carregamento dos documentos sem mencioná-los Ok. Então, vamos digitar esse novo agente de resposta celular que conversa e diz ao agente que baixe todos os papéis que você mencionou. Vamos ver o que acontece. Portanto, ele está executando esta etapa e a entrada da etapa é baixar todos os artigos que você mencionou. A ação ou ideia, primeiro lugar, é que eu preciso baixar vários arquivos PDF com base nos URLs fornecidos para os artigos relacionados a modelos multimodais A ação é baixar o arquivo PDF dois. A entrada da ação é essa URL do PDF e o arquivo de saída é essa. Isso é só para um artigo. Você pode ver que nesta pasta, ele baixou apenas um artigo. E depois vai para o outro papel, que é texto multilíngue, alcance a compreensão visual, que é o segundo Mas veja isso. Agora está dizendo que o bandido está dizendo que pode responder sem mais ferramentas, e ainda usa o hum, não está realizando uma ação A resposta é: faça o download do PDF 2. Não está baixando o segundo arquivo, nem o terceiro nem o quarto. Vamos corrigir isso fazendo uma engenharia rápida neste bate-papo. Mas, por enquanto, vamos continuar e, bem, vamos colocar a resposta em markdown para que possamos ver isso melhor Posso ver que a resposta é baixar isso, usar a ferramenta de download de PDF e ela está nos dizendo a última coisa que fez. Essa. Isso não é preciso. Nós vamos consertar isso. Mas, por enquanto, vamos ver o que acontece se perguntarmos sobre um tópico que não está disponível nessa lista que encontramos. Vamos interagir com o agente mais uma vez e vamos falar sobre agente, modelo de consulta, e vamos formatar com um tópico diferente como computação quântica, algo assim. Nenhum desses artigos fala sobre computação quântica, eu acho. Vamos ver o que acontece se falarmos sobre esse tópico que não está disponível. Obviamente, veremos melhor a resposta aqui. Mas vamos ver o processo de raciocínio. Agora, o modelo está falando sobre computação quântica. A ideia é que o idioma atual do usuário é o inglês. Preciso usar uma ferramenta para me ajudar a responder à pergunta. A ação é pesquisar um artigo, uma ferramenta de mecanismo de consulta. A entrada é esse modelo, mas parece que não há nada relacionado à computação quântica. Então, a ideia é que parece que não há artigos disponíveis no banco de dados de conhecimento relacionados à computação quântica. Vou buscar artigos recentes no Arquivo. Agora ele está usando a terceira ferramenta, que é fetch from Archive, e a entrada de ação é o título computação quântica e os papéis contam cinco Ok. Então, agora eu encontrei esses cinco papéis aqui. Você pode ver sondando o entrelaçamento, escalando uma transição de fase quântica em um computador quântico , aditividade uniforme, ou qualquer outra coisa, essas coisas complicadas Mas definitivamente encontrou novos artigos sem que interviéssemos nesse processo Isso é legal. A próxima etapa da próxima lição, o que vamos fazer, é realmente resolver o problema de baixar os documentos. 14. Aprimorando o prompt para baixar arquivos: Oi, e bem vindo de volta. Então, primeiro de tudo, vamos fazer um commit, para não perdermos todas as nossas alterações. Vou excluir este documento para que , da próxima vez que corrigirmos o problema do documento, você veja que tudo está corrigido. Então, vamos adicionar tudo. Vamos adicionar uma mensagem de confirmação dizendo, crie a primeira versão do agente e vamos fazer um push. Em. Agora, o que vamos fazer a seguir é modificar esse prompt aqui, baixe o prompt porque agora é muito simples e talvez essa não seja a melhor maneira de fazer isso. Claro, você pode usar o Chat GPT ou o clot para aprimorar esse prompt aqui, foi o que eu fiz Na verdade, a solicitação que surgiu para corrigir esse problema foi, antes de tudo, um processo iterativo Eu tentei isso várias vezes para corrigir esse problema. Eu tentei vários prompts, e esse foi o que resolveu o problema Também tentei outras abordagens e vou convidar você a experimentar outras abordagens. Vamos discutir isso em um momento. Por enquanto, vou contar o prompt, baixar os seguintes artigos e para cada artigo. Eu vou dizer, em primeiro lugar, opa. O que está acontecendo? Processe um papel por vez. Em segundo lugar, vamos fazer assim. Assim. Sim. Segundo, indique qual número de papel você está processando do total. Em terceiro lugar, não sei por que isso está bem. Conclua um ciclo completo de download antes de passar para o próximo vapor. Quarto, indique explicitamente ao passar para o próximo artigo e, quinto, forneça um resumo final somente após o download de todos os artigos Então, essas serão as novas instruções para a etapa de download. Está bem? Então, vamos ver o que acontece agora. Vou executar tudo de novo só para ficar claro, limpar todas as saídas e executar tudo e vamos ver o que acontece Está buscando novamente os quatro artigos relacionados a modelos multimodais. Agora está aqui. Está dizendo que vou começar a baixar os papéis um por um, processando cada artigo na ordem em que foram listados. Ação, baixando o PDF dois, a segunda ação é baixar novamente o PDF dois. Mas agora, para o visual multilíngue Rich de texto, a terceira ação é a mesma usando o download do PDF 2, mas com esses protótipos multimodais abrangentes, e a quarta ação é a mesma, mas com Rato. Agora ele baixou os quatro papéis. Agora vamos ver o que acontece quando ele busca a computação quântica. Oh, opa Agora ele também está baixando os de computação quântica. Então, resolvemos parte do problema. Conseguimos baixar os quatro artigos que definimos explicitamente para download, mas agora ele também está baixando os outros. Então, agora temos que fazer outra coisa para evitar essa situação e você pode ver isso também falhou nesta última etapa. Deixe-me deletar todos os papéis novamente, por algum motivo, aqui, não está explícito que não seja necessário fazer o download dos papéis Novamente, passei por um processo iterativo. Isso é tentativa e erro e esse é mais simples. Você só precisa dizer: não baixe documentos. A menos que o usuário solicite isso explicitamente. Então, basta dizer à IA: Ei, não baixe os papéis a menos que o usuário diga, então vamos ver o que acontece. Vou limpar todas as saídas novamente e executar todas. Dessa vez, tive que modificar o modelo de criação, não o modelo de download. Então, agora, ele está novamente procurando no banco de dados ou no índice. Quais são os papéis de modelos multimodais? Encontrou os quatro papéis e vamos ver o que acontece. Todo esse processo é engenharia rápida, assim como quando você faz engenharia rápida para o HAGPT, você também pode fazer engenharia rápida para agentes Vamos ver o que está acontecendo na pasta de papéis. Eu baixei os quatro artigos com sucesso. Os papéis multimodais. Para 23 segundos. E agora está buscando novos artigos relacionados à computação quântica O que eu espero agora é que ele não baixe os papéis da computação quântica. Aqui está. Você pode ver agora que desta vez só encontrou um papel, mas isso é bom. Pelo menos não baixou todos os papéis. Isso é um bom sinal. Vamos fazer um commit aqui. SG confirme, crie a segunda versão do e vamos fazer push. Desta vez com os papéis incluídos. É isso para este vídeo. Espero que você goste e até a próxima aula. 15. Construindo um curso para gerenciar o índice: Oi, e bem vindo de volta. Então, o que vamos fazer agora é criar duas classes. Uma classe será chamada de gerenciador de índice e a segunda classe será chamada de classe de agente. Então, essas duas classes, seu propósito será capturar toda a lógica que criamos aqui nesses cadernos de a lógica que criamos aqui nesses Júpiter em uma classe para que possamos reutilizá-la e vamos criar um stream iluminado que usa essas duas classes para que as coisas fiquem um pouco mais fáceis Então, primeiro de tudo, vamos criar a classe de gerenciador de índices. Então, aqui vamos definir uma classe chamada gerenciador de índices e vamos criar um construtor E aqui, teremos apenas como parâmetro o modelo incorporado O modelo de incorporação de pontos automáticos será aquele que passaremos aqui. Também vamos definir essa matriz vazia de vapores. OK. Então, agora vamos definir um método de busca de papéis, que receberá como parâmetros o tópico que queremos buscar e a contagem de papéis, que vamos padronizar para dez, que vamos padronizar para como fizemos nos cadernos de Júpiter Então, papéis com pontos automáticos, em vez de serem agora uma matriz vazia, os chamarão de papéis de arquivo de busca com um tópico, e os papéis contam Tópico. Ótimo. E precisamos nos refrescar aqui. OK. Agora que temos esses papéis de busca, também vamos criar esse método chamado criar documentos a partir de papéis Esse método será exatamente o mesmo que este. Na verdade, deixe-me copiar e colar tudo. Indenta isso. Mas desta vez ele não receberá artigos como parâmetro porque artigos já estão inicializados aqui Eu só vou dizer para papel em papéis com pontos próprios. Também vou me livrar desses documentos aqui. Vamos inicializar os documentos em outro lugar. Vamos dizer que documentos com pontos próprios acrescentam documento. Precisamos importar o documento do índice Lama, certo? E podemos devolver os documentos ou simplesmente não o fazemos, depende de você. Eu realmente não me importo. Eu só vou devolvê-los. Ok, e diz que os documentos não existem. É por isso que é porque não definimos documentos. Então, bem, vamos fazer isso aqui. Não faz mal a ninguém. Vamos fazer isso aqui. Documentos próprios e terreno. Agora vamos criar um método de criação de índice, Dev Create index, e isso chamará essa função de criação de documento a partir de papéis, e também reunirá e executará essa lógica aqui. OK. Então, algo assim, inventamos isso e temos que importar configurações e índice de armazenamento vetorial OK. E aqui, vamos atribuir isso a uma variável de instância chamada index. Além disso, embed model, temos isso no construtor, então podemos chamar self esse modelo embed, e documents está aqui, self Então, eu prefiro inicializar isso aqui. Aí vai você, e aí vai você. Isso é só uma questão de organização. Não afeta o resultado. Mas agora temos essa classe que tem esse método para buscar os papéis Vou preencher a matriz de papéis. Depois de executar esse método, você pode criar o índice e, em seguida, precisamos de outro método para recuperar o Esse método fará a mesma coisa que estamos fazendo aqui. Essa mesma lógica, vamos colocá-la aqui e, obviamente, temos que importar coisas, vetores para indexar, carregar o índice do armazenamento, por algum motivo, isso foi duplicado O modelo de cama será autodidata e o modelo Bt. E o que mais? Não vamos atribuir isso, mas devolver essa taxa. Então eu acho que isso é tudo o que precisamos fazer para esta aula. Também podemos definir um método arr apenas para imprimir os títulos dos artigos Então, eu vou dizer listar papéis, e vamos apenas copiar a lógica disso. Como imprimir papel ladrilho por papel, eu mesmo os papéis, para mostrar coisas, se quiser Isso é tudo para esta classe. Na próxima lição, o que vamos fazer é criar a classe de agente. Não se esqueça de fazer um commit, adiciona o gerente de índice Cass. Empurrar. É isso para esta lição. Espero que você goste. Nos vemos na próxima aula. 16. Construindo um curso para interagir com o agente: Ótimo. Agora vamos criar outra classe chamada classe agente. Vamos criar outro arquivo chamado agent dot PY. Aqui vamos definir essa classe chamada agente. No destructor, obteremos o índice e o modelo LLM. O índice de pontos próprios será índice e o modelo LLM de ponto próprio será o modelo LLM No Deconstructuor, vamos criar o mecanismo de consulta, a ferramenta RAG, a ferramenta de download de PDF, a ferramenta download de PDF, a arquivamento Fetch e o método do agente de criação para criar o agente Então, basicamente, transforme a lógica desse caderno de Júpiter em uma aula Então, primeiro de tudo, construa, construa um mecanismo de consulta. O que isso vai fazer é basicamente fazer isso. Pegue essa linha de código e coloque-a aqui. Vamos dizer que o mecanismo de consulta de ponto próprio será igual ao índice de pontos próprios como mecanismo de consulta, módulo de ponto próprio M e similaridade superior K igual a cinco Isso também pode ser um parâmetro do construtor, mas vamos codificá-lo para cinco O segundo método será construir a ferramenta RAC. E, basicamente, vai ser isso. Portanto, self dot Rat será igual à ferramenta de mecanismo de consulta. Vamos importar isso neste arquivo e o mecanismo de consulta será um mecanismo de consulta self dot. Vamos nos livrar disso e pronto. Agora, o outro método será a ferramenta de download de PDF criada e, basicamente , será apenas para copiar isso, fazer o download automático do PDF. Temos que importar a ferramenta de função e baixar o PDF do arquivo de ferramentas aqui. Aí está. Agora, crie a ferramenta fetch Archive. Novamente, isso vai ser isso. Vamos apenas copiar e colar aqui. Diga a ferramenta self dot fetch Archive e importe o arquivo fetch do arquivo de ferramentas Aí está. Agora vamos definir outro método, que será o agente de compilação. O agente de compilação será exatamente isso aqui. Vamos apenas copiar isso, colar aqui e importar isso na parte superior. Aí está. E essas serão a ferramenta de PDF de download automático de pontos, a ferramenta self dot g, a ferramenta arquivamento self-dot fetch e a taxa de modelo LLM com pontos Novamente, todos esses parâmetros, como verbos, são verdadeiros. Eles podem ser configurados no inicializador, se você quiser. Vou apenas codificá-los e dizer variáveis, várias sempre verdadeiras Agora vou entrar no inicializador para chamar todos esses métodos nessa ordem Primeiro, o mecanismo de consulta, depois a ferramenta build Rag, depois a ferramenta de download de PDF, depois crie qualquer ferramenta de arquivamento de animais de estimação e, finalmente, crie o agente Ótimo. Estamos perdendo apenas um método aqui. Quando inicializarmos essa classe de agente, o agente será inicializado automaticamente, mas eu quero um método de bate-papo, que receberá uma mensagem Voltará para mim, o agente, para o chat. Mensagem. Basicamente, nessa interação aqui, não vamos mais passar esses modelos de consulta. Vamos simplesmente passar qualquer mensagem. A mensagem será basicamente qualquer string aqui. Ok, então é isso para esta aula. Novamente, isso é obter Git commit como classe de agente e push. É isso para este vídeo. Espero que você goste e até a próxima lição , onde criaremos um aplicativo de sprint let usando essas duas classes 17. Construindo uma interface de bate-papo com Streamlit: Oi, e bem vindo de volta. O que vamos fazer agora é criar um aplicativo de streaming let. O Stream Lead é uma estrutura Python para criar aplicativos, especialmente aplicativos de dados, como dizem aqui Ele transforma scripts de dados aplicativos web compartilháveis em MD, entre outras coisas. Não é necessária experiência em front-end. Você acessa a seção da galeria verá muitos exemplos que as pessoas criaram com o stream it. Por exemplo, para o LMS, eles criaram chatbots ou GPT de bate-papo com memória, muitas coisas Você pode ver os mais populares, Math GBT, portfólio, qualquer coisa E tem muita compatibilidade ou muitas ferramentas, eu diria, para criar mapas LLM OK. Então, vamos começar a criar esse chatbot para interagir com o agente Em primeiro lugar, precisamos instalar o streamlt como uma dependência Portanto, o PDM adiciona o streamlet e aguarda a instalação da dependência Enquanto isso, vamos criar um arquivo chamado app dot PY. OK. Então, aqui, vamos importar nossa classe de agente e também vamos importar nossa classe de gerenciador de índice. Além disso, vamos importar das constantes, o modelo incorporado e o modelo LM. OK. E também vamos importar de forma simplificada como ST. É assim que as pessoas da comunidade Python costumavam importar essa biblioteca Ele ainda não o reconhece porque ainda está sendo instalado E vamos começar a criar o aplicativo enquanto ele é instalado. Então, primeiro de tudo, precisamos entender um conceito em streamlt que é o estado da sessão Então, no streamlt, construímos um script, e esse script é executado como se estivesse em um loop selvagem Então, tudo o que escrevemos aqui será recriado se não colocarmos essas variáveis no que é chamado de estado da sessão Há várias maneiras de armazenar essas variáveis em cache, e uma dessas maneiras é usando um decorador Esse decorador é chamado de cache ST stream lit. Aqui podemos definir uma função, e eu vou chamar essa função de agente de inicialização Porque queremos que o agente seja inicializado apenas uma vez. É por isso que estamos armazenando esse recurso em cache. Vamos dizer que o gerenciador de índice é igual ao gerenciador de índices. Lembre-se que precisamos passar o modelo de incorporação e, em seguida, podemos obter o índice chamando o método de recuperação de índice que criamos para essa classe Por fim, retornaremos um agente com índice e o modelo LM OK. E agora vamos inicializar inicializar o agente e o estado da sessão OK. Então, como fazemos isso? Dizemos que se o agente não estiver na sessão de pontos extremos, estado da sessão, então vamos dizer stream session state dot agent, agente inicializado Na primeira vez que esse script for executado, o agente não estará no estado da sessão e, portanto, será inicializado Também precisamos inicializar no estado da sessão as mensagens do chat Se as mensagens não estiverem no estado de sessão de stream, as mensagens serão uma matriz vazia. Portanto, o stream lead tem uma maneira de criar bate-papos. Vamos ver como ele usa o conceito de linhas. Então, uma parte do bate-papo será o usuário ou o humano, e a outra parte do bate-papo será o assistente ou a IA. Então, vamos ver como isso funciona em um momento. Então, o que vamos fazer agora é exibir as mensagens do bate-papo. Lembre-se de que tudo isso será executado em um loop contínuo. Então, precisamos sempre que esse script for executado, imprimir as mensagens. Para mensagens na sessão, indique que mensagens, essa é a sintaxe que usamos para escrever as mensagens com SD e tem essa variável de mensagem de bate-papo E o que temos que colocar? O nome? O nome pode ser o usuário, o assistente, a IA ou humano. Usuário e humano são a mesma coisa. Assistente e IA são a mesma coisa. Mas a mensagem conterá a função. Então, vamos dizer message dot role. Portanto, a função da mensagem será de usuário ou de assistente. Como sabemos disso? Porque vamos definir isso em um momento. Apenas tenha paciência comigo. Então, aqui para escrever algo no chat, usamos esse método markdown e vamos imprimir o conteúdo da mensagem aqui OK. Você poderia dizer que as mensagens serão uma série de dicionários e cada dicionário terá uma função e um conteúdo A função será de usuário ou assistente e o conteúdo será a própria mensagem, que pode estar no Markdown Agora vamos criar a funcionalidade principal disso. Vamos dizer if prompt e vamos chamar esse método de entrada. Pergunte-me qualquer coisa sobre vapores de pesquisa. OK. Então, o que isso significa? Isso significa que, se essa variável de prompt não for inicializada, essa sintaxe significa, ok, inicializá-la para que seja isso que essa entrada de bate-papo Isso é apenas um espaço reservado como você verá em breve Então, o que digitarmos aqui será atribuído a esse prompt. OK. Então, agora vamos acrescentar às mensagens de estado da sessão, listar esse dicionário aqui aqui porque ao inserir algo, eu sou o usuário Portanto, a função será o usuário e o conteúdo será o atribuído nesse prompt. Ótimo. Então anexamos isso, mas agora temos que mostrá-lo na tela Então, com SD, a mensagem de bate-papo, e desta vez será o usuário. Vou anotar o prompt. Então, eu vou mostrar o que eu digitei, basicamente. Em seguida, vou mostrar o que o assistente responde. Com a mensagem de bate-papo ST, assistente, vou receber a resposta e a resposta será recuperada com o agente Lembre-se de que criamos esse método de chat de bate-papo e passamos o prompt e isso retorna algo que tem um atributo de resposta Agora vamos imprimir a resposta e, finalmente, anexar às mensagens de estado da sessão a resposta, mas com a função de assistente Então isso é tudo. Acabamos criar esse aplicativo em 33 linhas de código. E para executar isso, certifique-se de que, no seu terminal, feche o terminal e certifique-se abri-lo novamente e de que ele mostre isso. Isso significa que você está dentro do ambiente virtual, senhor. E se você não vê isso, você também pode digitar PDM use sorry, PDM Ben B ENV e PDM BENV activate Esse é o comando. Então, imprima o comando para ativar o ambiente virtual. Então, você terá que basicamente digitar isso e colar. OK. Então, agora estou dentro de um ambiente virtual. OK. Então você deveria ver isso. Quando você vê isso ou não tem CSH ou Mac, basta digitar isso Obviamente, com um comando correto, você digitará stream it run up dot PY. Isso abrirá esse bate-papo aqui, mas algo está errado. Então, deixe-me ver o que é recurso de cache, não cache. Então, vamos tentar novamente. Ok, então vamos adicionar algo que eu perdi, e será um ladrilho só para ver isso um pouco melhor Então, no File Archive, Papers, Chatbot, sim. É um bom nome. Então, espero que, se você estiver fresco, veja esse título. Ok, então, como eu disse, este é um espaço reservado para a entrada do bate-papo Mas eu posso digitar qualquer coisa aqui. Eu vou dizer, você pode buscar artigos relacionados à mecânica quântica E lembre-se de que a mecânica quântica não está na base de conhecimento Então, aqui aparece este pequeno ícone para indicar que eu sou o usuário, e esse é o assistente. E aqui, vou acrescentar outra coisa só para torná-la um pouco melhor. Em primeiro lugar, acho que retornou a resposta, mas quero ser mais fácil de usar. E aqui nesta linha, eu vou dizer com st dot spinner, e eu vou dizer pensando Então, embora isso não aconteça, enquanto o agente estiver pensando, vamos mostrar o spinner para que seja mais fácil de Deixe-me copiar isso e fazer de novo. Pensando com um girador. Porque lembrar que isso leva algum tempo. Essa é uma maneira mais fácil de mostrar o resultado. Vamos ver o que são lotes. Então, sim, acho que acabou, ou acho que errou por algum motivo Vamos parar com isso isso novamente e fazer a mesma pergunta novamente. Você pode buscar artigos relacionados à mecânica quântica? Então, ele está usando a ferramenta fetch from Archive, mas ainda está pensando Então, vamos esperar um momento e pronto. Essa é a resposta. Ok, agora temos uma interface de usuário para ver os resultados do nosso trabalho árduo. Espero que você goste desse vídeo, a próxima aula. 18. Como obter uma chave de API da Pinecone: Olá e bem-vindo de volta. Então, vamos agora armazenar nosso índice no Pine Ce. Portanto, a pinha é um serviço na nuvem para armazenar índices. Isso significa que é um banco de dados vetoriais na nuvem. Então, como diz aqui, você pode criar uma IA experiente com seu banco de dados vetoriais no centro Pine Cone é a principal plataforma de conhecimento para criar aplicativos de IA precisos, seguros e escaláveis Assim, você pode criar uma conta gratuita. Obviamente, isso tem um nível gratuito. Você pode escolher o plano inicial para testar e para aplicativos pequenos. É grátis. Você tem o Pinec serverless, você tem a inferência e o assistente do Pinec , que são alguns produtos que eles estão criando, e você precisa usar a região leste dos EUA, um de oito de nós Você pode começar gratuitamente, criar uma conta e fazer login. Eu vou fazer isso sozinho. Aqui, e então o que vamos fazer aqui é criar um índice. Clique neste botão, crie um índice, e eu vou dizer Pesquisa de arquivo. Aqui você pode configurar as dimensões desses vetores. Lembre-se de que os vetores têm dimensões. Essas são as incorporações, ou você pode escolher uma predefinição Lembre-se de que estamos usando texto incorporando três grandes, então podemos escolher isso diretamente. E veja isso. As dimensões são preenchidas automaticamente com 3.072 Então essa é a dimensão das incorporações quando usamos esse modelo de incorporação Sem servidor. Eu vou escolher Ws. Posso escolher outros provedores de nuvem porque estou no plano pago e posso escolher outras regiões. Mas se você estiver usando o nível gratuito, só poderá usar o AWS UseSto . Você pode ativar proteção de exclusão para evitar que qualquer usuário exclua acidentalmente esse índice Como vou excluir isso qualquer maneira, não importa. OK. Agora você criou seu índice na nuvem. Agora você precisa de algumas chaves de API. Eu criei uma chave de API. Você pode dar um nome a ele. Você pode conceder permissões personalizadas ou, se não quiser se complicar por enquanto, basta conceder todas as permissões e, em seguida, você terá que copiá-las e copiá-las em um local seguro Na próxima lição, o que vamos fazer é criar outra classe chamada Gerenciador de índices pinecone que herda do gerenciador de índices e fazer alguns ajustes para salvar os dados no para salvar os dados no 19. Criando um gerenciador de índice para Pinecone: Oi, e bem vindo de volta. Então, primeiro de tudo, vamos nos comprometer a salvar nosso trabalho. Então, entre no Git commit e eu esqueci o que fizemos Então, sim, nós construímos, transmitimos. Foi isso que fizemos. Nós fazemos um push do Git Ok. Então, o que vamos fazer agora é instalar duas dependências, em primeiro lugar, que precisamos para usar o piece Em primeiro lugar, precisamos do cliente da pinha, e também precisaremos vetor de índice Lama que armazena a pinha Então, vamos deixar o PDM fazer o trabalho pesado aqui e instalar essas dependências A outra coisa é que vamos criar um gerenciador de índices pinecone dot Pyle. E vamos criar outra classe chamada gerenciador de índices Pine cone. Mas vamos usar a herança aqui e vamos herdar do gerenciador de índices Então, vamos herdar alguns métodos da classe do gerenciador de índices Então, nesse construtor, precisaremos, novamente, do modelo incorporado, o nome do índice da pinha que acabamos Vamos chamar o construtor pai, e o construtor pai só precisa do modelo incorporado E vamos criar uma instância de pinha. No momento, ele não está sendo exibido porque está sendo instalado, mas vamos importá-lo de outra forma. Então, da pinha, vamos importar essa pinha Bem, ele terminou de ser instalado, então agora ele reconhece Então, vamos precisar da chave da API. E isso virá das variáveis de ambiente. Nós não fizemos isso. Não sei por que está fazendo isso. Nós não fizemos isso. Vamos colocar aqui no exemplo de ponto ENB, cone de pino, chave de API aqui no ENB, vamos colocar a mesma coisa mas com o valor real Então, eu já tenho minha chave de API copiada. Portanto, você também deve copiá-lo e colá-lo aqui. E, obviamente, vou excluí-lo mais tarde. Ok. Então, para carregar essa chave de API, precisamos recarregar o ponto m. Então, vamos importar do ponto Vamos fazer o port load dot M. Vamos chamar isso para obter o ambiente b desse arquivo EMV Ótimo. Agora, o que vamos fazer é dizer self dot Pine Ce Index, pc dot index, e vamos passar o nome do índice. Em seguida, vamos inicializar o armazenamento de vetores como pinecone Vctor store, e precisamos Vamos importar isso da Lama index dot vectorstores dot Pine cone, Import Pine Cone Vector store. Ok. Então, neste armazenamento vetorial, precisamos passar o índice da pinha, que será o índice da pinha com pontos próprios, o que definimos aqui o que Além disso, precisamos do contexto de armazenamento. Eu vou dizer que o contexto de armazenamento de pontos automáticos é igual a, e precisamos importar o contexto de armazenamento do núcleo de pontos de índice do Lama, importar o contexto de amido. Contexto de armazenamento a partir dos padrões, e vamos passar desta vez o armazenamento vetorial Ok. Ótimo. Então, o que fizemos até agora foi chamar o construtor desse gerenciador de índices e atribuir algumas outras variáveis aqui Agora, precisamos escrever o método create index a partir do gerenciador de índices. Lembre-se de que temos esse índice de criação. Temos que reescrever isso porque agora vamos armazenar coisas no Pine C. Então, fazemos o mesmo Inicializamos um MTRray. Chamamos de criar documentos a partir de papéis e definimos as configurações para isso. Também precisamos importar as configurações. Vamos obter as configurações a partir daqui também. Por último, mas não menos importante, vamos inverter os vetores. Desculpe próprio ou vetorial, índice de armazenamento de vetores, que acho que também precisamos importar daqui. Índice da loja de vetores. Que o que vamos fazer aqui é a partir de documentos , como fizemos aqui. Ok. De documentos. Estamos no índice de pontos próprios dessa forma. Documentos com pontos próprios. O contexto de armazenamento será contexto de armazenamento com pontos próprios e o modelo incorporado ou o modelo incorporado será um modelo de incorporação com pontos próprios Ok. Aí está. Para recuperar o índice, vamos apenas retornar ponto de índice do armazenamento vetorial do Vector store e passaremos o vetor store, que é o self dot vector store e o embed, que será o modelo self dot Embed É isso mesmo. Isso é tudo o que precisamos fazer para, hum, alterar os dados e recuperar o índice do Pin C. Então, se formos aqui para o banco de dados, arquivar para pesquisa, ainda não há registros Então, o que vamos fazer é criar um caderno de Júpiter, que será chamado Pine C, e neste caderno UPiter, o que faremos é inverter os vetores De constance, vamos importar o modelo incorporado. Vamos selecionar o kernel primeiro. Também vamos, do gerenciador de pinecone, importar o índice , gerenciador o índice , Vamos criar uma instância desse gerenciador de índice de classes PyCon, passamos o modelo de incorporação e passamos o nome do índice, que no nosso caso é Archive research, Archive research E agora vamos buscar os papéis, buscar papéis , modelos de linguagem Vamos buscar os últimos 101. Buscamos os papéis e agora estamos prontos para criar o índice Vamos criar o índice. Você pode ver, opa, recebemos um erro, e isso é porque diz: acho que isso precisa ser um modelo incorporado, não incorporar esse modelo não incorporar Vamos tentar novamente. Vamos ver se isso resolve o problema. Sim, então, por algum motivo, esse é um modelo incorporado, mas preenchimento automático não funcionou para mim. Portanto, incorpore o modelo, não incorpore. O modelo incorporado alterará os vetores. Você pode ver agora que inserimos esses vetores no namespace padrão E você pode ver aqui o vetor. Esses são basicamente apenas valores. Existem 3.072 desses números aqui, e isso tem alguns metadados, e isso tem alguns metadados conteúdo do nó e tipo de nó, ID do documento, ID do documento, etc Então, basicamente, esses são vetores. Temos dez deles, dez vetores. Essas são incorporações. É isso mesmo. Não há mais mágica nisso. Também podemos recuperar o índice fazendo esse gerenciador de índices recupere Índice e o BLA, recuperamos o índice e também podemos imprimir a lista dos papéis que buscamos Então você pode ver agora que é diferente. Você pode ver o vídeo Panda. Na verdade, vamos fazer algumas mudanças aqui porque isso é difícil de ler. Vamos ver. Vamos até o gerente do índice, e aqui vamos dizer papel por papel em papéis. Basta imprimir o ladrilho de papel. Encha os papéis. Ok. Então é isso. Isso é tudo o que precisamos fazer. isso não vai refletir Infelizmente, isso não vai refletir porque precisamos reiniciar o kernel Então, vamos fazer esse gerenciador de índices. Desculpe. E não vamos buscar. Bem, sim, vamos buscar os papéis, mas vamos criar, não vamos criar o índice novamente Vou apenas listar os papéis e aqui está. Esses são os papéis que temos agora. Agora, o que vamos fazer é nos comprometer a salvar nosso progresso. Adicione o gerenciador de índices Pinec e receba push. É isso para este vídeo. Espero que você goste e vamos continuar na próxima lição. 20. Usando o índice Pinecone no aplicativo Streamlit: Ótimo. Agora temos nossos vetores em Pine cone Temos esses dados, esses títulos no Pine C. Test. Vamos testar se isso está realmente funcionando. Então, em nosso aplicativo streamlt, ao inicializar nosso agente, em vez de usar o gerenciador de índices, vamos usar o gerenciador de índices OK. Então, temos que passar o nome do índice, que será Pesquisa de arquivo. Essa é a única mudança que precisamos fazer para agora obter os dados do Pino C. Vamos testar essa execução simplificada de pontos PI Vamos ver qual é o resultado agora. Então, vou usar desta vez esse modelo de consulta que usamos da última vez, que está aqui. Vamos ver. Então, vamos substituir isso. Estou interessado em multimodelos e modelos multimodelos Então, vamos ver se o agente é capaz de recuperar informações desse índice de pinha e recuperar os papéis relacionados a modelos multimodais Se virmos aqui, onde está isso? Ícone. Esses são os papéis dos modelos de linguagem. Diz que aqui estão alguns artigos recentes relacionados a modelos multimodais. Tradução e reconhecimento de fala sem recursos com LMS e geração de fala longa com modelos de linguagem falada Nós temos um deles. Onde está isso? Este, geração de fala longa com modelos de linguagem falada, e o outro é qual é o outro nome? de fala com zero recursos, tradução e reconhecimento de voz com zero recursos com LM. Consegui recuperar com sucesso os dados do PyCon. Isso não é empolgante É isso mesmo. Agora, criamos um agente que armazena o índice na nuvem. Ele recupera isso e funciona perfeitamente. Espero que você goste desta lição e até a próxima. 21. Implantando o aplicativo para Streamlit Community Cloud: Oi, e bem vindo de volta. Agora, o que vamos fazer é implantar nosso aplicativo no Community Cloud transmitido Como você pode ver, na página inicial, a implantação na Community Cloud é gratuita. É grátis. Portanto, você só precisa se inscrever, criar uma conta, conectar sua conta do GitHub e, em seguida, você poderá encontrar o repositório Ele precisa estar na sua conta do Github e implantar esse aplicativo. É um processo muito, muito fácil. Então, o que vou fazer agora, antes isso, é criar um arquivo TXT de pontos de requisitos Por quê? Porque o Streamlt Community Cloud espera um arquivo de texto de requisitos para instalar todas as dependências Ele não reconhece esse arquivo de log pdmt, então talvez no futuro eles o façam, mas, por enquanto, eles precisam dos requisitos dot TextFile Portanto, o PDM tem esse comando de exportação. Então, se você digitar isso, ele imprimirá isso no terminal, mas queremos que esteja em um arquivo. Então usamos esse símbolo maior que e dizemos: Ok, queremos isso no texto com pontos de requisitos. Portanto, se você abrir esse arquivo, ele terá todas as dependências que estão no log do PDM, mas como um arquivo TXT de pontos de requisitos Vamos confirmar um arquivo TXT de pontos de requisitos. Vamos empurrar. E agora vamos até o Streamed Community Cloud para acessar o painel Depois de se inscrever, cadastre-se, conecte sua conta do GitHub e você pode clicar neste botão que diz criar aplicativo Vou escolher essa opção, que é implantar um aplicativo público do GitHub. Então, vou procurar o pesquisador do Archive, Ripple. Lembre-se, este é o meu Ripple. Eu vou dizer que o caminho principal do arquivo é app dot PY, e esse é um subdomínio escolhido aleatoriamente Seu domínio será esse aplicativo de streaming. Você pode clicar em Implantar e isso implantará seu aplicativo. Mas isso não vai funcionar agora porque temos que colocar mármores ambientais Lembre-se de que precisamos da chave da API OpenAI e da chave da API Pine hone para que isso funcione Se você voltar a compartilhar esse stream dot IO, clicar nas configurações do projeto e acessar Secret, poderá definir os segredos ou as bolhas do ambiente aqui Vou copiar e fasear, mas você tem que colocá-las entre aspas. Caso contrário, vai reclamar. Salve as alterações e agora o aplicativo será implantado com essas bolhas de ambiente Vou clicar aqui Se você clicar neste aplicativo de gerenciamento, verá que ele instalou as dependências dos requisitos Eu instalo tudo isso e as dependências do Python foram instaladas a partir dos requisitos dot TXT, e pronto Agora você pode dizer olá para o bate-papo. Este é um LLM, então ele saberá que não precisa nenhuma base de conhecimento para responder ao olá Agora vamos usar o modelo que tínhamos aqui. Mas só para ter em mente que você não precisa disso, você pode experimentar com outros modelos, mas esse é o que funciona agora, então vou usá-lo. Estou interessado em modelos de vários modelos aqui, vários modelos. Vamos ver se ele consegue processar isso. Espero que os registros apareçam aqui, mas não sei por que não estão sendo exibidos. Deixe-me atualizar isso. Vou copiar isso e atualizar só para ver se há algo nisso Sim. Se isso não funcionar, vou reiniciar o aplicativo para ver se funciona Bem, funcionou dessa vez, mas não vejo os registros aqui. Normalmente, os registros são mostrados aqui, mas não sei por que eles não estão sendo exibidos no momento. De qualquer forma, ele respondeu com um dos artigos da base de conhecimento. Lembre-se de que essa geração de fala não formal com os modelos de linguagem falada estava na base de conhecimento. Então é isso. Agora você pode compartilhar esse link com seus amigos e permitir que eles testem seu aplicativo. Espero que você goste desse vídeo, a próxima lição. 22. Conclusão: Parabéns por terminar este curso. Obrigado por participar dessa jornada para aprender a criar agentes de IA. Você sabe como criar, aprimorar e implantar soluções de IA com aplicativos do mundo real. Continue experimentando, fique curioso e lembre-se de que as possibilidades com a IA são infinitas Quais são as próximas etapas? Aplique seu conhecimento em projetos do mundo real. Essa é a melhor maneira de aprender. Compartilhe suas conquistas e conecte-se com a comunidade, continue aprendendo e se atualizando sobre os avanços da Seu feedback é importante. Reserve um momento para deixar um comentário ou compartilhar suas ideias. Seu feedback ajuda a melhorar este curso e o conteúdo futuro, e não se esqueça de ficar conectado. Entre em contato com perguntas, ideias de projetos ou apenas para compartilhar seu progresso. Juntos, podemos tornar a IA acessível e eu dar tapinhas em C.