Files
SyspanelMultiAgentsAI/README.md
T
marcocosta10000 67e8df36ce feat: add complete multi-agent AI system with Telegram bot
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
2026-10-17 19:25:05 -03:00

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).