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?

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