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.