Introdução
ShinyChat Python
, que permite construir interfaces de chat interativas e integrá-las a modelos de IA generativa, como OpenAI, Gemini, LangChain, entre outros.Para obter o código e o tutorial deste exercício faça parte do Clube AM e receba toda semana os códigos em R/Python, vídeos, tutoriais e suporte completo para dúvidas.
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 ShinyChat Python
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 ShinyChat Python, é 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 ShinyChat Python
IA disponíveis
O módulo Chat
do Shiny Python é compatível com diversas IAs generativas, como:
- OpenAI
- Gemini
- LangChain
- Anthropic
- Entre outros
Essas IAs podem ser integradas para oferecer respostas instantâneas aos usuários do chatbot.
Principais funções e usos do ShinyChat Python
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 + ShinyChat Python
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, Econometria, Machine Learning, Macroeconomia, Macroeconometria e Análise de Demonstrações Contábeis."""}])
Conclusão
O Shiny Python, com a recente adição do componente ShinyChat Python, emerge como uma ferramenta poderosa e acessível para o desenvolvimento de aplicações web interativas, especialmente chatbots. A facilidade de integração com modelos de IA generativa, como o Gemini, exemplifica como é possível construir interfaces conversacionais robustas e funcionais com poucas linhas de código. Essa capacidade de transformar análises de dados e modelos de machine learning em ferramentas interativas e acessíveis via navegador democratiza o acesso à inteligência artificial, permitindo que empresas e desenvolvedores criem soluções personalizadas para visualização de dados, machine learning e automação de tarefas.
Há ainda, o uso e implementação da biblioteca Chatlas, que se posiciona como um complemento ideal para o Shiny Python. Enquanto o Shiny oferece a estrutura e a interface para o chatbot, o Chatlas poderia atuar como o "cérebro" por trás da interação, fornecendo uma camada avançada de processamento de linguagem natural e acesso unificado a diversas fontes de dados empresariais.
A integração do Chatlas com um chatbot Shiny Python permitiria que os usuários não apenas conversassem com um modelo de IA genérico, mas sim com seus próprios dados corporativos, fazendo perguntas complexas em linguagem natural e recebendo insights acionáveis diretamente na interface do Shiny. Isso transformaria um chatbot comum em um assistente de dados inteligente e altamente contextualizado, elevando a experiência do usuário e o valor estratégico da aplicação. Mas, essa integração, deixemos em uma postagem futura no blog da Análise Macro.
Quer aprender mais?
Conheça nossa Formação do Zero à Análise de Dados Econômicos e Financeiros usando Python e Inteligência Artificial. Aprenda do ZERO a coletar, tratar, construir modelos e apresentar dados econômicos e financeiros com o uso de Python e IA.