Initial implementation of MultiAgentsAI featuring: - Dynamic agent configuration via environment variables - SQLite database and JSON daily context storage - OpenRouter API integration for multiple AI models - Telegram bot with commands for control, history, and interaction - Autonomous conversation loop with pause/resume and agent silencing - Model testing and statistics commands
132 lines
4.9 KiB
Markdown
Executable File
132 lines
4.9 KiB
Markdown
Executable File
# MultiAgentsAI
|
|
|
|
> **Autor:** Marco Costa — [www.syspanel.com.br](https://www.syspanel.com.br)
|
|
> **Criado em:** Setembro de 2026
|
|
|
|
Sistema de **múltiplos agentes de IA** conversando autonomamente entre si, com cada agente usando seu próprio provedor e modelo configurado no `.env`. As conversas são enviadas em tempo real via **Telegram Bot** e armazenadas em **SQLite** + **JSON diário**.
|
|
|
|
---
|
|
|
|
## 🚀 Como Usar
|
|
|
|
### Pré-requisitos
|
|
- Python 3.10+
|
|
- Conta na [OpenRouter.ai](https://openrouter.ai) com API Key
|
|
|
|
### 1. Configurar `.env`
|
|
|
|
Edite o arquivo `.env` antes de executar:
|
|
|
|
```bash
|
|
OPENROUTER_API_KEY=sua_chave_openrouter_aqui
|
|
```
|
|
|
|
Os demais campos já vêm pré-configurados com os modelos solicitados:
|
|
| Agente | Modelo |
|
|
|---|---|
|
|
| NemotronAgent | nvidia/nemotron-3-ultra-550b-a55b:free |
|
|
| LagunaAgent | poolside/laguna-s-2.1:free |
|
|
| LingAgent | inclusionai/ling-3.0-flash-fin:free |
|
|
| LFMEmbeddingAgent | liquid/lfm-2.5-embedding-350m:free |
|
|
|
|
### 2. Executar
|
|
|
|
```bash
|
|
bash iniciar.sh
|
|
```
|
|
|
|
O script cria o ambiente virtual, instala as dependências e inicia o sistema automaticamente.
|
|
|
|
Pressione **Ctrl+C** para parar.
|
|
|
|
---
|
|
|
|
## 🤖 Agentes
|
|
|
|
Cada agente:
|
|
- Possui nome e modelo próprio definidos no `.env`.
|
|
- Recebe o **contexto completo do dia** a cada rodada, lendo do arquivo JSON diário + SQLite.
|
|
- Responde de forma autônoma, sem repetir mensagens anteriores.
|
|
- Suas mensagens são enviadas ao **canal/grupo Telegram** configurado.
|
|
|
|
Para adicionar/remover agentes, basta editar o `.env` adicionando ou removendo as variáveis `AGENT_NAME_N` e `AGENT_MODEL_N`.
|
|
|
|
---
|
|
|
|
## 📂 Estrutura do Projeto
|
|
|
|
```
|
|
app/
|
|
├── .env # Configurações (agentes, chaves, delays)
|
|
├── requirements.txt # Dependências Python
|
|
├── iniciar.sh # Script de inicialização
|
|
├── README.md # Este arquivo
|
|
├── LICENSE # Licença GPL v3
|
|
├── RULES.md # Regras para IAs codificarem no projeto
|
|
├── config.py # Carrega .env e parseia agentes dinamicamente
|
|
├── database.py # SQLite: salva e busca mensagens
|
|
├── context_manager.py # Gerencia Contexts/conversas_YYYY-MM-DD.json
|
|
├── ai_agent.py # Classe AIAgent — chama API OpenRouter
|
|
├── telegram_bot.py # Bot Telegram com comandos
|
|
├── orchestrator.py # Loop principal dos agentes
|
|
├── orchestrator_shared.py # Referência global do orchestrator
|
|
├── main.py # Entry point
|
|
└── Contexts/ # JSONs diários das conversas
|
|
```
|
|
|
|
---
|
|
|
|
## 📡 Comandos do Telegram
|
|
|
|
| Comando | Descrição |
|
|
|---|---|
|
|
| `/start` | Exibe informações do sistema |
|
|
| `/status` | Agentes ativos, mensagens de hoje, estado (pausado/ativo) |
|
|
| `/historico` | Últimas 30 mensagens de hoje |
|
|
| `/agentes` | Lista todos os agentes e seus modelos |
|
|
| `/participar [msg]` | Envia uma mensagem como usuário; todos os agentes respondem |
|
|
| `/pausar` | Pausa o envio automático de mensagens |
|
|
| `/continuar` | Retoma o envio automático |
|
|
| `/modelos` | Lista todos os modelos gratuitos disponíveis no OpenRouter |
|
|
| `/testar [modelo]` | Testa se um modelo está funcionando |
|
|
| `/tema [assunto]` | Define um tema/foco para a conversa dos agentes |
|
|
| `/limparchat` | Limpa o histórico de hoje (JSON + SQLite) |
|
|
| `/agente [nome] [msg]` | Envia mensagem para um agente específico |
|
|
| `/estatisticas` | Estatísticas do banco (total de msgs, por agente) |
|
|
| `/buscar [termo]` | Busca mensagens no histórico |
|
|
| `/delay [s]` | Altera o delay entre mensagens automáticas (mín. 5s) |
|
|
| `/idioma [código]` | Altera o idioma das conversas (ex: `pt_BR`, `en_US`) |
|
|
| `/silenciar [nome]` | Silencia/desilencia um agente do loop automático |
|
|
| `/help` | Ajuda com todos os comandos |
|
|
|
|
---
|
|
|
|
## 💾 Armazenamento
|
|
|
|
- **`agents.db`** — Banco SQLite com tabela `conversations` (id, data, agente, mensagem, criado_em).
|
|
- **`Contexts/conversas_YYYY-MM-DD.json`** — Arquivo JSON diário com todas as mensagens do dia, usado como contexto pelos agentes para não perderem o fio da conversa.
|
|
|
|
---
|
|
|
|
## ⚙️ Variáveis do `.env`
|
|
|
|
| Variável | Descrição | Padrão |
|
|
|---|---|---|
|
|
| `TELEGRAM_BOT_TOKEN` | Token do bot Telegram | — |
|
|
| `TELEGRAM_CHAT_ID` | Chat ID do grupo/canal Telegram | — |
|
|
| `OPENROUTER_API_KEY` | Sua chave de API OpenRouter | — |
|
|
| `OPENROUTER_BASE_URL` | URL base da API | `https://openrouter.ai/api/v1` |
|
|
| `AGENT_NAME_N` / `AGENT_MODEL_N` | Nome e modelo do agente N | — |
|
|
| `CONVERSATION_DELAY_SEGUNDOS` | Delay entre mensagens (s) | `30` |
|
|
| `MAX_CONTEXT_MESSAGES` | Máximo de mensagens no contexto | `50` |
|
|
| `MAX_TOKENS` | Máximo de tokens por resposta (0 = ilimitado) | `0` |
|
|
| `DB_PATH` | Caminho do SQLite | `agents.db` |
|
|
| `CONTEXTS_DIR` | Pasta dos JSONs diários | `Contexts` |
|
|
| `CONVERSATION_LANGUAGE` | Idioma das conversas | `pt_BR` |
|
|
|
|
---
|
|
|
|
## 📄 Licença
|
|
|
|
GNU General Public License v3.0 — veja o arquivo [LICENSE](LICENSE).
|