DEV Community

Diego
Diego

Posted on

Tornando Código Aberto: A Arquitetura Cognitiva por trás do Roberto Bot

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

Github

Sinta-se à vontade para abrir issues, sugerir melhorias ou apenas analisar como a "preguiça" do Roberto foi programada.

Top comments (0)