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