fala pessoal beleza seja muito bem-vindo eu me chamo Gabriel Saraiva Ah eu sou engenheiro de machine learning E hoje você vai aprender a fazer um chat GPT personalizado né ah utilizando aí o stream leit para fazer uma interface visual né uma interface gráfica Ah e utilizando o l chain para fazer a parte do processamento do dos modelos ali de llm né a ideia aqui tá é que a gente consiga subir alguns arquivos PDF processar esses arquivos e adicionar esses arquivos na base de conhecimento do modelo da llm para que você consiga fazer perguntas pro bot
ah sobre os arquivos que você fez o upload né isso aí tem diversas aplicações hoje em dia tá eh que estão iniciando né não é algo ainda muito consolidado mas que estão iniciando estão iniciando e que se a gente parar para analisar a gente consegue ver muito valor que pode ser entregue através dessa dessa desse tipo de aplicação né ah hoje tem muita gente utilizando na parte de pesquisa científica né ah quando você tá fazendo uma pesquisa ou quando você é um pesquisador Ah você precisa estar o tempo inteiro se atualizando lendo novos artigos científicos
e uma forma de você agilizar Esse trabalho é você utilizar uma aplicação de chat de de chatbot ah que você possa subir os seus arquivos pdf para você subir esses artigos que você precisa ler e perguntar basicamente conversar com com esses arquivos né fazer perguntas pro chatbox sobre aquele arquivo né Qual que é a principal hipótese Quais que são os resultados Qual que é o método abordado Ah tem muita tem uma outra aplicação que uma outra forma de aplicar essa a aplicação que nós vamos desenvolver a que seria fazendo uma análise financeira né você principalmente
aí no final do ano e você tem vários eh relatórios financeiros de diversas empresas né E aí você pode pegar esses relatórios financeiros jogar numa aplicação aí de de bote que é da mesma que funciona da mesma forma como essa que a gente vai vai est fazendo e que você pode fazer perguntas sobre o status pedir um resumo e sobre o sobre os status financeiros dessas diversas empresas e a partir desses resumos desse mini relatório que o bot ele pode te gerar sobre essas múltiplas empresas que você quer analisar você pode tomar algumas decisões né
sobre investimentos eh sobre empresas que você não quer mais investir sobre empresas que você deve investir mais e esse tipo de coisa então tem muita aplicação para esse tipo de de chatbot que nós vamos estar desenvolvendo hoje aqui e eu só dei dois exemplos mas existem uma infinidade de exemplos eu tenho certeza que vocês Já pensaram em Outras aplicações que vocês podem eh estar utilizando né esse chatbot e basicamente o que a gente vai fazer é esse tá tá resumido nesse print aqui que é um chatbot onde você possa subir alguns arquivos certo arquivos PDF
e você possa conversar com o bot sobre esses arquivos que você subiu aqui no caso eu subi um arquivo sobre que fala sobre a Princesa Isabel né eu peguei um resumo de um livro que fala sobre a Princesa Isabel e aí o que eu tô fazendo eu tô perguntando fazendo perguntas pro bot sobre esse arquivo só que eu subi simplesmente um único arquivo a gente pode subir múltiplos arquivos tá E E fazer perguntas pro bot sobre esses múltiplos arquivos que ele vai estar nos respondendo Beleza então vamos lá pessoal a gente vai começar aqui antes
de entrar obviamente tem toda a parte de processamento aqui do modelo e tem toda a parte aqui de como que a gente vai pegar esse PDF e transformar ele em algo que o modelo vai adicionar na base de conhecimento dele mas antes da gente fazer isso a gente precisa criar a interface primeiro né então esse vai ser o nosso primeiro passo vai ser criar essa interface básica aqui eh do nosso projeto na verdade a gente tem até que inicializar o projeto né Eu criei esse repositório aqui que chama chat PDF data wbr que a gente
também vai estar disponibilizando para vocês tá E aí eu vou ele não tem nada tá aqui ainda vocês podem ver que ele tá vazio e aí eu vou iniciar aqui um projeto utilizando poit né vou usar aqui então o poet beleza Ah eu vou colocar aqui Ah tá bom esse package name mesmo versão ã chat PDF tutorial Beleza o autor Sou eu mesmo não vou colocar nenhuma licença eh eu vou colocar eh vou colocar o Python que eu estou utilizando aqui que é o Python 3.10.9 eu vou adicionar algumas dependências aqui já de de antemão
eu vou adicionar o streamit que é o que a gente vai est utilizando o stream leit beleza ã adicionar a versão mais recente deixa eu ver que mais a gente vai est precisando também do Python eh dnv Python e e acredito Ah E aí o l também né L já vou deixar instalado aqui Apesar de que a gente não vai usar nesses primeiros minutos ã beleza de de development não show de bola então criamos aqui o nosso projeto op vou dar um instal para instalar as nossas dependências aqui vai demorar um pouquinho porque o l
ele é um pouquinho pesado acredito eu Beleza então terminou de instalar as nossas dependências Ah vou abrir aqui o nosso vs code deixa aí trazer para cá Beleza então a primeira coisa que a gente tem que fazer é criar aqui o nosso ah nosso app. P né E a gente vai dar aqui um port stream Cadê stream S ST Ah deixa eu já colocar aqui o nosso ah nosso ambiente virtual deixa eu conferir se tá tudo correto pro nosso ambiente virtual eh po Run Python op Python app.py beleza executou tá tudo certo tá tudo Tá
tudo perfeito com o nosso ambiente virtual até o momento exato Ah beleza então vamos lá eu instalei logo de cara também o dov porque a gente vai precisar também de um arquivo dov mas mais para frente eu explico como que a gente vai est utilizando Beleza então vamos lá primeira coisa a gente vai definir aqui né o e ig bem Ah E aí eu vou definir aqui uma função que chama M certo e eu vou chamar aqui a minha função Então a primeira coisa que a gente tem que fazer é criar a nossa página né
então vou chamar aqui set page config e vou colocar aqui page type como sendo H Não sei pergunte Pergunte para seus Na verdade eu vou colocar F conv conversa com seus arquivos e o page icon colocar aqui acho que é books ou book acho que é books beleza aí só pra gente executar Opa apertei no lugar errado agora só pra gente executar aqui o stream leit né Run appp a gente vai abrir E aí tá bem aqui o converse eu botei converse para seus arquivos né mas Converse com seus arquivos e o nosso ícone aqui
beleza feito isso né a gente tem agora que se a gente voltar aqui no nosso exemplo acredito que a primeira coisa que a gente tem que tem a fazer é criar essa essa Side bar aqui né então o que eu vou fazer vai ser Side bar Ah eu vou colocar aqui primeiro um subheader deixa eu ver seus arquivos seus arquivos eu vou mudar esse aqui vou colocar ch PDF dat Beleza então vou colocar aqui um subheader né que tá aqui seus arquivos e aí depois disso eu adiciono aqui o uploader né uploader de de arquivos
ah file uploader beleza file uploader E aí a gente tem dois e parâmetros aqui né O Primeiro vai ser o Label dele que é carregue os teus aros em formato PDF e deixa eu eu vou vou salvar isso aquii e vou executar tá só pra gente dar uma olhadinha aqui em como que tá ficando beleza aí se eu clicar aqui em browse files ele eh vai abrir aqui a minha pasta aqui de dados que eu tenho e aqui tem o pdf Ah que eu solicitei que eu que eu baixei que eu tava utilizando de exemplo
né eu posso carregar aqui esse arquivo eh de de PDF porém Se eu tentar subir mais de um arquivo por exemplo né Se eu tentar dar um control e apertar em outra arquivo aqui ele não vai me deixar subir um outro arquivo né eu posso subir simplesmente um arquivo por vez e como é que a gente faz para subir múltiplos arquivos de uma vez Então a gente vai voltar aqui no código e a gente vai usar um paret que chama accept multiple files e a gente vai passar ele para true simples assim Beleza deixa eu
diminuir isso da aqui simples assim a gente vai passar ele para true e agora o nosso nosso file Loader ele aceita múltiplas múltiplos arquivos né Deixa eu dar um rerun aqui apertar em always rerun porque ele vai sempre carregar Eh toda vez que a gente fizer uma modificação ele vai atualizar né a o a interface E aí agora eu consigo aqui selecionar múltiplos arquivos tá vendo consigo aqui e ele mostra aqui né quando eu seleciono vários arquivos eh ele me mostra aqui mais de uma página já de forma automática não preciso fazer nada o o
componente já é criado dessa forma só que ele tem um limitador aqui né de 200 m a acho meio difícil você ter um PDF A que ultrapasse eh 200 MB mas ah aí tem a gente vai estar trabalhando dentro desse limite por enquanto beleza feito isso feito isso deixa eu voltar aqui feito isso a gente agora já tem o nosso aqui o nosso aqui nossa Side de bar que a gente consegue carregar múltiplos arquivos e tá faltando só esse botão de processar aqui né então a gente vai vir aqui e vai fazer o seguinte ifst
processar E aí a gente vai fazer alguma coisa aqui depois por que que eu coloquei esse if aqui né Deixa eu só vou carregar aqui cadê Ok beleza nosso botão processar está aqui certo só que o que que acontece toda vez que a gente clica em algum componente do stream Lead ele dá um Reload na página né não é como se fosse um F5 é um Reload do próprio stre ele meio que executa o seu código de cabo a rabo novamente né então toda vez que eu clico no botão por exemplo ele vai executar toda
essa função defm aqui eh novamente e aí pra gente saber identificar se na próxima execução esse botão aqui foi clicado foi acionado né a gente precisa só colocar um if SD Button aqui que aí se esse botão ele for acionado né ele for eh clicado ele vai fazer el vai tomar alguma ação Beleza então Deixa eu voltar para cá a gente e já tem aqui o nosso botão de carregar os nossos arquivos e a gente já tem aqui o nosso botãozinho de processar beleza só que o que que esse botão de processar vai fazer aí
que entra a questão né a gente eu comentei lá no início que a gente tem dois processamentos aqui né a gente tem um processamento que é feito nessa parte de carregamento dos arquivos e a gente tem um outro processamento que é feito na parte de da pergunta em si né o arquivo ele vai ser processado de um jeito e a pergunta ele vai ser processado eh a pergunta vai ser processada ah de um outro jeito Então como que a gente como que funciona né Essa questão dos ah dos llms do dos large language models né
como que a gente consegue adicionar esse arquivo aqui dentro de dentro dessa base de conhecimento dos nossos dos nossos modelos e aí a gente vai voltar pro slide aqui pra gente entender como é que funciona como é que a gente vai trabalhar eh dentro desse como que a gente vai fazer para adicionar esses pdfs dentro da base de conhecimento do nosso dos nossos modelos então eu fiz um diagrama aqui bem simplesinho bem rapidinho que para simplesmente para ilustrar o o que que acontece dentro desse dentro dessa nossa aplicação né aqui primeiro a gente vai ter
uma série de pdfs né a gente vai ter vários arquivos PDF esses arquivos vão estar Cruz basicamente igual o pdf que eu subi ali ele não tem nada demais é simplesmente um um PDF normal e aí o que que a gente precisa fazer o primeiro processamento que a gente precisa fazer é pegar esses pdfs e quebrar eles em pedaços que a gente chama de chunks né em inglês você h u n KS chunks a gente pega esses pdfs a gente junta o texto de todos esses pdfs em um canto só e a gente quebra em
pequenos pedaços certo pode ser aí em em parágrafos ou então em uma quantidade determinada de caracteres alguma coisa do gênero mas a gente faz essa parte esse particionamento em ah pequenos pedaços de texto e E aí depois a gente vai pegar esses esses pequenos pedaços de texto e vai transformar em em berings Tá o que que são em berens basicamente de forma resumida os ens eles são representações vetoriais dos do nosso texto tá o que que isso quer dizer basicamente a gente vai transformar o nosso texto nosso Chun ali de texto né de aí Digamos
que de sem caracteres em um vetor certo em um vetor em uma série de números basicamente né porque aí o modelo de machine learning ele consegue primeiro fazer predições né ele consegue fazer predições de de qual qual é a resposta para uma determinada pergunta e além disso a gente consegue fazer busca de similaridade dentro do nosso do nosso contexto certo Digamos que eu faça ali uma pergunta sobre eu tenho vários arquivos PDF sobre a história do Brasil certo e aí eu faço uma pergunta sobre o reinado de Dom Pedro por exemplo Dom Pedro I o
que que vai acontecer a gente vai pegar a pergunta vai transformar também em vetor e eu já tô dando spoiler do processamento da pergunta mas a gente vai transformar não Ten o vetor e a gente vai fazer uma busca por similaridade com em todos os arquivos que a gente já tem que nós transformando que nós transformamos em vetor certo eh e aí essa questão de de Vetor é aquilo que a gente aprende aí no ensino médio na na faculdade de que você tem um vetor aqui e um vetor aqui e aí você consegue calcular a
distância entre esses vetores funciona basicamente da mesma forma né a gente vai transformar tanto a os arqu arquivos PDF quanto a pergunta em vetores e a a gente consegue calcular na verdade a gente consegue pegar os arquivos PDF os textos basicamente que estão mais pertos daquela pergunta certo então por exemplo se eu faço se eu tenho uma base de de arquivos da da história do Brasil e eu faço uma pergunta sobre eh O reinado de Dom Pedro I a minha pergunta ela vai tá mais perto dos arquivos sobre monarquia do que ela vai est do
que ela vai estar na na distância né Eh dos arquivos de da república por exemplo ou dos arquivos falando sobre ah Fernando colo por exemplo né então baseado nessa busca por similaridade eu consigo pegar um amontoado de conhecimento ali e e e utilizar esse amontoado de conhecimento similar a a pergunta que eu fiz para o meu o meu modelo de de de nlp né o meu llm fazer uma predição em cima do conhecimento similar que eu estou passando certo beleza essa é uma ideia geral é não é tão simples de entender é um pouquinho complexo
tá eh eu expliquei aqui de forma bem superficial mesmo só pra gente ter uma noção de como que isso funciona mas como é que essa busca por similaridade funciona a gente vai ter que implementar isso na mão Definitivamente não tá eh após a gente utilizar após a gente transformar os nossos textos em naring a gente salva esses nings esses vetores em um Vector Store né em um digamos assim que é um banco de dados vetorial que vai armazenar esses meus vetores E que esse banco de dados já tem algumas funçõe inhas implementadas para eu conseguir
fazer essa busca por similaridade ali fazer um ranqueamento por similaridade dado uma nova pergunta dado um novo documento na realidade né Eh isso é bem legal a gente vai ver aqui na prática como que funciona e a esse banco de dados né ele se chama Vector Store na prática né E aí a gente tem algumas Vector Stores diferentes e o que a gente vai estar utilizando hoje de Vector Store é a f Vector Store que é do ah se eu não me engano do Facebook né Eh chama F faz f i ss e a gente
vai tá utilizando esse essa Vector Store porque a gente consegue executar ela localmente tá a diferença de um banco de dados para uma Vector Store também é que a Vector Store ela roda em memória tá ela não é ela não é é perene né ah ela é volátil ela você vai salvar ali os seus ens e se a aplicação reiniciar você vai ter perdido os seus ens que foram salvos existe a possibilidade no f de você salvar em arquivo Mas a gente não vai estar vendo nesse vídeo aqui aí se vocês quiserem que a gente
desenvolva mais sobre essa parte de Vector Store de como que funciona de como que a gente pode ah fazer até uma API um backend algo do gênero eh para fazer um Deploy talvez de uma aplicação eh de chatbot a gente pode estar fazendo em outros vídeos deixe seu comentário aí se você quer que a gente trabalhe mais esse assunto aí eh de Vector Store em beres e tudo mais beleza mas essa é a visão geral não é algo como eu falei não é algo tão simples tá eh mas eu espero que vocês tenham entendido o
processo que vai rolar aqui basicamente tá Resumindo a gente vai pegar os os arquivos pdfs juntar todos esses arquivos em uma string gigantesca quebrar esses essa string gigantesca em string menores transformar essas string menores em vetores salvar esses vetores dentro do Nossa da nossa Vector Store da F beleza Esse é o processamento dos arquivos show de bola e a gente vai começar esse processamento exatamente agora deixa eu voltar aqui pro nosso pro nosso vs Beleza então a primeira coisa que a gente vai ter que fazer na realidade é pegar os arquivos PDF né que a
gente já tem ali e amontoar tudo em um lugar só certo e como é que a gente vai fazer isso bom a gente já tem a nossa variável aqui PDF doc certo ah deixa eu dar um print aqui nessa variável PDF doc só pra gente ver o valor dela só para mostrar para vocês o valor dela Ah ela tá dentro da onde Dentro do sideb então acredito quando eu fazer o upload de um arquivo eu já dei Run já deixa eu fazer upload aqui meu arquivo ó aí ele tem aqui uploaded file eh tem o
nome do meu PDF aqui e tudo mais beleza então ele vai me dar uma lista tá vendo eh ele vai me dar uma lista de todos os pdfs E aí eu consigo e iterar por todos os pdfs que estão todos os arquivos é todos os pdfs que estão ali eh no Nossa aplicação e agrupar esses pdfs juntos beleza só que a gente não vai est fazendo isso na mão eh o Python né tem essa biblioteca que chama ah P pdf2 eu acho que é tudo maiúsculo é a tudo minúsculo mas o poetri entendeu aqui então
nós temos essa biblioteca aqui que chama P pdf2 que a gente vai estar utilizando para ler os nossos pdfs Deixa eu só copiar aqui a função direitinho Opa abr o negócio errado voltei aqui só copiar aqui o Import Beleza o p PDF 2 ele tem esse pdf reader aqui no qual que a gente no qual a gente consegue eh facilmente ler nossos pdfs Beleza então o que a gente vai fazer primeiro é criar uma função aqui a realidade vou criar que não eu vou criar uma outra pasta aqui que chama e dentro dessa pasta vou
criar aqui files e aqui eu vou criar um Def process files beleza e esse Def esse essa função ela vai receber os nossos arquivos nossos files beleza e o que que a gente o que que vai acontecer né O que que eu falei lá na hora de do slide ali a gente vai pegar o pdf e tem que transformar ele em uma string gigantesco é exatamente isso que a gente vai fazer então a gente cria aqui uma um text né que vai ser o nosso e nossa estring gigantesca e E aí a gente vai terar
aqui n for e file em files ah a gente vai agora utilizar o nosso pdf reader opa Na realidade eu ia fazer lá e acabei fazendo aqui então deixa eu importar para cá beleza temos aqui o nosso P PDF 2 o pdf reader e a gente vai usar agora aqui o pdf reader Beleza a gente só tem tem que passar o arquivo mesmo e que ele já vai e entender né ele já vai ele tem esse suporte aí pro formato que a gente vai estar passando beleza ah feito isso a gente vai iterar agora né
pelas páginas do nosso PDF A gente vai interar por cada arquivo né que que está lá que foi feito o upload depois de E aí dentro de cada iteração de de um arquivo a gente vai iterar as páginas desse arquivo pra gente pegar todo aquele texto todo o texto né de cada página Beleza então for page em PDF A gente vai fazer o seguinte text mais igual Ah E aí nesse objeto page aqui que está em PDF né Na realidade é PDF page que está aqui para cada objeto page que está em PDF P pages
eh a gente tem um atributo né que se chama uma é uma uma propriedade que se chama eh extract text na realidade uma função né que se chama extract test text beleza isso daqui vai extrair todo o texto de forma bem crua eh de cada página do PDF e transformar em uma string beleza e aí a gente só vai pegar essa string que é a tem o texto da página e adicionar pro pra nossa string aqui gigantesca show feito isso a gente já tem aí o nosso o nosso arquivo já nos nossos arquivos né já
processados então eu só tenho que retornar aqui T show de bola e aí na realidade vou mudar isso aqui que esse file me incomodou eu vou colocar text text PP beleza Ah E aí eu só tenho que vir aqui agora os Import ah text ah certo e aqui é process file beleza Ah tá e agora a gente só tem que vir aqui beleza Ah qual que vai ser o nome disso aqui vai ser All files Text e aí eu chamo aqui o text process files de PDF do Beleza eu vou só dar um print nisso
daqui só pra gente ver como é que tá funcionando então vamos dar um print aqui né só pra gente ver se tá tudo sendo executado corretinho Deixa eu voltar aqui e executar um po runam Run app.py show de bola vai abrir aqui e aí deixa eu procurar aqui nossos arquivos eu vou est usando agora esse esse artigo científico aqui sobre qualidade de imagem tá eh ele é um pouco mais extenso Ele é bem maior na realidade ele descreve melhor o conteúdo dele então ele vai est ele vai est agregando mais valor aqui pra nossa demonstração
Beleza então vou o utilizando ele aqui vou clicar em processar E aí se a gente voltar aqui pro nosso terminal show de bola vai tá aqui esse daqui é a parte das referências né do artigo científico Deixa eu subir aqui e aqui ele fala um pouco né do ele mostra aqui um pouco do conteúdo do artigo em si Beleza então deixa eu dar um Clear aqui Opa and tem que fechar isso aqui né e dar um Clear show de bola então voltando para cá a gente já tem os nosso o nosso arquivo processado na verdade
a gente já tem o texto do nosso arquivo extraído certo é isso que a gente já tem que que a gente precisa fazer agora eh a gente precisa voltar aqui no text PP e a gente precisa eh transformar esse grande essa grande string em textinhos menores né dessa quebrar né em pequenos textos né eí Deixa eu só dar uma ajeitada aqui beleza Ah E aí o que que eu vou fazer vou criar uma nova função aqui que vai ser uma função de criar esse esses chunks de texto né Então deixa eu chamar aqui chunks e
aí eu vou receber aquele texto gigantesco né que vou chamar aqui de text beleza e aí o que que eu tenho que fazer aqui aqui a gente vai começar a utilizar o nosso o nosso Lang chain tá eh o lchin ele tem uma um módulo de processamento de texto né e uma das funções desse módulo de processamento de texto é esse text Splitter aqui né que é para você simplesmente particionar um texto maior em chunks de texto e ele é bem simples de usar também a gente vai est vendo aqui como é que a gente
usa ele basicamente a gente vai ter que criar um objeto né um text Splitter eh que eu vou chamar aqui Character texto Splitter ah a gente precisa definir o que que vai separar os nossos text chunks text chunks que vai ser vou utilizar o o contra barra n né que é o o nosso famoso enter né o enter ali que que quebra linha quebra de linha Ah vou est utilizando também o o Chunk size Chun size esse Chunk size é a quantidade de caracteres que o nosso Chunk terá né ã E aí a gente pode
dependendo isso aí vai depender muito do do processamento né do do nosso texto eu vou e do tamanho também do dos nossos textos ali da da quantidade de informação importante dependendo do texto a informação ela vai tá um pouquinho mais sep ada né em pedaços de conteúdos menores e em outros textos como um caso de um artigo científico ele vai est em eh um um um texto que faça sentido ele vai tá ali dentro de um parágrafo maior né então como a gente vai estar trabalhando com parágrafos grandes eu vou colocar aí umas 1500 caracteres
acho que é um pouquinho demais mas eu vou colocar 15.00 só para garantir ah a gente tem um outro parâmetro aqui que é o Chunk overlap o que que é esse Chunk overlap é o seguinte normalmente o seu Chunk a gente não tem ali como definir exatamente onde ele vai ser quebrado né a gente coloca aí 1500 caracteres 1500 e aí se a gente pega aí do início de um parágrafo 1500 caracteres à frente a gente pode acabar terminando esse Chunk no meio de uma frase ou no meio de uma palavra ou no meio ali
eh de algo que ia fazer sentido mas que como a gente cortou ele não tá mais fazendo sentido então o que que acontece é que esse overlap né esse overlap é uma interseção é um na verdade é quando a gente tá sobre uma sobreposição né o overlap então a gente terminou um Chunk aqui o próximo Chunk ele vai começar comendo uma a parte do Chunk anterior e vai andar 1000 caracteres pra frente certo esse Chunk overlap é a quantidade de caracteres que o próximo Chunk vai comer do Chunk anterior para que aí a frase ela
simplesmente não fique cortada né ela faça sentido ali o texto faça sentido eh não fique eh simplesmente cortado sem fazer sentido e aí por isso que a gente usa esse Chunk overlap para caso normalmente né acontece estatisticamente falando o texto ele é cortado no meio aí o próximo Chunk ele vai ter esse overlap para pegar esse texto que foi cortado no meio Beleza então eu vou colocar aqui 300 caracteres de overlap né Eh e depois disso ele pede uma função de tamanho né Eh leng function uma função de tamanho simplesmente para ver o tamanho ali
do eh do do Chunk e eu vou colocar simplesmente aém a a própria função de de tamanho do do Python mesmo n tem não tem segredo aqui e aí pra gente pegar os nossos chunks é só a gente fazer o text spit split Text e passar o text aqui que é o nosso texto aqui em cima né e a gente só retorna esse esses beleza show de bola então agora a gente vai ter que voltar aqui Ah deixa eu tirar esse print daqui né e tirar esse aqui também a gente já vai ter o nosso
All files text aqui e aí eu vou pegar agora os chunks que eles vão ser ão lá no nosso arquivo de de processamento de texto e Create Text chunks e o Opa All files Tex beleza e agora a gente já tem o nosso os nossos chunks né a gente já então voltando lá pra ideia Deixa eu ver se eu consigo abrir aqui aí ah voltando aqui pra ideia então a gente já fez o upload dos nossos arquivos PDF no caso a gente tá usando só um como exemplo mas você pode aí reproduzir fazer como múltiplos
arquivos Ah nós quebramos esse esses arquivos em em múltiplos chunks de texto e o próximo passo é a gente eh transformar esses múltiplos chunks de texto em berings né vetorizar esse texto show de bola Então vamos lá eh a gente vai voltar aqui pro nosso vs code certo e aqui a gente entra em uma nova biblioteca Opa deixa eu fechar isso aqui a gente entra em uma nova biblioteca né que é a biblioteca que eu comentei lá do o Framework do F né que é o a Vector Store que nós vamos estar utilizando para armazenar
os nossos zbing beleza e também aqui a gente vai est entrando em um ponto que é a conexão com o open ai tá então vamos começar pela conexão com com Open ai né o primeiro ponto eh o lchin ele tem aqui ó acesso a alguns embs deixa eu pegar aqui ah na realidade não vai estar fazendo aqui eu vou fazer um outro aqui eh um outro ús aqui que eu vou colocar ã invar invariance PP Beleza deixa eu copiar isso daqui para ficar separadinho né para não ficar uma bagunça o nosso nosso arquivo show de
bola e aí a gente precisa também importar Nossa Vector Store o nosso F que ele tá no L chain também a gente vai tá utilizando daqui ó então a gente precisa também não só importar né mas também instalar o f localmente aqui na nossa na nossa máquina no nosso ambiente virtual né Então a primeira coisa que a gente vai fazer aqui é vir aqui no nosso terminal e digitar aqui po CPU beleza ele vai instalar aqui show de bola instalou tudo certo a gente vai dar um Clear vamos voltar aqui no nosso best code e
também a gente vai est utilizando né como eu falei bings do Open ai para a gente acessar os un bings do do Open a nós precisamos de uma apiq de uma chave de api do Open A tá essa esse acesso ao Open ai ele tem um uma uma parte que é gratuita certo ele tem ali e você pode utilizar de forma gratuita mas ele tem um limite dessa gratuidade né e depois desse limite ele começa a ser pago então muito cuidado quando você for testar isso aquii eh para você ir sem querer eh acabar sendo
cobrado aí pelo pelo open air mas se você aí já já tem o costume de investir um um certo dinheiro nessa nessa questão você pode aí est utilizando e a sua conta paga também para estar utilizando os un bings e os modelos llm do Open Beleza então como é que a gente vai fazer para conseguir essa IPI aqui deixa eu voltar aqui no slide você precisa acessar aqui esse site que é o plataforma. open.com barpi Keys e lá você pode estar criando aqui ó Create New Secret ke eh você pode criar logar na sua conta
né criar sua própria api ke que a partir dela você vai estar conseguindo acessar os serviços do openi dentro do nosso da nossa aplicação aqui do chatbot Beleza então como é que a gente faz para inserir aqui na aplicação essa essa ke né a gente vai usar o Cadê o dot env né a gente vai utilizar aqui o dot env Vou só pegar o nome exatamente aqui da da variável de ambiente para quem não sabe esse dotch ele é utilizado né Para nós criarmos variáveis de ambiente que vão ser criadas simplesmente Quando a nossa aplicação
estiver em execução né E a gente vai conseguir acessar as variáveis criadas nesse nesse arquivo dentro da nossa aplicação utilizando aquela biblioteca que a gente instalou lá no início que é o Python beleza aí você vai adicionar aqui Esso aqui eu vou colar a minha aqui aqui Opa só um instante S um instante Beleza deixa eu fechar então colei a minha Kia ali e agora a gente só tem que ficar atento em um ponto aqui que é a forma de execução do poid tá a gente tá executando Run op runam Run appp beleza só que
para que o po faça o load das variáveis das variáveis que a gente inseriu lá no lá no ponto env a gente no arquivo p a gente precisa executar com essa Flag aqui ó menos vvv beleza e aí quando a gente executar ele vai Opa beleza é quando a gente executar ele vai colocar aqui ó load environment variables from e tal tal tal aqui beleza e isso aqui quer dizer e da do env aqui dentro do nosso arquivo pen então isso aqui quer dizer que as nossas variáveis estão sendo carregadas e a gente já consegue
acessá-las dentro do nosso eh dentro do nosso vest code dentro do nosso código show de bola então vamos voltar aqui recapitular os nossos passos a gente então fez o processamento dos arquivos dividiu em chunks e agora a gente vai estar transformando em BS beleza como que a gente vai fazer isso a gente vai utilizar e a Vector Store né que eu comentei e a gente vai criar a Vector Store a partir desses nings tá a a Vector Store ela vai ser inicializada com os nings da nossa aplicação eh com os ell doos nossos arquivos que
nós fizemos o load show de bola Então vamos lá a gente vai fazer aqui ah deixa eu Create Vector Vector beleza e aí a gente vai passar aqui na verdade não text mais os chunks da nossa aplicação show e primeira coisa que a gente vai fazer a gente vai carregar os in berings do openings é simplesmente chamar ele aqui e aqui ele já já vai est pegando né Na hora de ah criar esse objeto de de in bearings aqui ele já vai est pegando lá os in bearings Ah já vai tá pegando na verdade a
chave de a api aqui que já tá como variável de ambiente beleza e a partir disso a gente consegue criar a nossa Vector Store né utilizando F Ah e aí a gente ele o f ele tem uma função aqui que é o from texts texts exatamente carrega aqui os nossos texts ah Tex ah Tex Tex chunks né já tava chunks beleza e os and bearings a gente também precisa passar que é igual aos and bearings aqui beleza feito isso a gente só tem agora que retornar a nossa Vector Store return Vector STR O que que
tá rolando aqui né O que que tá rolando aqui nós estamos carregando os nings do do Open ai certo eh e a gente tá criando uma Vector Store com os nossos textos ou seja nesse nessa linha de código aqui ele tá transformando os nossos chunks de textos também em in berings e criando uma Vector Store eh com esses em Que Nós criamos a partir dos chunks certo e a partir desse momento a gente já consegue aí acessar ranar ali ver aquela questão da similaridade ETC dentro da nossa Vector ST Beleza então agora a gente só
tem que voltar aqui e a partir dos chunks a gente precisa carregar a nossa Vector Store e a Opa l deixa eu dar um rename aqui process Ok beleza só para não ficar com com mesmo nome tudo tipo várias várias variáveis e o arquivo com mesmo nome e aí a gente vai chamar aqui processing Create Vector e os chunks os nossos chunks aqui de cima beleza vamos executar então para ver se tá correto né tá tudo rodando exatamente como deveria Então vamos carregar aqui o nosso arquivo nosso artigo né de qualidade para executar aqui e
deu erro Opa coloquei o nome errado aqui cadê Chun chck beleza acredito que já vai carregar novamente processar Ah sim beleza A gente esqueceu de instalar o open a também é importante para o nosso caso aqui né pra gente utilizar os os and bearings do Open então pored Open ai vai instalar tudo aqui show de bola Ah eu parei de executar né Então deixa eu executar aqui de novo beleza carregou de novo image Quality processar ah FR Tex Bering Ué cadê fo é aqui mesmo opa Bering Bering tá escrito s tá escrito certo vamos lá
processar novamente beleza mais uma mais uma dependência que a gente tem que instalar ACK token a ACK token show de bola como a gente pode ver são inúmeras dependências novamente executando op browse files image Quality processar talvez ainda tenha mais alguma dependência aí Que esteja faltando tá Running aqui ainda e e foi terminou de executar Então a nossa Vector Store foi criada e está sendo executada corretamente aqui por algum motivo faz ele não tá carregando como deveria estar carregando aqui e mas talvez se eu fechar e abrir de novo talvez V code deixa eu testar
hã É ele não tá querendo carregar o f aqui não tá reconhecendo o f eh mas enfim tá funcionando ele tá criando o Vector Store corretamente deixa eu dar um print aqui para mostrar o objeto Vector Store só só pra gente ter certeza de tudo tá executando corretamente executar novamente Beleza quando ao executar isso né ele tá ele também nos mostra que o o nosso olha aqui language community Vector Stores f f Object Beleza então show tá sendo criada a nossa Vector Store corretamente quando essa Vector Store ela tá sendo criada corretamente quer dizer também
que a nossa api tá válida e que a gente tá conseguindo acessar a api do P Beleza então vamos continuar aqui que ainda tem bastante coisa a ser feita então a gente já criou a nossa Vector Store o nosso ining já tá lá beleza ah o que que a gente precisa fazer agora o ponto agora é nós criarmos o nós utilizarmos essa Vector Store Ah e criarmos a nossa nossa Lang chain propriamente né nossa nossa corrente aí de de conversação com o bot com o modelo e como é que a gente vai fazer isso o
deixa eu ver aqui eu vou mudar o nome desse arquivo aqui novamente para adicionar Algo que faça sentido eu vou colocar chatbot Acho que fica melhor Beleza deixa eu ver se mudou tudo aqui tá colocar chatbot porque a gente já coloca aqui e a a Nossa corrente de conversação o que que é essa corrente de conversação né deixa só eu dar um Create ah conversation ch beleza e aí essa isso daqui vai receber a nossa Vector ST o que que isso aqui vai fazer ele vai carregar o nosso modelo de de a de l a
nossa llm né o nosso chat GPT basicamente e vai também utilizar o nossa a nossa Vector Store para fazer o a comparação ali né para fazer o ranqueamento das dos chunks de textos né dos dos dos berings eh de texto que são mais próximos daquilo que a nossa pergunta vai estar procurando beleza Eh e também a gente vai estar definindo aqui a memória da nossa conversação certo porque a nossa toda a nossa conversa ela precisa estar armazenado pro nosso chatbot ele ter memória daquilo que já foi comentado né então o que que a gente vai
fazer bom primeiro a gente vai carregar o nosso modelo né a gente opa vou precisar importar aqui mais um mais um mais uma biblioteca mas na verdade mais um módulo que é também do Lang chain que é o lch chat models que contém aí o chat Open Ai que é o basicamente o o modelo aí que a gente vai est utilizando aqui dentro inclusive né E você vai ter alguns parâmetros aqui ó tá vendo aqui que ele utiliza o open api mas dentro desses parâmetros aqui você consegue definir os modelos que você vai tá utilizando
tá eh lá no openi você vai ter diversos modelos e você pode estar modificando Ah tem aqui também os parâmetros do modelo aqui ó Model o padrão é o GPT GPT 3.5 Ah mas aí você pode modificar também pro 4.5 enfim você tem outros lá que que você pode estar utilizando também show de bola Então feito isso a gente agora vai criar a nossa Pera aí que eu vou precisar importar mais uma outra coisa na verdade mais duas outras coisas que é o módulo de memória paraa gente ter essa memória que eu comentei das perguntas
que foram feitas e e tudo mais e a gente precisa ter essa função aqui de corrente né de esse módulo de corrente que permite a gente não só armazenar a memória mas fazer um retrieval né a gente ah fazer uma extração dessa corrente n a gente buscar dentro da nossa corrente e de conversa as informações beleza feito isso a gente vai agora eh criar aqui a Memory ah Memory utilizando o conversational broker Memory Ah que a gente vai criar from eh isso não na verdade tava confundindo aqui a a gente vai utilizar uma Memory Key
que vai ser basicamente a forma como a gente funciona mais ou menos como um dicionário digamos assim né Essa Memory vai ser a forma como a gente vai acessar a o histórico do nosso do nosso chat né do da conversa ali então vou colocar aqui chat history history Ok ah e vou colocar return mes iG para ele retornar né as os responses e beleza além disso a gente precisa construir também o convers conversation ch que é esse conversation retrieval chain aqui que ele vai ser criado llm e aí o que que ele precisa ele precisa
do llm né do nosso modelo de Qual modelo que vai ser utilizado que é o modelo que nós carregamos aqui atrás ele precisa de um R retriever é ele funciona como esse buscador digamos assim né ah at uma palavra melhor para retriever mas eu não me lembro agora mas é esse cara que vai eh buscar ali dentro da dentro da nossa corrente de conversa a as perguntas e as informações e vai fazer esse ranqueamento do que que é similar ao que está chegando de novo de novo texto né que seria a pergunta que o usuário
tá fazendo nova beleza E aí pra gente fazer esse retriever vai ser a nossa Vector a nossa própria Vector Store que a gente vai utilizar ela nessa função de as a retriever retriever beleza ele tem essa função zinha aqui que a nossa própria Vector Store do F funciona como esse buscador que vai retornar aquilo que é de mais próximo beleza feito isso agora a gente só precisa passar a Memory que é a nossa própria Memory que que esse buffer de memória ah que ele armazena né esse histórico novamente novamente tudo isso em memória nada eh
tudo isso é volátil na realidade bom nada disso daqui essa essa questão de buffer de memória essa questão de como funciona esse retrieval chain como que funciona Vector Store nada disso é tão simples de explicar tá e a a gente já tá um pouquinho adiantado no tempo então se você quiser é que a gente faça um outro vídeo explicando melhor todos esses conceitos ah de Vector Story de retriever ah como que funciona por trás dos panos toda essa essa maracutaia aqui de de chatbot de llm e a gente pode fazer um outro vídeo um pouquinho
mais técnico aprofundando mais ainda no funcionamento eh desse chatbot de como é que funciona o Len beleza mas vamos continuar aqui a gente vai só retornar aqui o nosso conversation chain então que novamente é a nossa corrente de conversa nossa corrente de chat ali de perguntas e respostas beleza bom feito tudo isso a gente tem aqui a nossa convers conversation beleza Opa então aqui o chatbot ah Cadê Create conversation chain e passa a nossa Vector Store show de bola então o que que acontece agora a gente tem o nosso a nossa conversation aqui beleza e
o que que eu vou fazer eu vou fazer o seguinte eh eu vou adicionar agora o o input do nosso usuário tá como que a gente vai fazer isso a gente pode vir aqui fazer o ST header e colocar aqui Converse com seus arquivos e user question ser igual a input de texto né Contex input e colocar aqui faça uma pergunta para beleza isso daqui é o que eu t tô fazendo basicamente é criando adicionando mais lá na na interface gráfica né É só um headz inho e um input de texto para ser a pergunta
que o usuário virá realizar e aí o que acontece a gente vai fazer o seguinte se eh user question for verdade né ou seja se a gente tiver uma uma pergunta aqui do nosso usuário eu tô pendo de parênteses Então vou adicionar um parêntese aqui a gente vai eh responder esse usuário como é que a gente responde esse usuário a gente vai chamar o conversation pra nossa user question beleza a user question né e deixa eu comentar isso daqui só pra gente mostrar funcionando eh no nosso aqui na nossa interface run ah aí ventado errado
ah tá eu comentei o que tava fazendo beleza ó então Converse com seus arquivos e aí faça uma pergunta para mim e a gente vai fazer uma pergunta aqui eh baseada no arquivo né Quais quais são os fatores eh de análise de qualidade de imagem ele não vai responder porque a gente não tá fazendo nada aí e Mas aqui é é só só a gente é só para mostrar o que que a gente adicionou agora né que é esse header aqui ah e essa essa input text aqui essa caixinha de input para o usuário fazer
a pergunta Beleza então vamos voltar para cá E aí eh eu vou fazer o seguinte agora assim o que eu preciso fazer agora na realidade é instalar o stream le chat tá e deixa eu só pegar aqui pera aí deixa eu dar um Clear deixa só eu pegar o nome exatamente do chat aqui o ele vai adicionar aqui o chat beleza e deixa eu monar isso aqui logo show de bola e aí a gente só tem que tô olhando a documentação aqui só para eu pegar exatamente aqui beleza aí a gente vai importar aqui ó
from stream chat Import message beleza que que a gente vai fazer com isso aqui bom primeiro ponto a gente vai tá inserindo a as mensagens do nosso usuário eh dentro do da nossa interface né então basicamente a gente precisa aqui passar uma user question eh passar passar uma pergunta né E aí a gente faz o seguinte a gente chama esse conversation aqui e ele vai ter a resposta response da nossa do nosso bot né E aí a gente só precisa vir aqui e adicionar aqui ó message ah a gente vai primeiro adicionar a nossa mensagem
do usuário a gente vai colocar que é user Cadê is user é igual a true certo porque a mensagem do nosso usuário e aí eu vou vir aqui depois message eh response ponto response content Beleza eh is user igual a fals beleza e aí eu vou vir aqui no meu chat beleza Tá executando vou dar um browse files novamente vim aqui processar Enquanto Tiver Running aqui ele vai estar processando esse meu arquivo terminou de processar eu vou fazer a pergunta sobre o que é esse ar o meu dfm ele foi executado Logo no início quando
ele criou a sideb certo quando eu processei a sideb ele criou o meu conversation certo ele porque a gente fez o a gente subiu o arquivo apertou o botãozinho de processar e ele processou e criou o meu conversation Beleza então por que que aqui ele tá dizendo que a minha variável conversation tá sendo utilizada antes de eu criá-la né referen before assignment porque é o seguinte é aquilo que eu falei lá no início toda vez que a gente aperta um a gente seleciona interage com o componente do stream Lead ele dá um meio que um
Reload executa tudo novamente certo então o que que a gente precisa fazer para executar o nosso o nosso a nossa conversação aqui de forma apropriada tá a gente precisa fazer o seguinte a gente precisa utilizar o que o uma uma ferramenta que o stream possui que é o session state ST session state P conversation o que que o session state faz ele armazena essas variáveis e em um estado dentro da aplicação e elas não são reinicializada quando a gente interage com uma um novo componente então ao utilizar o session state a minha variável ela vai
ser criada vai ser armazenada nesse estado da sessão e ah quando eu aperto quando eu gerar a pergunta ela a minha variável ela não vai ser apagada ela vai continuar né Eh ela vai já estar já vai ter sido inicializada certo então é é por isso que a gente precisa eh na verdade esse é um ponto de atenção do stream leit essa questão da reinicialização ali do da interface sempre que a gente interage com com alguma coisa então feito isso a gente agora acredito eu vamos conseguir ele fez ele me deu um aviso aqui né
que eu esqueci de inicializar e realmente eu esqueci é uma boa prática a gente inicializar as variáveis que nós declaramos dentro do session Stage tá então o que que a gente faz é o seguinte ó conversation ST session state Beleza agora tá corretinho agora tá certinho Acredito eu que a gente vai conseguir executar aqui deixa eu dar um always rerun beleza browse file image Quality processar beleza funcionou eh O que que a gente tá fazendo aqui né É porque esse conversation ele bom ele retorna ao objeto né obviamente e a gente definiu aqui na Memory
Key que pra gente acessar o histórico a gente precisa ter o nosso a gente precisa utilizar essa k aqui né que é o chat History então pra gente acessar as mensagens que já foram enviadas a gente precisa utilizar essa ke aqui só que esse chat History ele me retorna todo a histórico de mensagens então por isso que ele ele é uma lista na realidade né então se eu quiser pegar a última mensagem eu eu preciso colocar o de menos um aqui na realidade e aí eh eu col feito isso né a gente tem o nosso
chat agora já funcionando né Eh eu coloquei aqui eu fiz a pergunta né Qual é o tema do artigo ele coloca aqui como o meu usuário aqui esse carinha de bobo aqui e a resposta do bot a resposta do nosso modelo já do nosso chat ept o tema do artigo é avaliação da qualidade de imagens de rosto Face image Quality assessment Então já tá funcionando o nosso bot deixa eu fazer uma pergunta um pouquinho mais difícil ah Quais são os fatores de avaliação de imagem segundo esse artigo vamos ver o que que ele vai me
responder beleza de acordo com esses artigos enfim ele vai dar a resposta aí que está correta só que o que acontece vocês viram que a minha resposta ela apagou certo eu apagou uma resposta e colocou uma nova resposta não é isso que a gente quer fazer certo a gente quer que a nossa a nossa o nosso histórico ele fica armazenado Sempre beleza então a gente tem que dar um jeito de armazenar também o nosso histórico ou na realidade a gente mostrar esse histórico é dentro da da nossa aplicação Beleza então o que que a gente
precisa fazer a gente vai utilizar uma outra variável do session state para armazenar o nosso histórico ah de forma não volátil digamos assim né sem que essa reinicialização do do do stream leit que o histórico do nosso chat Beleza então o que a gente vai fazer é o seguinte bom primeiro então a gente só precisa e armazenar o nosso histórico o nosso histórico do nosso chat na realidade não armazenar mas mostrá-lo né de forma e perene né sem sem o o streit aí retornar tudo então para isso e é só a gente utilizar o chat
History que já está aqui no nosso conversation n a gente só precisa fazer o seguinte a gente vai pegar o response que já tem o chat History beleza e aí a gente vai interar como chat History tem ele armazena o histórico né do nosso do nosso da nossa conversa a gente vai iterar pelo por esse chat History aí para mostrar lá no chat os todo esse histórico né então toda vez que o usuário fizer uma pergunta a gente vai iterar por todo o histórico criando essas mensagens aqui beleza porque toda vez que ele fizer uma
nova pergunta vai adicionar lá no chat tanto a pergunta como a resposta e a gente vai colocar todas as perguntas e todas as respostas de volta lá na interface não tem muito que fazer no stream ele vai ter que funcionar dessa forma devido essa esse Wi aí que ele faz das variáveis Beleza então a gente faz o seguinte for e text Opa e Tex in ah aí eu vou fazer um enumerate aqui Ah response beleza porque é o chat History aí o que que eu vou fazer vou dar um Tab aqui ah aí o que
que acontece né o a primeira pergunta do usuário vai ser o índice zero a primeira resposta do bot vai ser índice um a segunda do usuário vai ser índice do bot TR usuário 4 então a gente vê que as perguntas do usuário vão est em índices pares e as respostas do bot vão estar em índices ímpares dessa lista certo então é só a gente verificar se o índice aqui do nosso ele é né a gente faz uma um um mod de dois se ele ah se o resto da divisão por dois é zero quer dizer
que ele é uma resposta do usuário e aí tem um outro parâmetro que a gente vai adicionar aqui que é o ke que é o seguinte ele vai ser simplesmente um ID da nossa dessa resposta aqui do usuário Por que que a gente precisa desse ID para que a ele tem uma explicação aqui deixa atela explicação que explica melhor do que eu falando né Se for e os argumentos do do componente dos componentes são alterados O componente ele vai ser recriado no stream Lead e vai perder o seu state então a gente fazendo desse jeito
o CONSEG gerenciar melhor oada Zinho do nosso chat beleza e aí a gente passa um outro Key aqui bot I mas Ah botei user né vou botar bot Beleza então a gente tá conferindo aqui quais são as respostas e é isso a gente vai agora a esqueci de botar o o string aqui beleza ele vai dar um rewind aqui ah list Object has no atribute content cometi só um erro aqui beleza Eh Na verdade eu tenho que modificar aqui para text P content Ah e aqui também texto. content beleza eu cont show de bola agora
a gente tem até o nosso histórico inteiro aí que a gente perguntou várias vezes a mesma coisa se eu der que na verdade executar novamente ele vai abrir aqui Beleza deixa eu carregar processar Tex message beleza acredito que agora vai dar tudo certo beleza deixa eu processar aqui nosso arquivo show processou o arquivo Qual o item arquivo beleza Eh Quais os fatores de análise de qualidade de imagem segundo o artigo show de bola então a gente agora já tem os nossos arquivos sendo processados a gente já tem a nossa pergunta sendo processada e a gente
já tem o a o histórico sendo salvo e agora a gente pode conversar com o nosso bote aqui né eu posso fazer pergunta aqui ah não sei deixa eu ver vou até me arriscar aqui Quais os nomes dos autores do artigo vamos ver as limitações né os nomes dos autorizativos não são fornecidos no contexto fornecido então eh deixa eu ver [Música] eh ele acabou não conseguindo isso E aí isso são limitações tanto do ah do modelo em si quanto do processamento que a gente tá fazendo E aí melhorias necessitam ser feitas né e a gente
pode estar trabalhando nessa nessas melhorias mas a gente já tem aqui o nosso Ah chatbot o nosso chat GPT pessoal que a gente pode subir os nossos arquivos e fazer perguntas sobre esses arquivos esses Ah esses artigos né ah deixa eu pensar aqui em alguma outra pergunta artigo também interrogação de métodos basead em aprendizado Prof fundo quais métodos parti vamos ver se ele consegue me responder essa pergunta lembrando né a gente tá usando o modelo default que é o chat GPT 3.5 a e ele respondeu aqui deixa eu ver ó ele já deu uma resposta
um pouquinho mais completa né no artigo são mencionados E aí ele passa aqui qual é o o a estrutura que é utilizada né Qual que é o método e ele passa o número daer que que é mencionada lá no próprio artigo né E aí se a gente pegar essa referência a gente pode ir lá no artigo verificar qual que é a referência dessas abordagens aqui que utilizam Deep learning para verificar a qualidade de imagem e cara assim o c é o limite para esse tipo de aplicação aqui que nem a gente falou no início mas
está desenvolvido aqui o nosso primeiro bot o nosso primeiro chat GPT personalizável aqui né você pode personalizar do jeito que você quiser eh com os seus artigos ah com aí múltiplos artigos com seus documentos com os seus relatórios enfim toda essa você tá livre para adicionar qualquer base de conhecimento dentro do dentro desse dessa aplicação aqui só lembre-se de o seguinte que deve ter um adendo de de de segurança aqui né porque se você inserir informações confidenciais você vai estar fornecendo essas informações confidenciais para o open ai certo porém existe uma estratégia de nós desenvolvermos
utilizando nossos próprios and bearings e utilizando a nossa própria máquina local para fazer a e utilizando modelos de de llm próprios também né não próprios mas local ah executando localmente para nós processarmos tudo isso processarmos a os nossos os nossos arquivos e gerar respostas também tudo localmente sem precisar estar interagindo com o open ai fazendo que seja de graça também né só que um pouco mais lento um pouco mais Custoso em questão de recursos locais você aí vai precisar de ter um computador um pouquinho ah melhor assim em questão de configuração de GPU de CPU
de memória para conseguir executar essa aplicação localmente mas se você também tiver interesse que a gente fale um pouquinho mais e mostre como que a gente pode de tá fazendo algumas melhorias como que a gente pode estar executando localmente sem estar dependendo do Open ai comenta aqui no nesse vídeo ah se você tem interesse em est aprendendo mais sobre esse tipo de aplicação Beleza deixa aí também nos comentários se você curtiu esse vídeo se você Ah já tinha interesse já tinha curiosidade para saber como é que funciona e se você tem interesse em aprender mais
sobre essa parte de chatbot de llm porque realmente sensacional esse mundo ah se abriu todo um universo novo tanto na parte de machine learning Quanto na parte de engenharia de machine learning porque fazer o Deploy dessas aplicações também não é fácil também exige muito recurso exige muitas ferramentas exige muito conhecimento Beleza então muito obrigado pela atenção de vocês espero que vocês tenham curtido espero que vocês tenham eh tentem reproduzir Ah adicionem no portfólio de vocês esse tipo de aplicação que é muito interessante beleza valeu p pessoal até a próxima