fala impressionador nesse vídeo eu quero ensinar vocês a criarem um chatbot usando Python e o chat GPT Vamos partir direto pro código da aula de [Música] hoje bom galera se você gostou da ideia desse vídeo já deixa aqui o seu like se inscreve no canal para continuar aprendendo com a gente e eu vou deixar alguns materiais para você aqui na descrição que vão te ajudar bastante então preste atenção primeiro material que eu vou deixar é o gabarito da aula de hoje tá então se você quiser simplemente pegar esse gabarito para implementar esse chatbot dentro de
algum sistema que você tenha o link dele vai est aqui na descrição ou então para comparar o que você tá fazendo na aula o segundo link que eu vou deixar na descrição é o link de criação de site com python um minicurso de criação de site onde eu crio o seu primeiro site com python se você quiser por exemplo criar um site para ele ser o seu chatbot ou para implementar isso acho que esse minicurso vai te ajudar o link dele vai est também na descrição Tá bom então vamos lá vamos partir efetivamente agora para
como que isso aqui vai funcionar pra gente criar um chatbot com o Python Existem várias formas de você fazer isso mas hoje em dia né dado a existência do chat GPT a forma mais fácil que eu acho que a gente vai ter aqui de fazer isso é integrar o nosso código em Python com chat GPT e usar a funcionalidade do chat GPT de reconhecimento de texto e tudo mais para você conseguir gerar esse chatbot então essencialmente o que a gente vai fazer é criar um chatbot que permita a gente fazer isso aí como que a
gente vai fazer isso a gente como eu falei a gente vai usar o chat GPT Então a gente vai ter que instalar uma biblioteca do Python chamada Open ai Open ai é a empresa que criou o chat GPT Eles criaram uma biblioteca do Python que integra direto com chat GPT que é essa biblioteca chamada openi Então você vai abrir lá o seu editor de código pode usar o editor que você quiser e lá no seu terminal aqui eu vou abrir aqui meu prompt de comando tá vendo ó comando de prompt e aqui eu vou digitar
assim ó PIP install Open no meu caso já tá instalado então ele vai dizer aqui só que tá instalado mas no seu caso ele vai instalar E aí primeira coisa que a gente vai fazer aqui é Import Open na Open Existem várias soluções de Inteligência Artificial o chat PT é uma dessas soluções Então vai ser importante você também pegar a sua chave da api da Open A então o que a gente vai fazer é consumir os dados da api da Open a especificamente do chat de GPT para conseguir trocar essas mensagens com ele para isso
você precisa pegar sua chave de api E aí para isso você vai abrir o seu navegador eu tô olhando pro lado porque eu tô puxando o meu navegador para cá olha lá vai desalar no Google open a e vai entrar no primeiro link aqui se você não tiver uma conta você vai ter que criar uma conta e aí eu vou clicar aqui simplesmente em fazer login para fazer login aqui no na plataforma no meu caso eu já tava logado ele já logou direto no seu caso você vai ter que fazer o seu login e aí
você pode entrar no chat PPT diretamente ou então abrir as suas apis No meu caso eu vou abrir as minhas apis aqui beleza aqui dentro das apis você pode ver aqui a documentação da api e tudo que eu vou ensinar para você na aula de hoje ele tá explicado digamos assim aqui dentro da documentação então se você entrar aqui ó em documentation ele vai dizer aqui ó o chat GPT as melhores práticas do chat GPT tá vendo e a gente vai usar essa ferramenta aqui ó chamada chat completion api Então ela essencialmente é esse código
aqui que a gente vai ter que fazer né a gente vai ter que chamar a nossa biblioteca da openi e criar um chat completion né que é essencialmente o uso que você faz do chat GPT quando você tá lá no site dele criando aquilo só que se você reparar Esse chat completion ele tem várias mensagens mensagens que podem ser enviadas pelo usuário pelo assistente que é o chat GPT que tá respondendo e mensagens de padrão que você tá passando pro chat GPT para você meio que configurar ele de alguma forma que você queira eu vou
explicando mais isso mais a fundo na medda que a gente fori executando mas só tô mostrando que tudo que a gente vai utar na aula de hoje vai estar aqui nessa documentação e se você quiser você pode olhar mais a fundo ela mas o que é importante você fazer é que você vai ter que aqui ó na sua no seu login aqui você vai ter que entrar em API Keys tá vendo e aí aqui em API Keys aqui você vai ter que pegar a sua chave então você vai clicar aqui ó em Create New Secret
Key ele vai criar uma chave para você e você vai pegar essa chave e usar no seu código Eu Já criei uma chave aqui ó test Lira que é que eu vou usar na aula de hoje e depois que eu acabar de usar da aula de hoje eu vou deletar para vocês não ficarem usando a minha conta então quando você clia clicar aqui em Create ele Vai disponibilizar para você Um textinho tipo esse aqui ó Um textinho que é isso aqui isso aqui é a sua chave da api ele Vai disponibilizar assim sem aspas e
você vai colocar lá sua chave de api Então vou chamar aqui por exemplo de chave api essa variável vai ser esse cara aqui entre aspas beleza e aí obviamente não adianta você tentar copiar minha chave porque não vai funcionar você tem que criar sua conta lá e criar sua chave beleza e aí logo depois você vai configurar o openi p api Key tá então isso aqui é basicamente você passando para openi Qual é a sua chave da Api para você poder consumir os dados dele aí o que que a gente vai fazer a gente tá
querendo criar um chatbot se eu tô querendo criar um chatbot a gente precisa criar alguma funcionalidade dele onde ele recebe uma mensagem Analisa essa mensagem e dá uma resposta pra gente então para fazer isso eu vou criar uma função que é a função por exemplo de enviar mensagem tá essa função o que que ela faz ela recebe uma mensagem como parâmetro tá então tô definindo aqui a função enviar mensagem ela recebe uma mensagem como parâmetro para ela e ela envia essa mensagem pro chat GPT e retorna pra gente como resposta a resposta que o chat
GPT deu para essa mensagem daqui para essa pergunta daqui Beleza então essencialmente o que eu vou fazer aqui é fazer aquela consulta que eu mostrei para vocês aqui ó na referência da api ó em ó documentação GPT B GPT E Chat completion api é isso aqui que a gente vai ter que fazer ó tá vendo a gente vai ter que rodar um response vai ser ser um Open ey chat completion esse cara daqui e aí é exatamente isso que eu vou criar lá no meu código então vou fazer aqui ó resposta ou seja resposta que
o chat ept vai passar pra gente vai ser o openi pchat completion p Create ou seja ele vai criar uma conversa com chat GPT quando você cria essa conversa aqui com chat GPT Se você olhar na documentação ele vai mostrar para você aqui ele dá um exemplo mas se você abrir aqui ó api reference documentation ele vai inclusive mostrando aqui ó os parâmetros vai explicando tá vendo e tudo mais im mas eu vou seguindo por aqui você vai ver que o primeiro parâmetro que ele vai passar para você é o parâmetro de Model o que
que é isso daqui o chat APT tem várias versões e aqui você tem que escolher qual é o modelo que você quer usar para preencher isso e o modelo que a gente vai usar é esse modelo daqui é o GPT tro 3.5 tro turbo tá então esse cara daqui ó você vai botar ali entre aspas GPT tro 3.5 tro Turbo esse aqui atualmente pelo menos no momento que eu tô gravando esse vídeo é o modelo mais recente do chat GPT que tá disponível para você usar por meio de Apis tá então esse aqui é o
modelo que a gente vai usar aí Além disso você tem que aqui passar um parâmetro que é o parâmetro de mensagens que é o parâmetro messages esse parâmetro messages ele é uma lista de dicionários então eu abri aqui uma lista e essencialmente o que você vai passar nesse dicionário daqui para ele é um dicionário né com dois parâmetros o parâmetro Roll que é a função de quem tá mandando essa mensagem que pode ser usuário então quando o usuário enviar uma mensagem o roll vai ser user quando o chat GPT responder para você o o roll
vai ser assistant se você quiser passar alguma configuração pro chat GPT do tipo ah chat GPT eu quero que você é Imagine que você é um nutricionista e que você tem que fazer não sei o que não sei que lá Imagine que você é um professor de história e que você tem que responder sobre isso isso isso ou que você tá escrevendo um e-mail sobre isso isso isso essas orientações Gerais pro chat PT você aqui passaria Como pode passar como System beleza no nosso caso como se quero criar um chatbot que ele consiga conversar com
qualquer pessoa eu não vou passar nada e simplesmente a própria mensagem já vai ser o dele então o que a gente vai fazer com essa função aqui é que essa função o vai ser o usuário vai passar e aí o segundo parâmetro é o parâmetro content Beleza o parâmetro content é o conteúdo da mensagem o texto da mensagem que a gente tá recebendo como parâmetro aqui então aqui o content vai ser Justamente esse mensagem aqui beleza e basicamente é isso aqui que você precisa Isso daqui ele vai enviar essa mensagem pro chat GPT e vai
receber uma resposta dele agora quem é essa resposta que ele vai receber tá aqui ó ele mostra para você a resposta que vem para você ela vem no formato de um dicionário tá esse dicionário ele tem choices que é essencialmente a resposta que ele deu e várias informações sobre essa resposta Quantos tokens você utilizou né chat FT tem um esquema de tokens qual foi o modelo que você usou qual o objeto que você tá chamando o ID dessa troca de mensagens Qual a data de criação dele e assim vai a gente tá interessado na mensagem
da resposta então a gente tá interessado nesse choices aqui então eu vou pedir para essa minha função me retornar como resposta o resposta entre colchete choices tá vendo resposta entre conate choices quem é o resposta entre conate choices é esse dicionário aqui tá vendo esse dicionário não desculpa essa lista aqui ó tá vendo choices é essa lista aqui nessa lista a gente quer pegar só o primeiro item da lista ele só tem um item mesmo né provavelmente mas a gente vai querer sempre pegar o primeiro item da lista porque o primeiro item da lista vai
ser a resposta do chat rpt então aqui eu vou pedir para ele me retornar o choices de índice zero porque é o primeiro item da lista que tá aqui dentro quem é o primeiro item dessa lista é esse dicionário aqui que eu tô marcando agora nesse dicionário quem a gente quer a gente quer a mensagem tá vendo a gente quer a mensagem então eu vou pedir aqui para ele me passar como parâmetro a mensagem ó message tá vendo message E aí aqui nesse parâmetro message a gente tem o roll que é o assistant ou seja
o chat ept que tá falando com a gente e o conteúdo dela que é o texto que ele mandou pra gente beleza por enquanto eu vou deixar assim da nossa função Vamos testar para ver se ela tá funcionando então eu vou chegar aqui eu vou dar um print no enviar mensagem e vou passar para ele uma mensagem qualquer Por exemplo por exemplo Em que ano Einstein publicou a teoria geral da relatividade vai ser essa aqui a pergunta eu sei disso porque eu acabei de ler um livro sobre isso mas você não precisa se preocupar com
o conteúdo físico da pergunta só a gente tá escrevendo uma pergunta aqui a gente quer ver a resposta dele vamos dar uma olhada na resposta então vamos executar esse código aqui e vamos ver qual vai ser a resposta dele então eu peguei rodei esse código tã e vamos ver qual vai ser a resposta que vai aparecer aqui ó tá lá Ele falou o rle dele assistant e a resposta é Albert Einstein publicou a teoria geral da relatividade em 1915 Tá certo beleza então a princípio isso daqui tá funcionando de uma forma perfeita a gente tá
conseguindo perguntar e ele tá conseguindo responder agora essa resposta tá vindo pra gente nesse dicionário daqui é um dicionário que tem Roll e content se você quisesse só o texto você ter que pegar o content você poderia aqui pedir para ele para pegar só o content mas eu não vou fazer isso por que eu não vou fazer isso porque repara o seguinte a gente tá querendo criar um chatbot esse chatbot e você precisa conseguir se comunicar com ele fazendo uma pergunta mas comunicar com ele fazendo a próxima pergunta e a próxima pergunta e a próxima
pergunta meio que mantendo a mesma conversa o fato é quando você roda um Create desse daqui ele cria uma nova conversa e se você passa para ele com mensagem só a mensagem que o usuário tá enviando agora ele não sabe qual era a conversa original então se você quiser fazer digamos assim uma continuidade dessa conversa isso daqui do jeito que tá agora não vai funcionar Você vai precisar a cada iteração do usuário incrementando essa mensagem daqui para ele ir adicionando a resposta que o assistant deu por isso que eu mantive Esse dicionário inteiro aqui completo
tá vendo Lira eu não entendi direito como que vai ser isso e tudo mais relaxa que eu vou mostrar agora o que a gente vai fazer então o primeiro passo que a gente vai fazer é cara a gente pra agora tornar isso aqui uma ferramenta em que um usuário pode interagir você poderia criar uma tela pro usuário e atribuir essa função de envar mensagem num botão dessa tela você poderia fazer a forma que você quiser eu vou fazer a forma mais simples que é criar um input do Python mesmo e a gente vai lá pelo
terminal mesmo conversando com o nosso chatbot então eu vou fazer assim ó pra gente iniciar essa conversa a gente vai inicializar um Loop Infinito eu vou botar aqui ó while true Por que lir um Loop Infinito porque essencialmente essa conversa vai ficar eternamente rodando ele vai ficar eternamente rodando esse código faça uma pergunta ele responde faça uma pergunta ele responde faça uma pergunta ele responde até quando até o usuário escrever que ele quer sair dessa conversa então eu vou dizer o seguinte Olha só o texto do usuário o texto que o usuário escreveu vai ser
um input que é Escreva aqui sua mensagem beleza esse daqui vai ser o input E aí eu vou botar um if aqui se o texto for igual a sair então eu dou um Break nesse nesse Loop Infinito ou seja ele vai ficar rodando que tiver aqui dentro eternamente até o texto que o usuário escrever for sair e aí dado que eu escrevi sair aqui com letra minúscula o usuário tem que escrever exatamente assim você poderia dar outras opções você poderia passar aqui é uma instrução pro usuário ah escreva sair se você quiser encerrar o chat
e tudo mais não sei o qu você poderia botar um tempo definido uma quantidade de resposta definida mas eu quis criar dessa forma aqui e aí o que que vai acontecer a cada iteração ou seja o que que vai acontecer a cada vez que esse loop rodar ele vai pegar o texto do usuário se o texto for sair ele vai finalizar se o texto não for sair então else se o texto não for sair ou seja se ele não for encerrar esse loop então eu vou enviar a mensagem pro chat GPT então vou chegar aqui
e vou colocar assim ó a resposta do chat GPT vai vir do enviar mensagem e ele vai enviar aqui o texto do usuário tá vendo Então vou comentar essa linha de código aqui embaixo e olha lá a resposta que vai vir aqui vai ser a mensagem que ele vai pegar aqui do meu texto só que você lembra qual era essa essa resposta que vim aqui ó ó dá uma olhada aqui quem é essa variável resposta que vem como resultado do enviar mensagem eu mostrei aqui no print para vocês olha lá ele é um dicionário que
tem o Row que é o assistant e o content que é o texto aqui do Albert as então se eu quiser printar essa resposta eu aqui vou fazer assim ó print resposta entre par entre colchetes né content porque eu tô printando a resposta do do chatbot e eu posso até aqui nesse print botar aqui ó chatbot dois pontos e a resposta por quê Porque a fica parecendo uma conversa você tá escreve sua mensagem chat responde isso daqui você escreve sua mensagem o chatbot responde isso daqui e aí fica exatamente uma conversa vamos testar até agora
pra gente ver como que isso aqui tá funcionando e aí eu vou inclusive mostrar o problema que tá acontecendo para vocês então vamos lá rodei ó rodei ele apareceu aqui embaixo escreva sua mensagem vou até dar um zoom aqui para vocês verem melhor escreva sua mensagem tá vendo aí vou escrever aqui a mesma mensagem que a gente tinha escrito antes em que ano as publicou a teoria geral da relatividade vai ser essa mensagem que eu vou escrever aqui ó enter aí ele vai ver ó alber com a teoria geral da relatividade em 1915 só o
que acontece por exemplo o as ele tem a teoria geral e ele tem a teoria especial da relatividade aí eu vou perguntar aqui para ele e a teoria especial tã tã existem essas duas existe a teoria geral e existe a teoria especial só que repara o seguinte a pergunta que eu fiz aqui para ele foi só e a teoria especial partindo do princípio que ele já sabia o que tava acontecendo e nesse caso você vê que a resposta dele foi muito maior porque provavelmente Ele pesquisou lá no banco de dados dele cara quando a galera
pergunta teoria especial eles estão querendo saber teoria especial do quê coincidentemente ele me deu aqui a resposta da teoria especial da relatividade que foi em 1905 só que por exemplo se eu invertesse Essa ordem de perguntas vamos inverter agora aqui ó vou encerrar o código vou encerrar o código aqui é só clicar em qualquer lugar e apertar cont control c e agora eu vou inverter vou rodar o código de novo e vou perguntar primeiro a teoria especial e depois a teoria geral Olha só em que ano Einstein publicou a teoria especial da relat idade você
vai ver que ele vai me responder rapidinho de uma forma bem curta ó em 1905 que foi a mesma resposta que ele tinha dado antes ó em 1905 a teoria especial agora e a teoria geral tã ó a teoria geral é um conjunto de princípios conceitos fundamentais que se aplicam a várias áreas de conhecimento com objetivo de estabelecer princípios gerais e tal não sei o quê teoria geral da administração do direito da economia e tudo mais ou ou seja ele não sabe que essa teoria geral tem a ver com a outra pergunta que eu tive
antes tá vendo ele não sabe aqui em cima tinha dado certo por coincidência e foi legal isso acontecer no meu código porque pode ser que aconteça no seu também com duas perguntas mas foi só coincidência ou seja ele só intuiu que a quando eu perguntei a teoria especial eu tava querendo dizer a teoria especial da relatividade que foi Putz uma baita coincidência Mas você tá vendo aqui que ele não me respondeu a teoria especial da relatividade a teoria geral da relatividade aqui a data que ele 195 que era o que eu queria ou seja ele
não tá conseguindo armazenar o histórico de mensagens pra gente ele tá funcionando só que ele não armazena esse histórico de mensagens e por que que ele não amazena esse histórico de mensagens porque a minha função enviar mensagem ela só recebe a mensagem atual que o usuário tá escrevendo e passa para essa pro chat ele cria um novo chat aqui tá vendo ele sempre cria um novo chat passando essa mensagem que o cara Manteve só que quando você cria um novo chat aqui nesse lista de mensagens você pode mandar toda a conversa para ele você pode
mandar assim ó o user mandou essa mensagem depois o sistema respondeu essa mensagem depois o user mandou outra mensagem depois sistema respondeu isso depois user mandou isso E aí você poderia mandar seria essencialmente isso daqui ó System user System user tá vendo System não né assistant assistant user e aqui a mensagem do assistant e assim vai então você teria nessa lista aqui tá vendo isso aqui é uma lista nessa lista de mensagens você teria todas as mensagens então o que que eu vou fazer ao invés de enviar pro chat GPT uma única mensagem como tava
antes que era isso daqui ó tem os cont control ZS aqui era assim que a gente tinha feito ao invés de enviar isso daqui eu vou tirar isso daqui e vou mandar para ele uma lista de mensagens e aí aqui esse enviar mensagem ele vai receber como parâmetro também uma lista de mensagens que vai começar vazia tá vendo uma lista de mensagens que vai começar a vazia quando você faz isso daqui numa função você tá dizendo o seguinte olha se o usuário quando chamar essa função não passar esse parâmetro lista de mensagens ela tá vazia
Beleza então esse aqui é o parâmetro lista de mensagens e aí o que que eu vou fazer aqui antes de criar a minha conversa eu aqui vou fazer assim lista de mensagens ponto append eu vou adicionar na lista de mensagens exatamente aquele dicionário da mensagem atual que o usuário acabou de escrever esse cara aqui ó eu vou adicionar na lista de mensagens isso daqui o que que é isso daqui que a gente tá passando para ele que a gente tá adicionando a lista de mensagens se a lista tiver vazia essa minha lista de mensagens vai
ser uma lista que tem um único dicionário que é o usuário escreveu essa mensagem ou seja eu tô iniciando a conversa com o chat GPT agora se eu passar para ele aqui na minha lista de mensagens uma lista que já tenha uma mensagem do usuário uma resposta do assistente quando eu adicionar essa próxima mensagem ele sempre adiciona no final eu vou passar pro chat PT toda a conversa já então aqui ó quando a gente for chamar agora esse enviar mensagem ao invés de gente chamar esse enviar mensagem por aqui só com o texto a gente
vai passar para ele também a lista de mensagens agora que lista de mensagens é essa é uma lista que fora do loop ela começa vazia tá vendo eu começo vazio porque ainda não conversei nada com chat IPT e a cada conversa dessa daqui tá vendo a cada conversa dessa daqui olha só ele pega essa resposta ele adiciona essa resposta na minha lista de mensagens lista de mensagens p apende a resposta tá vendo ele adiciona essa resposta na lista de mensagens e printa para mim qual foi o texto da mensagem do usuário então o usuário perguntou
ele adicionou e respondeu o usuário perguntou ele adicionou e respondeu o usuário perguntou ele adicionou e respondeu e a gente vai fazendo assim constantemente Então tá vendo aqui a gente adiciona a mensagem do usuário então aqui dentro da função enviar mensagem a gente adiciona mensagem do usuário e aqui a gente tá adicionando a resposta do chat GPT então primeiro a gente adiciona a mensagem do usuário depois a resposta do chat ept Obviamente você poderia ter feito esse append aqui na resposta aqui dentro da função também né Depois que você pegou essa resposta poderia ter feito
esse append aqui ao invés de ter feito ele aqui tanto faz mas no caso eu tô fazendo aqui embaixo então ele vai primeiro adicionar na lista de mensagens aqui e depois adicionar na lista de mensagens aqui embaixo e aí ele vai sempre ter o histórico da nossa conversa e aí agora aquela sequência de perguntas perguntar primeiro sobre a teoria especial da relatividade depois a teoria geral vai funcionar Quer ver Vou pegar isso aqui vou rodar e obviamente Esse é só o exemplo que eu tô falando tá mas poderia ser qualquer outro exemplo vou dar um
zoom aqui melhor para vocês conseguirem visualizar ó deixa eu dar uma aqui vocês verem melhor ol rodei tá lá escreva sua mensagem aqui em que ano Einstein publicou a teoria especial da relatividade aí ele vai dizer olha 195 aí vou falar e a teoria geral isso aqui que tinha dado errado na última vez e a teoria geral vai ser rapidinho publicou em 1915 por quê Porque ele tem agora histórico da conversa entendeu E o que foi essa teoria qual teoria sei tá na última pergunta aqui e a chat GPT vai explicar agora pra gente ó
ele tem que falar da teoria geral da relatividade ó a teoria geral da relatividade é uma teoria física que descreve a gravidade como curvatura e assim vai eu sei que o exemplo foi muito nerd aqui o exemplo que eu dei do Einstein e tudo mais mas é assim que a gente faz para você conseguir Criar o seu chatbot repara Agora o seu chatbot ele tá pronto você já consegue conversar com o chatbot Você já consegue conversar de uma forma constante iniciar uma conversa e nela até o final mantendo todo o histórico que que você precisa
fazer se você quiser levar isso aqui é um passo além ainda integrar isso aqui no seu sistema ahir eu quero integrar isso num site que eu tô criando o link que tá aqui na descrição vai te ensinar a criar um site com python Ah lir eu quero integrar isso aqui num programinha no meu computador para eu poder ter um chatbot no meu computador para eu conversar com ele você integra isso lá com sei lá uma tela que você pode criar usando TK Inter usando alguma outra funci kiv uma outra funcionalidade do Python que crie telas
para você mas a criação do chatbot é exatamente isso daqui que você precisa fazer você só só precisa agora dentro desse loop aqui escolher Como que você vai integrar isso daqui com a tela onde você tiver usando ou simplesmente um código mesmo que você vai ter a sua tela e vai usar o chat GPT por conta própria aqui dentro Lembrando que a chave da api né api do chat GPT você tem quando você cria sua conta você tem alguns créditos gratuitos depois um tempo ela começa a cobrar e tudo mais e que você tem que
gerar a sua própria conta tá então no início os testes iniciais Acho que são gratuitos depois disso ele começa a cobrar você se você quiser continuar utilizando tá é barato mas ele cobra então só fica ligado com isso daí também Beleza espero de verdade vocês tenham gostado da aula de hoje Se vocês quiserem que eu construa alguma outra funcionalidade é como um chatbot ou alguma coisa do tipo deixa aqui nos comentários que eu tô sempre de olho no que vocês estão sugerindo um grande abraço e até a próxima aula n