Blog

Postado em em 22 de fevereiro de 2024

Como criar seu próprio ChatGPT – Chainlit no Python

Aprenda a como criar seu próprio ChatGPT utilizando o framework Chainlit no Python e tenha seu próprio chat construído com Python!

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:

Como criar seu próprio ChatGPT – Chainlit no Python

Na aula de hoje, vou te mostrar como criar seu próprio ChatGPT com Python! Isso é possível através do framework Chainlit no Python.

Ao longo dessa aula, vou te dar uma breve introdução sobre o Chainlit no Python e como utilizá-lo para construir a parte visual e a estrutura do seu programa.

Você poderá fazer suas próprias configurações nesse chat para auxiliar na resolução de problemas e responder às dúvidas mais comuns. Ou então utilizá-lo em conjunto com uma inteligência artificial para ter maiores possibilidades.

E aí, vamos aprender o que é o Chainlit, como fazer a instalação e como criar seu próprio ChatGPT? Então, faça o download do material disponível e vem comigo!

O que é o Chainlit?

O Chainlit é uma ferramenta inspirada no Streamlit, um framework para construir aplicativos de projetos de dados e dashboards. Ao contrário do Streamlit, o objetivo do Chainlit não é exibir dashboards, mas sim criar soluções por meio de chat, semelhante ao ChatGPT.

Com ele, você pode criar toda a interface, estrutura e visual do seu chat para que os usuários possam interagir.

Instalação do Chainlit

O primeiro passo para começarmos este projeto é instalar o framework do Chainlit no Python. Para isso, vá até o terminal do seu editor de códigos e execute o seguinte comando:

pip install chainlit.

Após a instalação, para verificar se ela foi feita com sucesso, você pode digitar no terminal do seu editor o seguinte código:

chainlit hello

Feito isso, ele criará alguns arquivos novos dentro da pasta do seu programa, como chainlit.md, uma pasta chamada files e outra chamada chainlit.

Arquivos criados

Além disso, ele irá carregar, no seu navegador, o aplicativo padrão que já está criado no Chainlit, perguntando qual o seu nome (What is your name?).

Aplicativo rodando no navegador

Isso significa que a instalação foi realizada corretamente. Para interromper a execução desse aplicativo, basta selecionar o terminal e pressionar as teclas Ctrl + C.

Documentação do Chainlit – Como Funciona o Chainlit no Python

Para começar a construção do nosso próprio chat com Python, vamos primeiro acessar a documentação do Chainlit. Você pode ir até o Google e buscar por Chainlit, ou acessar diretamente por aqui.

É sempre interessante, antes de desenvolver e trabalhar com qualquer biblioteca ou framework, ler a documentação dela para compreender as funcionalidades e capacidades que aquela ferramenta oferece.

Além disso, dentro da documentação, temos exemplos de aplicativos básicos para que possamos entender o funcionamento do framework.

Então, vá em In Pure Python dentro da documentação do Chainlit e copie o código de aplicativo disponível para dentro do seu editor de código.

Documentação

Observe que, por padrão, o Chainlit é importado como cl. Ele basicamente funciona com a criação de funções às quais atribuímos um decorator. Isso pode ser verificado na própria documentação do framework.

Explicação dos decorators

Repare que a base dele se dá através das funções e dos decorators..

Os decorators basicamente atribuem novas funcionalidades às funções que estão logo abaixo deles. Nesse caso, o decorator define a funcionalidade desejada para a função no chat.

Podemos executar o código de exemplo que copiamos para testar o Chainlit. Para rodar o seu chat, você precisa digitar no terminal do seu editor de códigos o comando chainlit run nome_do_arquivo. No meu caso, o comando ficará:

chainlit run main.py

Feito isso, o aplicativo será carregado em seu navegador com a página abaixo.

Página inicial do aplicativo

Nesse código de exemplo, a função está com o decorator on_message, ou seja, ela será executada sempre que o usuário enviar uma mensagem. Inicialmente, essa função só irá imprimir a mensagem enviada.

Aplicativo inicial em funcionamento

Analisando o Código Inicial

Vamos entender o código inicial que o Chainlit forneceu como exemplo.

import chainlit as cl

@cl.on_message
async def main(message: cl.Message):
    # Your custom logic goes here...

    # Send a response back to the user
    await cl.Message(
        content=f"Received: {message.content}",
    ).send()

A função presente nesse código recebe uma mensagem (message) como parâmetro, que é um objeto da classe Message.

Classe Message

Essa função, ao receber uma mensagem, envia como resposta a mensagem “Received:” mais o conteúdo (content) da mensagem enviada pelo usuário, ou seja, a mensagem que ela recebeu como parâmetro.

Chainlit.md – Markdown

Quando executamos o código e carregamos nosso aplicativo, ele iniciou com uma tela contendo um texto de boas-vindas e alguns links úteis. Essas informações vieram a partir do arquivo chainlit.md, um arquivo de Markdown.

O Markdown é basicamente um formato para escrever e formatar textos. O que está contido dentro do arquivo chainlit.md é o que irá aparecer na tela inicial do aplicativo, quando o usuário abrir o seu chat.

Então, vamos editar esse arquivo md dentro do nosso editor de códigos. Vamos apagar todas as informações dele e deixar apenas o seguinte:

# Bem-vindo ao Orientador de Programação

Diga abaixo qual linguagem de programação você está aprendendo

Essa será a mensagem que o usuário verá ao acessar o nosso chat.

Criando a Lógica do Aplicativo

Feito isso, vamos voltar para o nosso arquivo main.py para definir o que queremos que aconteça quando o usuário enviar uma mensagem.

Nessa aula veremos um exemplo simplificado, porém, é dentro dessa função que é acionada sempre que o usuário envia uma mensagem que poderíamos inserir uma inteligência artificial que irá receber, tratar e responder essa mensagem.

Apenas para exemplificar a aplicação do Chainlit, nossa função verificará se dentro do texto da mensagem existe o termo “python“. Se for verdade, ela retornará uma mensagem como resposta, caso contrário, retornará outra mensagem.

import chainlit as cl

@cl.on_message
async def main(message: cl.Message):
    # Your custom logic goes here...
    if "python" in message.content.lower():
        resposta = "Parabens, tá aprendendo uma boa linguagem"
    else:
        resposta = "Já pensou em aprender Python?"
    # Send a response back to the user
    await cl.Message(content=resposta).send()

Aqui foi desenvolvida uma lógica bem simples, mas no lugar dessa estrutura condicional if-else, você poderia implementar uma conexão com a inteligência artificial, ou definir uma função mais complexa, com mais possibilidades e opções, e assim por diante.

É dentro dessa função que você vai criar a lógica baseada no conteúdo das mensagens enviadas pelos usuários e gerar a resposta final com base nessa lógica definida.

Executando esse código, podemos testar nosso aplicativo.

Aplicativo em execução

Perceba que ele funcionou e respondeu de acordo com o que definimos para ele.

O Chainlit é um framework muito interessante porque ele oferece todo o site pré-configurado, com formatação e visual prontos, com histórico da conversa, possibilidades de anexar arquivos, limpar histórico, iniciar uma nova conversa e muito mais.

O objetivo dessa aula foi trazer uma introdução sobre essa ferramenta para que você possa conhecer e a partir disso desenvolver seus próprios chats com Python e até mesmo saber como criar seu próprio ChatGPT.

Async e Await – Chainlit

Para finalizar esta aula, vamos falar um pouco sobre os processos assíncronos e como funcionam dentro do Chainlit.

Esses processos assíncronos (async e await) permitem que o chatbot responda instantaneamente às mensagens dos usuários sem recarregar a página.

Um processo assíncrono é independente da execução principal do site, permitindo que ele opere sem travar a interação do usuário.

O Chainlit garante que cada função seja executada de forma assíncrona, possibilitando a continuidade das operações enquanto uma função está em andamento.

Ou seja, enquanto o Chainlit espera a mensagem do usuário para enviar uma resposta, o restante do código continua em execução normalmente.

Conclusão – Como criar seu próprio ChatGPT – Chainlit no Python

Na aula de hoje, apresentei o framework do Chainlit no Python! Com ele, é possível criar um chatbot e até mesmo ter seu próprio ChatGPT com uma interface profissional já pronta para o uso.

Com o Chainlit, você pode desenvolver seu próprio chat, configurando os padrões de resposta ou até mesmo implementar inteligência artificial para ampliar as possibilidades e interações com sua aplicação.

Hashtag Treinamentos

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


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