Resumo
Nesta postagem, ensinamos a como criar um chatbot interativo utilizando o Shiny Python. Veremos os principais conceitos sobre o módulo Chat
do Shiny e como integrá-lo a modelos de IA generativa, como Gemini, para criar um chatbot funcional em poucos passos.
Introdução
O Shiny Python é uma ferramenta que facilita a criação de aplicativos web interativos diretamente com Python. Recentemente, o Shiny introduziu um novo componente chamado Chat
, que permite construir interfaces de chat interativas e integrá-las a modelos de IA generativa, como OpenAI, Gemini, LangChain, entre outros.
O código em Python completo deste exercício está disponível para os membros do Clube AM.
Shiny Python
O Shiny para Python é uma biblioteca que permite a criação de aplicativos web interativos com um enfoque simples e direto, usando apenas Python. Inspirado no sucesso do Shiny para R, ele traz a mesma facilidade para quem deseja transformar análises de dados, visualizações ou modelos de machine learning em ferramentas interativas que podem ser acessadas via navegador, sem a necessidade de conhecimento avançado em desenvolvimento web.
Como funciona o Shiny Python?
No núcleo do Shiny Python estão dois componentes essenciais:
- UI (Interface de Usuário): A parte do aplicativo que o usuário vê e interage. Usando componentes prontos, como botões, caixas de texto, gráficos e, agora, interfaces de chat, é possível construir interfaces dinâmicas e responsivas.
- Server (Servidor): Onde a lógica do aplicativo reside. É aqui que você processa as entradas dos usuários, manipula dados e gera saídas, como gráficos ou respostas automatizadas em um chatbot.
Potencial e Aplicações do Shiny Python
O Shiny Python oferece uma gama de possibilidades para diferentes áreas:
- Visualização de Dados: Crie dashboards interativos que respondem em tempo real a mudanças nos dados, permitindo uma análise dinâmica.
- Machine Learning: Integre modelos de machine learning treinados em Python diretamente na interface. O usuário pode fazer previsões em tempo real, modificar parâmetros e visualizar os resultados.
- Ferramentas de Negócios: Desde relatórios dinâmicos até calculadoras de risco e retorno, o Shiny Python oferece flexibilidade para empresas que precisam de soluções personalizadas baseadas em dados.
O Componente Chat
Uma das mais recentes e interessantes adições ao Shiny Python é o componente de Chat. Com ele, é possível construir interfaces de chat onde os usuários podem interagir diretamente com o aplicativo, simulando um atendimento ao cliente automatizado ou utilizando IAs generativas para fornecer respostas mais complexas e contextualizadas.
Com o Chat, é possível:
- Criar bots de conversação integrados a modelos de IA, como OpenAI, Gemini, e LangChain.
- Desenvolver interfaces onde o usuário insere texto, faz perguntas ou solicita ações, e o backend responde com base em algoritmos de machine learning ou repositórios de conhecimento.
- Integrar modelos generativos que aprendem com as interações e geram respostas sob demanda, utilizando funções de streaming para respostas mais fluidas.
Com a flexibilidade do Shiny Python, essas interações podem ser personalizadas, ajustadas e integradas a outras ferramentas, como APIs de terceiros, bases de dados, ou até mesmo sistemas de recomendação.
Como funciona o módulo Chat
do Shiny Python
IA disponíveis
O módulo Chat
do Shiny Python é compatível com diversas IAs generativas, como:
- OpenAI
- Gemini
- LangChain
- Anthropic
Essas IAs podem ser integradas para oferecer respostas instantâneas aos usuários do chatbot.
Principais funções e seus usos
chat.ui()
: Define a interface de chat.@chat.on_user_submit
: Define uma função assíncrona que processa o input do usuário.chat.append_message()
: Adiciona uma mensagem ao chat.chat.append_message_stream()
: Utiliza o modo streaming para adicionar mensagens de forma contínua.chat.messages()
: Retorna as mensagens do chat.
Essas funções permitem personalizar o comportamento do chatbot, desde a coleta de mensagens até a resposta da IA.
Criando um Chatbot usando Gemini
Agora, vamos criar um chatbot integrado à IA Gemini. Siga os passos abaixo:
1° Passo: Configurando o ambiente
Utilize o comando abaixo para gerar o template de um chatbot com IA:
shiny create --template chat-ai-gemini
2° Passo: Integrando o API Key
Obtenha a chave da API da Gemini e insira no arquivo app.py
, seguindo as instruções fornecidas no topo do arquivo.
3° Passo: Definindo a interface
No seu arquivo app.py
você pode definir a interface que desejar, entretanto, por padrão, a seguinte interface é criada:
from app_utils import load_dotenv
from google.generativeai import GenerativeModel
from shiny.express import ui
# Either explicitly set the GOOGLE_API_KEY environment variable before launching the
# app, or set them in a file named `.env`. The `python-dotenv` package will load `.env`
# as environment variables which can later be read by `os.getenv()`.
load_dotenv()
llm = GenerativeModel()
# Set some Shiny page options
ui.page_opts(
title="Hello Google Gemini Chat",
fillable=True,
fillable_mobile=True,
)
# Create and display empty chat
chat = ui.Chat(id="chat")
chat.ui()
# Define a callback to run when the user submits a message
@chat.on_user_submit
async def _():
# Get messages currently in the chat
contents = chat.messages(format="google")
# Generate a response message stream
response = llm.generate_content(
contents=contents,
stream=True,
)
# Append the response stream into the chat
await chat.append_message_stream(response)
4° Passo: Testando e rodando o chatbot
Rode o comando abaixo para iniciar o servidor:
shiny run app.py
Isso irá abrir o aplicativo em seu navegador, onde você poderá interagir com o chatbot usando a IA Gemini.
5° Passo (extra): Adicionando contexto ao chatbot
É possível adicionar contexto e instruções para a AI definindo o parâmetro messages
na função chat.messages
. O código abaixo exemplifica como usar o parâmetro, dado que é necessário usar uma lista com um dicionário, definindo a chave com user
, se o usuário é o assistente, o sistema ou usuário. E outra chave com content
definindo a instrução para o Chatbot.
Exemplo:
chat = ui.Chat(id="chat", messages = [{'user' : 'assistant',
'content' : """Oi! Eu sou o Chatbot da Análise Macro e estou aqui para te ajudar com
Data Science usando as linguagens R, Python e SQL
para Modelagem e Previsão, Séries Temporais, Econom
Tenha acesso ao código e suporte desse e de mais 500 exercícios no Clube AM!
Quer o código desse e de mais de 500 exercícios de análise de dados com ideias validadas por nossos especialistas em problemas reais de análise de dados do seu dia a dia? Além de acesso a vídeos, materiais extras e todo o suporte necessário para você reproduzir esses exercícios? Então, fale com a gente no Whatsapp e veja como fazer parte do Clube AM, clicando aqui.