Blog

Postado em em 2 de novembro de 2023

Criando um ChatBot com ChatGPT em Python em Apenas 20 Minutos

Aprenda como criar um ChatBot com ChatGPT em Python em questão de minutos! Crie um robô capaz de manter uma conversa coesa e conectada!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Criando um ChatBot com ChatGPT em Python em Apenas 20 Minutos

Na aula de hoje, vou mostrar como criar um ChatBot com Python usando o ChatGPT em poucos minutos.

Utilizaremos a biblioteca OpenAI para incorporar o ChatGPT em nosso código Python e desenvolver um ChatBot, aqueles robôs que mantêm conversas com você.

Nosso código será responsável por transmitir a mensagem do usuário para o ChatGPT e exibir a resposta.

Além disso, vamos armazenar o histórico da conversa para que o ChatGPT saiba o que foi enviado anteriormente, mantendo assim uma conversa que faça sentido e esteja conectada ao contexto.

Então, faça o download do material disponível e vamos aprender a criar um ChatBot em Python com ChatGPT.

Biblioteca OpenAI

Para construirmos nosso ChatBot com ChatGPT em Python vamos precisar utilizar a biblioteca OpenAI, que permite a integração entre o ChatGPT e o Python.

Para instalá-la, basta abrir o terminal no seu editor de código e executar o comando:

pip install openai

Depois disso, importamos a biblioteca para o nosso código:

import  openai

A OpenAI oferece várias soluções de Inteligência Artificial, sendo o ChatGPT uma delas. Portanto, além de instalar a biblioteca, é importante obter uma chave de API da OpenAI.

Para gerar sua chave de API, acesse o site da OpenAI e faça o login (caso você não tenha uma conta, será necessário criar uma).

Com o login feito, selecione o menu da API.

Menu da API

Dentro dessa página, teremos a documentação da API com os guias completos de instalação e configuração das funcionalidades que podemos utilizar. Para essa aula vamos usar a Chat completions API.

Chat completions API

Ainda nessa página, no canto superior direito, você precisa clicar no seu usuário e selecionar a opção View API Keys.

View API Keys

Essa opção te levará para a página de criação de chaves da API, nela, basta você clicar em Create new secret key que sua chave será gerada.

Create new secret key

Depois de criar sua chave da API, vamos configurá-la dentro do código.

Obs: É importante manter sua chave da API guardada de forma segura. Portanto, caso planeje compartilhar seu código, é altamente recomendado proteger sua chave de API.

import openai

chave_api = "sua_chave_aqui"
openai.api_key = chave_api

Dessa forma, você está fornecendo à OpenAI a chave da sua API para que possa ser utilizada em seu código.

Função Enviar Mensagem – ChatBot em Python com ChatGPT

Nosso objetivo é criar um ChatBot em Python que seja capaz de receber uma mensagem, analisá-la e enviar uma resposta.

Para isso, começaremos criando a função enviar_mensagem. Essa função recebe uma mensagem como parâmetro, a envia para o ChatGPT e retorna a resposta fornecida pelo ChatGPT.

Essa resposta será gerada através da função create do módulo ChatCompletion da biblioteca OpenAI. Para esta função, precisamos especificar o modelo (versão) do ChatGPT que desejamos utilizar.

Além disso, é necessário definir o parâmetro messages, que é uma lista de dicionários. Dentro dessa lista, criamos um dicionário que contém informações sobre quem está enviando a mensagem para o chat, no caso, o usuário (“role”: “user”) e o conteúdo dessa mensagem (“content”: mensagem).

def enviar_mensagem(mensagem):
    resposta = openai.ChatCompletion.create(
        model = "gpt-3.5-turbo",
        messages = [
            {"role": "user", "content": mensagem}
        ],
    )

Com esse código, conseguimos enviar a mensagem para o ChatGPT e receber uma resposta dele.

A resposta é retornada no formato de um dicionário que contém a chave “choices“, que essencialmente é a resposta em si, bem como várias outras informações associadas a essa resposta (id, modelo, objeto, uso, etc).

Modelo da resposta

Como estamos interessados na mensagem da resposta, nossa função é configurada para retornar apenas o valor associado à chave “message” dentro da lista associada à chave “choices”.

def enviar_mensagem(mensagem):
    resposta = openai.ChatCompletion.create(
        model = "gpt-3.5-turbo",
        messages = [
            {"role": "user", "content": mensagem}
        ],
    )
    return resposta["choices"][0]["message"]

Dentro dessa resposta, teremos o role definido como assistant pois é o ChatGPT quem está respondendo, e o content que é o conteúdo da resposta em si.

Para testar a função, fazemos um print, passando uma mensagem qualquer para o ChatGPT:

print(enviar_mensagem('Em que ano Einstein publicou a teoria geral da relatividade?'))
Testando o Chat

Perceba que a resposta foi gerada corretamente, incluindo a role e o conteúdo (content). Isso significa que a nossa função está funcionando.

No entanto, como mencionado anteriormente, o objetivo do nosso ChatBot é manter uma conversa com continuidade e coesão.

Portanto, é necessário aprimorar nossa função para que ela mantenha o histórico de mensagens entre o usuário e o ChatBot. Assim, a cada interação do usuário com o chat, além da mensagem atual, enviaremos para o ChatGPT todo o histórico da conversa.

Para fazer isso, adicionaremos um novo parâmetro à nossa função enviar_mensagem, que será uma lista de mensagens inicializada como vazia (lista_mensagens=[]).

Antes de gerar a resposta do ChatBot, adicionaremos a essa lista o dicionário de mensagem que havíamos definido anteriormente na função create.

Além disso, vamos definir dentro da função create que o parâmetro messages ao invés de ser o dicionário que estávamos utilizando anteriormente, que enviava uma única mensagem para o ChatGPT, será a nossa lista de mensaegens (lista_mensagem).

def enviar_mensagem(mensagem, lista_mensagens=[]):
    lista_mensagens.append(
        {"role": "user", "content": mensagem}
        )
    resposta = openai.ChatCompletion.create(
        model = "gpt-3.5-turbo",
        messages = lista_mensagens,
    )
    return resposta["choices"][0]["message"]

Dessa forma, quando o usuário iniciar a conversa com o ChatGPT, a lista estará vazia, e a primeira mensagem enviada será adicionada a ela. Essa lista será enviada ao ChatGPT, que retornará uma resposta.

Tornando Nosso Código em uma Ferramenta

Nossa função responsável por enviar mensagens já está criada. Agora, precisamos desenvolver uma ferramenta para que nosso usuário possa interagir com o ChatBot.

Existem várias maneiras de fazer isso, como criar uma interface gráfica no Python com botões e janelas personalizadas. No entanto, essa abordagem exigiria mais tempo e desenvolvimento.

Como o foco desta aula é apenas construir a lógica e a estrutura do ChatBot em Python com o ChatGPT, optaremos por uma abordagem mais simples: criar um sistema de entrada, input, no Python para que o usuário possa conversar com o Chat pelo terminal.

A ideia é criar uma conversa contínua na qual o usuário pode falar e receber respostas conforme desejar. Para isso, vamos implementar um loop infinito usando o while, que só será encerrado quando o usuário digitar sair.

Vamos verificar o texto inserido pelo usuário usando uma estrutura condicional if. Portanto, se o texto fornecido no input pelo usuário for sair, o loop infinito será encerrado e a conversa será encerrada. Enquanto isso não acontecer, o usuário pode continuar conversando com o ChatBot à vontade.

Uma vez que desejamos manter a continuidade da conversa, como definimos em nossa função, usaremos uma lista para armazenar as mensagens enviadas e recebidas. Antes de iniciar o loop while, criaremos uma lista de mensagens vazia.

lista_mensagens = []
while True:
    texto = input("Escreva aqui sua mensagem:")
    if texto == "sair":
        break
    else:
        resposta = enviar_mensagem(texto, lista_mensagens)
        lista_mensagens.append(resposta)
        print("Chatbot:", resposta["content"])

Dessa maneira, a cada iteração desse loop, o nosso programa coletará o texto do usuário. Se o texto for igual a sair, o programa encerrará a conversa. Caso contrário, ele enviará a mensagem para o ChatGPT e receberá a resposta do ChatGPT.

Essa resposta será fornecida no formato de um dicionário, como já vimos anteriormente. Portanto, a armazenaremos em nossa lista_mensagens para criar o histórico da conversa. Exibiremos para o usuário apenas o conteúdo (content) dessa resposta (resposta[‘content’]), que é a mensagem do ChatGPT.

Código Completo do ChatBot em Python com ChatGPT

import openai

chave_api = "sua_chave_aqui"
openai.api_key = chave_api

def enviar_mensagem(mensagem, lista_mensagens=[]):
    lista_mensagens.append(
        {"role": "user", "content": mensagem}
        )

    resposta = openai.ChatCompletion.create(
        model = "gpt-3.5-turbo",
        messages = lista_mensagens,
    )

    return resposta["choices"][0]["message"]

lista_mensagens = []
while True:
    texto = input("Escreva aqui sua mensagem:")

    if texto == "sair":
        break
    else:
        resposta = enviar_mensagem(texto, lista_mensagens)
        lista_mensagens.append(resposta)
        print("Chatbot:", resposta["content"])

Testando o ChatBot em Python com ChatGPT

Vamos realizar um teste agora para verificar se o nosso código do ChatBot em Python está funcionando corretamente, mantendo uma conversa coesa e contínua.

Testando o ChatBot

Assim, podemos confirmar que o nosso ChatBot está funcionando perfeitamente, fornecendo respostas rápidas e mantendo uma conversa coesa com o usuário.

Conclusão – Criando um ChatBot com ChatGPT em Python

Na aula de hoje, ensinei como criar um ChatBot em Python usando o ChatGPT em questão de minutos.

Através da biblioteca OpenAI, conseguimos conectar nosso ChatBot ao ChatGPT, criando um robô capaz de manter uma conversa coesa e conectada. Ao armazenar o histórico de conversa com o usuário, garantimos que as respostas sejam contextualmente relevantes.

Esse ChatBot em Python com ChatGPT já é um programa bem completo, criado rapidamente. No entanto, você pode levar isso adiante, integrando-o ao seu site, projeto ou sistema em que esteja trabalhando.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador