Como criar um Assistente de IA com ShinyChat Python

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 ShinyChat Python, que permite construir interfaces de chat interativas e integrá-las a Modelos de Linguagem (LLMs), 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

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.

shiny python

Como funciona o Shiny Python?

No núcleo do Shiny Python estão dois componentes essenciais:

  1. 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.
  2. 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 OpenAIGemini, 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."""}]) shinychat python

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 R. Aprenda do ZERO a coletar, tratar, construir modelos e apresentar dados econômicos e financeiros com o uso de Python e IA.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Estamos em pleno emprego no mercado de trabalho?

Este artigo investiga se o mercado de trabalho brasileiro atingiu o nível de pleno emprego, utilizando uma estimativa da NAIRU (Non-Accelerating Inflation Rate of Unemployment) baseada na metodologia de Ball e Mankiw (1997). Através de uma modelagem em Python que unifica dados históricos da PME e PNAD Contínua com as expectativas do Boletim Focus, comparamos a taxa de desocupação corrente com a taxa neutra estrutural. A análise visual e quantitativa sugere o fechamento do hiato de desemprego, sinalizando potenciais pressões inflacionárias. O texto detalha o tratamento de dados, a aplicação do Filtro Hodrick-Prescott e discute as vantagens e limitações da metodologia econométrica adotada.

Como se comportou a Taxa de Participação no Brasil nos últimos anos? Uma Análise com a Linguagem R

O objetivo deste estudo é analisar a evolução da Taxa de Participação no Brasil, contrastando-a com a Taxa de Desocupação e decompondo suas variações para entender os vetores (populacionais e de força de trabalho) que influenciam o comportamento atual do mercado de trabalho. Para isso, utilizamos a linguagem R em todo o processo, desde a coleta e o tratamento das informações até a visualização dos resultados, empregando os principais pacotes disponíveis no ecossistema da linguagem.

Como se comportou a inflação de serviços no Brasil nos últimos anos?

Uma análise econométrica da inflação de serviços no Brasil comparando os cenários de 2014 e 2025. Utilizando uma Curva de Phillips própria e estimativas da NAIRU via filtro HP, investigamos se o atual desemprego nas mínimas históricas repete os riscos do passado. Entenda como as expectativas de inflação e o hiato do desemprego explicam o comportamento mais benigno dos preços atuais em relação à década anterior.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.