Introdução
Hoje é um dia importante na minha jornada como desenvolvedor. Estou tornando público o código-fonte do Roberto Bot, um projeto que começou como um experimento simples e evoluiu para uma aplicação complexa de agentes autônomos.
Diferente de bots tradicionais baseados em árvores de decisão rígidas ou comandos prefixados, o Roberto foi projetado para simular uma personalidade específica (um adolescente apático e sarcástico) utilizando Grandes Modelos de Linguagem (LLMs). O objetivo não era apenas criar um chatbot, mas implementar uma arquitetura que permitisse "raciocínio" antes da resposta.
O Problema dos Bots Tradicionais
A maioria dos bots de Discord opera no modelo Input -> Comando -> Output. Se o usuário digita !oi, o bot responde Olá. Embora funcional, isso limita a naturalidade.
Para o Roberto, eu queria algo dinâmico. O desafio técnico era: como manter uma persona consistente, gerenciar memória de contexto e responder a inputs multimodais (texto e imagem) sem perder a estabilidade ou cair em loops de repetição?
A Solução: Arquitetura de "Cadeia de Pensamento"
A principal inovação do projeto reside no módulo brain.py. Em vez de enviar a mensagem do usuário diretamente para a API de IA, o sistema realiza um pré-processamento cognitivo.
O fluxo de dados segue estas etapas:
- Ingestão e Contexto: O bot captura a mensagem e enriquece o payload com metadados cruciais: hora do dia (para determinar o "humor" temporal), histórico recente do canal (via SQLite) e lista de participantes ativos.
- Prompt de Sistema Dinâmico: Um prompt é montado em tempo real, instruindo o modelo não apenas a responder, mas a analisar a intenção do usuário.
- Segurança Cognitiva: Implementei uma camada de defesa contra Prompt Injection. Se o sistema detecta tentativas de manipulação de regras (ex: "ignore suas instruções"), ele intercepta o comando e gera uma resposta de recusa dentro da persona, sem quebrar a imersão.
- Anti-Repetição: Um algoritmo compara matematicamente a similaridade entre a entrada e a saída proposta para evitar o "efeito papagaio" comum em LLMs.
Stack Tecnológica
O projeto foi construído sobre uma base sólida para garantir escalabilidade e manutenibilidade:
- Linguagem: Python 3.10+
- Interface: Discord.py 2.0 (assíncrono)
- Inteligência: Integração com Arcee AI (free) via OpenRouter.
- Persistência: Sistema híbrido de memória (Variáveis em memória para curto prazo e SQLite para longo prazo).
- DevOps: Curiosamente, criei um script (roberto_blogger.py) que lê os commits técnicos e gera automaticamente um changelog sarcástico no Dev.to a cada nova release.
Por que Código Aberto?
Decidi liberar o código (Licença MIT) porque acredito que o Roberto é um excelente estudo de caso para desenvolvedores que desejam ir além do básico em bots de Discord.of Thought, Context Awareness e integração multimodal de forma acessível.
Tenho muito orgulho da complexidade que consegui abstrair em uma interface que, para o usuário final, parece apenas um "bot preguiçoso".
O Código
Você pode acessar o repositório completo, verificar a estrutura do banco de dados e contribuir com o projeto no GitHub:
Sinta-se à vontade para abrir issues, sugerir melhorias ou apenas analisar como a "preguiça" do Roberto foi programada.
Top comments (0)