Arquitetura de 5 agentes, colisão de cadeias de pensamento e modelos de sentimento
O BettaFish implementa uma arquitetura de 5 agentes especializados que operam como um pipeline cooperativo: (1) QueryEngine recebe a pergunta do usuário e a decompõe em sub-queries otimizadas para busca - por exemplo, "impacto da IA na educação brasileira" vira ["IA educação Brasil tendências", "edtech Brasil 2024", "professores opinião IA sala de aula"]. (2) MediaEngine executa web crawling assíncrono nas sub-queries, coletando dados de múltiplas fontes com deduplicação. (3) InsightEngine analisa os dados coletados, identificando padrões, contradições e lacunas de informação. (4) ForumEngine promove debate entre perspectivas divergentes para stress-test das conclusões do InsightEngine. (5) ReportEngine gera o relatório final consolidando dados, insights e resultado do debate.
A arquitetura de 5 agentes é um caso de estudo em design de sistemas multi-agente. Cada agente tem responsabilidade única (Single Responsibility), comunica via shared state (não mensagens diretas), e pode ser substituído independentemente. Este padrão é replicável para outros domínios.
O ForumEngine é o componente mais inovador do BettaFish. Ele implementa "chain-of-thought collision" - um mecanismo onde múltiplos agentes com perspectivas divergentes debatem uma conclusão, cada um expondo seu raciocínio completo (chain-of-thought). O processo: (1) O Orchestrator cria N participantes com perspectivas designadas (otimista, pessimista, cético, técnico, etc.). (2) Na Rodada 1, cada participante apresenta sua análise independente. (3) Nas rodadas subsequentes, cada participante lê os argumentos dos outros e responde: concordando com evidência, refutando com contra-evidência, ou refinando sua posição. (4) O debate continua até convergência (posições estabilizam) ou até max_rounds. (5) Um moderador LLM sintetiza o debate em: pontos de consenso, pontos de dissenso, e nível de confiança por conclusão.
O ForumEngine é o que diferencia o BettaFish de sistemas single-agent. Um agente sozinho produz uma perspectiva; o debate revela incertezas, contradições e nuances que um agente isolado nunca capturaria. É a diferença entre um artigo de opinião e um painel de especialistas.
A comunicação entre os 5 agentes do BettaFish segue o padrão publish-subscribe (pub-sub): cada agente publica suas conclusões em um shared log (um registro central), e os outros agentes se inscrevem para receber atualizações quando há novas entradas relevantes para seu trabalho. Um moderador LLM atua como filtro: ele lê cada nova publicação e decide se ela (a) deve ser encaminhada a outros agentes, (b) é redundante e deve ser descartada, ou (c) indica que o debate não está progredindo e precisa de nova direção. Este padrão desacopla os agentes - nenhum agente precisa saber da existência dos outros, apenas do log compartilhado.
O padrão pub-sub com moderação LLM resolve dois problemas clássicos de sistemas multi-agente: (1) acoplamento - adicionar ou remover agentes não exige mudanças nos existentes; (2) degeneração - sem moderação, agentes tendem a concordar vazio ou debater em círculos. O moderador LLM mantém o debate produtivo.
O BettaFish implementa 5 modelos de análise de sentimento intercambiáveis via plugin system: (1) Transformer pré-treinado (cardiffnlp/twitter-roberta-base-sentiment) - baseline rápido, ~85% accuracy em inglês. (2) BERT + LoRA fine-tuning - BERT base adaptado com Low-Rank Adaptation (rank=8, alpha=16) em dados do domínio, ~91% accuracy, requer GPU para fine-tuning. (3) GPT-2 + LoRA - modelo generativo adaptado para classificação, útil quando se quer tanto label quanto justificativa textual. (4) Qwen3 via API - modelo multilíngue que funciona bem em português sem fine-tuning, custo por chamada. (5) SVM + TF-IDF - modelo clássico de machine learning, sem GPU, sem dependência de API, ~80% accuracy, latência < 1ms.
Análise de sentimento é essencial para medir polarização, mapear opinião pública e detectar mudanças de humor em simulações. Ter 5 opções permite otimizar para cada cenário: SVM para prototipagem rápida, BERT LoRA para produção com GPU, Qwen3 para análise multilíngue.
O pipeline completo do BettaFish do input ao output: (1) Query Stage (~30s): QueryEngine decompõe a pergunta em 3-7 sub-queries otimizadas. (2) Collection Stage (~2-5min): MediaEngine faz crawling assíncrono, coleta 50-200 documentos, deduplica e filtra por relevância. (3) Analysis Stage (~1-2min): InsightEngine identifica padrões, contradições e gaps nos dados. (4) Forum Stage (~3-8min, configurável): N ciclos de debate entre 3-5 perspectivas, com moderação LLM. (5) IR Consolidation (~30s): resultados do debate são ranqueados por evidência e consenso. (6) Rendering Stage (~1-2min): ReportEngine gera Markdown estruturado com dados, citações e visualizações. Total: 8-18 minutos para uma query completa em modo multi-agente.
Entender o pipeline permite: diagnosticar gargalos (Forum Stage tipicamente domina), otimizar custos (reduzir ciclos de forum para queries simples), e customizar estágios individuais sem afetar o resto do pipeline.
O BettaFish suporta 4 modos de execução selecionáveis via flag --mode: (1) full - Pipeline completo com todos os 5 engines, máxima qualidade, 8-18 minutos, custo mais alto. (2) single - Apenas 1 engine (ex: --mode single --engine insight), útil para debug e testes de componentes individuais. (3) crawl-only - Apenas Collection stage, gera dataset de documentos sem análise LLM, útil para preparar dados offline ou para pipelines customizados. (4) report-only - Usa dados pré-coletados (de um crawl-only anterior ou de uma run anterior cached), regenera relatório com parâmetros diferentes sem recoletar dados, útil para iteração rápida no formato do relatório.
O modo correto para cada situação otimiza custo e tempo drasticamente. Debug em modo full desperdiça dinheiro; produção em modo single perde qualidade. Crawl-only + report-only separados permitem workflow de "coletar uma vez, analisar muitas vezes".