22 pontos por xguru 2024-10-07 | 1 comentários | Compartilhar no WhatsApp
  • A maioria das empresas possui dados valiosos internamente
    • Dados analíticos sobre como os clientes interagem com o produto
    • Logs de auditoria das ações realizadas dentro do produto, permitindo identificar quando um recurso foi ativado
  • Mesmo startups pequenas possuem dados úteis
    • Por meio dos tickets de suporte, é possível identificar as áreas do produto que mais precisam de atenção, além de incluir solicitações de funcionalidades
  • Antes dos LLMs (modelos de linguagem de grande porte), era difícil extrair insights a partir dos dados
    • Era necessário treinar um modelo próprio, o que incluía engenharia de atributos, NLP, seleção de modelo e, o mais difícil, coleta de dados de treinamento
  • Agora isso pode ser feito com um prompt simples
    • Exemplo de prompt: "Classifique os tickets a seguir nas seguintes categorias: Uptime, Security, Bug, Feature Request, Other"
    • Como resultado, cria-se um classificador simples que, com pequenos ajustes, já oferece um desempenho adequado
  • Usando Streamlit, é possível criar facilmente uma ferramenta interna para que qualquer pessoa experimente aplicar LLMs a um conjunto de dados

O que vamos criar

  • O usuário poderá fazer o seguinte
    • Fazer login
    • Escrever um prompt: para um sistema de classificação de tickets
    • Testar o prompt em alguns dados de exemplo e verificar a saída, incluindo erros
    • Salvar o prompt para que outras pessoas possam usá-lo

Breve introdução ao Streamlit

  • Streamlit é uma ótima ferramenta para criar rapidamente aplicações de dados
    • No Streamlit, é possível escrever uma aplicação com código simples
import streamlit as st  
  
prompt = st.text_area(  
    "Prompt to test (use {text} to indicate where the text should be inserted):",  
    "This is an example prompt:\n\n{text}",  
)  
  
prompt_with_data = f"{prompt}".format(  
    text="`Example data to be placed into prompt`"  
)  
  
st.write(prompt_with_data)  
  • Resultado da execução do código: o Streamlit gera automaticamente um frontend interativo
  • Quando o usuário atualiza o texto do prompt em text_area, o restante do código Python é executado novamente automaticamente

Recursos poderosos do Streamlit

  • O Streamlit é uma ferramenta muito poderosa para criar ferramentas interativas, como dashboards
    • É possível usar diversos componentes: renderizar DataFrames do Pandas como tabelas ou acionar ações por meio de botões
    • Ele também oferece carregamento de dados externos, gerenciamento de segredos e utilitários de cache de dados, o que torna a interação com os dados muito mais poderosa

Etapa 1: carregar e visualizar os dados

  • Usar o Streamlit para carregar dados codificados diretamente no código e renderizá-los em uma tabela
  • Informar ao Streamlit como se conectar a um banco de dados PostgreSQL por meio do arquivo .streamlit/secrets.toml
  • Instalar psycopg2-binary e atualizar a função load_data_sample() para carregar dados do PostgreSQL
  • O Streamlit pode se conectar a várias fontes de dados, como Snowflake e Google Sheets
  • Para cache, st.cache_resource é geralmente usado para conexões, e st.cache_data para resultados de consultas custosas

Etapa 2: executar os dados com um prompt

  • Receber um prompt do usuário e aplicá-lo aos dados carregados
  • O prompt deve gerar um JSON válido no formato {"urgent": false, "categories": ["CategoryA", "CategoryB"]}
  • Transformar o DataFrame para adicionar as colunas urgent, categories e error (em caso de erro)
  • Colocar em cache as chamadas à OpenAI para economizar tempo e custo
  • Adicionar um botão para executar novamente o prompt nos dados

Etapa 3: adicionar autenticação

  • Usar o PropelAuth para adicionar autenticação ao Streamlit
  • Criar o arquivo propelauth.py para exportar o objeto auth
  • Carregar o usuário no topo do script ou interromper a execução do script
  • Usar o ID do usuário nas consultas de dados para garantir que ele veja apenas os dados aos quais tem acesso

Etapa 4: salvar o prompt

  • Adicionar um botão para que o usuário possa salvar o prompt
  • Carregar a conexão com o banco de dados e inserir o prompt na tabela prompts
  • Salvar o prompt passando o ID do usuário e o prompt como parâmetros

1 comentários

 
xguru 2024-10-07

Eu fiz uma breve apresentação em 2020 chamada Streamlit - transformando facilmente código Python em ferramentas de ML customizadas, e em 2022 a Snowflake adquiriu a Streamlit por $800M.

Há pouco tempo, uma ferramenta feita com Streamlit também apareceu no Show GN.
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker