Como construí um bot anti-golpe com dados sujos: detector, tipificador e armadilhas pelo caminho
OpenAI
O autor descreve a construção de um bot anti-golpe para chats de criptomoedas usando um classificador para detectar solicitações de ajuda e um tipificador para determinar o tipo de problema. As principais lições incluem usar aprendizado ativo para melhorar o conjunto de dados, congelar um conjunto dourado para métricas confiáveis e evitar complexidade desnecessária.
O projeto aborda o problema de golpistas em salas de bate-papo de criptomoedas que leem mensagens públicas e depois enviam mensagens privadas aos usuários pedindo ajuda. O bot detecta solicitações públicas de ajuda e responde com um aviso e um link para o suporte genuíno. O primeiro desafio foi construir um classificador sem um conjunto de dados rotulado. A coleta inicial de dados baseada em regex limitou a capacidade do modelo de generalizar para frases não vistas. O aprendizado ativo foi usado para adicionar iterativamente exemplos incertos, aumentando o conjunto positivo de 830 para 1176. Quase duplicatas foram mantidas para melhorar a robustez a erros de digitação e gírias. O critério de classificação mudou de 'solicitação de ajuda' para 'apropriado para vacina' para evitar acionar em perguntas simples. A validação cruzada em um conjunto de dados em mudança deu métricas enganosas; um conjunto dourado congelado de 245 mensagens revelou melhorias reais, com recall subindo de 0,50 para 0,78. Um teste separado com tráfego real mostrou precisão ajustável de 0,74 a 0,87, dependendo do limite. O tipificador (tipo de problema) foi mantido como uma regressão logística simples para evitar complicações. O sistema usa um único modelo de incorporação multilíngue para o detector e o RAG (Geração Aumentada por Recuperação), um compromisso que economizou recursos, mas pode limitar o recall do RAG. A arquitetura é um serviço FastAPI separado com SQLite, chamado por um bot de produção via fire-and-forget, com um modo de sombra para teste seguro.
Fonte: Habr — хаб ML —
original
