Criando IA Assistant usando Shiny no Python

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

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:

  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 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 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 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.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

As diferentes formas de avaliar o erro de um modelo de previsão

Existem tantas siglas para métricas de desempenho de modelos preditivos que é fácil se perder na sopa de letrinhas. Neste artigo, fornecemos uma visão geral das principais métricas para avaliar e comparar modelos de regressão e classificação, usando exemplos com dados em Python.

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.