Implement local database storage to automatically save all sent insights with metadata including topic, content, AI provider, model, and timestamp. Add database module with initialization and query functions, integrate with main job flow, and update documentation with database schema details.
97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
# ThorAgentIA
|
|
|
|
Sistema automatizado de envio de insights via Telegram, utilizando inteligência artificial para gerar conteúdo sobre diversos temas relevantes para negócios, marketing, desenvolvimento pessoal e gestão empresarial.
|
|
|
|
## Funcionalidades
|
|
|
|
- Gera insights profundos em português brasileiro sobre temas pré-definidos.
|
|
- Envia automaticamente os insights para um **canal do Telegram**.
|
|
- Opera em horários configuráveis (padrão: 07:00 às 22:00).
|
|
- Funciona de segunda a domingo (dias configuráveis).
|
|
- Intervalo entre envios configurável.
|
|
- Seleção aleatória de tópicos cadastrados.
|
|
- Suporte a múltiplos provedores de IA: OpenRouter, LlamaCPP local ou OpenAI.
|
|
- Todos os insights são salvos automaticamente em um banco de dados SQLite local (`insights.db`).
|
|
|
|
## Pré-requisitos
|
|
|
|
- Python 3.10 ou superior
|
|
- Chave de API de IA: OpenRouter, LlamaCPP local ou OpenAI
|
|
- Bot criado no Telegram via BotFather
|
|
- Sistema Linux (Debian 12 recomendado)
|
|
|
|
## Configuração
|
|
|
|
1. **Configure o arquivo `.env`** com seus dados:
|
|
|
|
```env
|
|
TELEGRAM_BOT_TOKEN=seu_token_bot_telegram
|
|
TELEGRAM_CHAT_ID=seu_chat_id
|
|
INTERVAL_MINUTES=60
|
|
START_HOUR=7
|
|
END_HOUR=22
|
|
TOPICS=Marketing,Negócios,...
|
|
|
|
# Provedor de IA (openrouter | llamacpp | openai)
|
|
DEFAULT_AI_PROVIDER=openrouter
|
|
|
|
# Modelo de IA (depende do provedor escolhido)
|
|
DEFAULT_AI_MODEL=minimax/minimax-m3:free
|
|
|
|
# Chave de API do provedor escolhido
|
|
OPENROUTER_API_KEY=sua_chave_openrouter
|
|
# LLAMACPP_API_KEY=not-needed # se usar LlamaCPP
|
|
# OPENAI_API_KEY=sua_chave_openai # se usar OpenAI direto
|
|
```
|
|
|
|
2. **Crie um bot no Telegram** via @BotFather e obtenha o token.
|
|
|
|
3. **Obtenha o identificador do canal** após adicionar o bot como administrador no canal. Use o username do canal no formato `@nome_do_canal` ou o ID numérico `-100xxxxxxxxxx`.
|
|
|
|
## Instalação
|
|
|
|
```bash
|
|
chmod +x iniciar.sh
|
|
./iniciar.sh
|
|
```
|
|
|
|
## Execução
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
python3 main.py
|
|
```
|
|
|
|
## Variáveis de Ambiente
|
|
|
|
| Variável | Descrição | Padrão |
|
|
|---|---|---|
|
|
| `DEFAULT_AI_PROVIDER` | Provedor de IA (`openrouter`, `llamacpp`, `openai`) | `openrouter` |
|
|
| `DEFAULT_AI_MODEL` | Nome do modelo no provedor escolhido | obrigatório |
|
|
| `OPENROUTER_API_KEY` | Chave da API OpenRouter | opcional |
|
|
| `LLAMACPP_BASE_URL` | URL base da API LlamaCPP local | `http://localhost:8080/v1/` |
|
|
| `LLAMACPP_API_KEY` | Chave da API LlamaCPP | `not-needed` |
|
|
| `OPENAI_API_KEY` | Chave da API OpenAI | opcional |
|
|
| `TELEGRAM_BOT_TOKEN` | Token do bot Telegram | obrigatório |
|
|
| `TELEGRAM_CHAT_ID` | Username do canal ou ID numérico | obrigatório |
|
|
| `INTERVAL_MINUTES` | Intervalo entre envios (minutos) | 60 |
|
|
| `START_HOUR` | Hora inicial de funcionamento | 7 |
|
|
| `END_HOUR` | Hora final de funcionamento | 22 |
|
|
| `DAYS_OF_WEEK` | Dias permitidos (1=Seg, 7=Dom) | 1,2,3,4,5,6,7 |
|
|
| `TOPICS` | Lista de tópicos separados por vírgula | ver `.env` |
|
|
| `LANGUAGE` | Idioma dos insights | pt-BR |
|
|
| `MIN_LINES` | Mínimo de linhas por insight | 20 |
|
|
|
|
### Banco de dados SQLite
|
|
|
|
Todos os insights enviados são registrados automaticamente no arquivo `insights.db`, na mesma pasta do projeto. A tabela `insights` armazena:
|
|
|
|
| Campo | Descrição |
|
|
|---|---|
|
|
| `id` | Identificador único |
|
|
| `topic` | Tópico do insight |
|
|
| `content` | Conteúdo completo do insight |
|
|
| `provider` | Provedor de IA utilizado |
|
|
| `model` | Modelo utilizado |
|
|
| `sent_at` | Data e hora do envio |
|