- Add WEB_SEARCH_ENABLED and WEB_SEARCH_MAX_RESULTS config options - Detect search-intent messages via trigger keywords and inject web results into the AI context - Instruct the system prompt to use web search for factual, current, or time-sensitive questions instead of inventing data - Rename uploads directory from `uploadsfiles/` to `workspace/`, updating .gitignore and backup instructions in DEPLOY.md
235 lines
5.4 KiB
Markdown
235 lines
5.4 KiB
Markdown
# PsAgentAI - Deploy em Servidor
|
|
|
|
Deploy como serviço systemd em Debian/Ubuntu para funcionar 24/7 em VPS.
|
|
|
|
---
|
|
|
|
## Pré-requisitos no servidor
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install -y python3 python3-venv python3-pip git ffmpeg
|
|
```
|
|
|
|
Habilite o journal se quiser logs persistentes (opcional):
|
|
|
|
```bash
|
|
sudo apt install -y systemd-journal-remote
|
|
```
|
|
|
|
---
|
|
|
|
## 1) Copie o projeto para o servidor
|
|
|
|
Use git ou scp/rsync. Exemplo com git:
|
|
|
|
```bash
|
|
cd /opt
|
|
sudo git clone <URL_DO_REPOSITORIO> psagentai
|
|
sudo chown -R $USER:$USER /opt/psagentai
|
|
cd /opt/psagentai/app
|
|
```
|
|
|
|
Ajuste o caminho no serviço systemd para o diretório real:
|
|
|
|
```bash
|
|
nano psagentai.service
|
|
# altere /home/marco/PsAgentAI/app para /opt/psagentai/app
|
|
```
|
|
|
|
> O serviço usa `User=marco` por padrão. Crie o usuário se não existir:
|
|
> ```bash
|
|
> sudo useradd -m -s /bin/bash marco || true
|
|
> sudo usermod -aG sudo marco
|
|
> ```
|
|
> Ou edite `User=` no `.service` para o usuário existente do seu VPS.
|
|
|
|
---
|
|
|
|
## 2) Configure o `.env`
|
|
|
|
```bash
|
|
cp .env.example .env # se existir exemplo
|
|
nano .env
|
|
```
|
|
|
|
Preencha obrigatoriamente:
|
|
|
|
- `TELEGRAM_BOT_TOKEN`
|
|
- `TELEGRAM_CHAT_ID`
|
|
- `AI_PROVIDER` (`openrouter`, `stepfun`, `qwencloud` ou `llamacpp`)
|
|
- `DEFAULT_MODEL`
|
|
- pelo menos a chave de IA correspondente ao provider escolhido
|
|
|
|
Ajuste opcionalmente:
|
|
|
|
- `MIN_INTERVAL_MINUTES` / `MAX_INTERVAL_MINUTES`
|
|
- `MIN_MESSAGE_LINES`
|
|
|
|
> Importante: no Telegram, envie `/start` uma vez para o bot antes de ligar o serviço, caso contrário ele não conseguirá enviar mensagens iniciantes.
|
|
|
|
---
|
|
|
|
## 3) Instale as dependências
|
|
|
|
```bash
|
|
sudo apt install -y ffmpeg
|
|
|
|
```bash
|
|
chmod +x iniciar.sh
|
|
./iniciar.sh
|
|
```
|
|
|
|
Esse script cria o `venv`, instala dependências e valida as variáveis do `.env`.
|
|
|
|
Se o comando acima não instalar `ffmpeg` na versão esperada, use também:
|
|
|
|
```bash
|
|
sudo apt install -y ffmpeg
|
|
```
|
|
|
|
> O reconhecimento de voz usa `SpeechRecognition` + `pydub` + `ffmpeg`.
|
|
|
|
---
|
|
|
|
## 4) Instale o serviço systemd
|
|
|
|
```bash
|
|
# caminho absoluto no seu servidor
|
|
sudo nano /etc/systemd/system/psagentai.service
|
|
```
|
|
|
|
Conteúdo mínimo:
|
|
|
|
```ini
|
|
[Unit]
|
|
Description=PsAgentAI
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=marco
|
|
WorkingDirectory=/opt/psagentai/app
|
|
Environment="PATH=/opt/psagentai/app/venv/bin:/usr/local/bin:/usr/bin:/bin"
|
|
ExecStart=/opt/psagentai/app/venv/bin/python3 /opt/psagentai/app/psagentai_agent.py
|
|
Restart=always
|
|
RestartSec=10
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
Ative e inicie:
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable psagentai
|
|
sudo systemctl start psagentai
|
|
```
|
|
|
|
---
|
|
|
|
## 5) Comandos úteis
|
|
|
|
```bash
|
|
# status
|
|
sudo systemctl status psagentai
|
|
|
|
# logs em tempo real
|
|
sudo journalctl -u psagentai -f
|
|
|
|
# reiniciar após atualização
|
|
sudo systemctl restart psagentai
|
|
|
|
# parar
|
|
sudo systemctl stop psagentai
|
|
```
|
|
|
|
---
|
|
|
|
## 6) Atualizações futuras
|
|
|
|
```bash
|
|
cd /opt/psagentai/app
|
|
git pull
|
|
./iniciar.sh
|
|
sudo systemctl restart psagentai
|
|
```
|
|
|
|
---
|
|
|
|
## 7) Múltiplos usuários / VPSs
|
|
|
|
Cada instância do sistema é independente por chat ID do Telegram.
|
|
|
|
Para cada novo usuário/VPS:
|
|
|
|
1. Crie o bot via @BotFather (`/newbot`) e pegue o token.
|
|
2. Copie o projeto em um diretório separado, por exemplo `/opt/psagentai-user2`.
|
|
3. Crie um `.env` próprio com `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` e suas chaves de IA.
|
|
4. Instale dependências com `./iniciar.sh`.
|
|
5. Crie um serviço systemd separado, ex: `psagentai-user2.service`, apontando para esse diretório.
|
|
6. Habilite e inicie.
|
|
|
|
Nomes recomendados para evitar conflito:
|
|
|
|
- `/opt/psagentai-user1/`, `/opt/psagentai-user2/`
|
|
- `psagentai-user1.service`, `psagentai-user2.service`
|
|
|
|
---
|
|
|
|
## 8) Variáveis do `.env`
|
|
|
|
| Variável | Obrigatória | Descrição |
|
|
|---|---|---|
|
|
| `AI_PROVIDER` | não | Provider preferencial: `openrouter`, `stepfun`, `qwencloud` ou `llamacpp` |
|
|
| `TELEGRAM_BOT_TOKEN` | sim | Token do bot do Telegram |
|
|
| `TELEGRAM_CHAT_ID` | sim | Chat ID do usuário |
|
|
| `DEFAULT_MODEL` | sim | Modelo de IA padrão |
|
|
| `OPENROUTER_API_KEY` | 1 das chaves | Chave OpenRouter |
|
|
| `STEPFUN_API_KEY` | 1 das chaves | Chave StepFun |
|
|
| `QWENCLOUD_API_KEY` | 1 das chaves | Chave QwenCloud |
|
|
| `MIN_INTERVAL_MINUTES` | não | Intervalo mínimo para mensagens proativas |
|
|
| `MAX_INTERVAL_MINUTES` | não | Intervalo máximo para mensagens proativas |
|
|
| `MIN_MESSAGE_LINES` | não | Mínimo de linhas por mensagem do agente |
|
|
| `AUTO_ENRICH_EVERY` | não | Enriquece perfil a cada N mensagens |
|
|
| `AUTO_IMPROVE_EVERY` | não | Melhoria automática a cada N mensagens |
|
|
| `UPLOAD_CONTEXT_MAX_CHARS` | não | Limite de caracteres do upload enviado para a IA (`0` = sem limite) |
|
|
|
|
---
|
|
|
|
## Comandos úteis via Telegram
|
|
|
|
- `/veria` — mostra o provider e o modelo de IA atuais
|
|
- `/configia` — configura interativamente o provider e o modelo de IA
|
|
|
|
---
|
|
|
|
## 9) Backups importantes
|
|
|
|
Faça backup regular dos arquivos de dados dentro de `/app`:
|
|
|
|
- `user_profile.json`
|
|
- `agent_profile.json`
|
|
- `system_improvements.json`
|
|
- `uploads_metadata.json`
|
|
- pasta `contexts/`
|
|
- pasta `workspace/`
|
|
|
|
Exemplo simples de backup diário:
|
|
|
|
```bash
|
|
tar czf /root/backups/psagentai-$(date +%F).tar.gz -C /opt/psagentai/app user_profile.json agent_profile.json system_improvements.json uploads_metadata.json contexts workspace
|
|
```
|
|
|
|
---
|
|
|
|
## 10) Segurança
|
|
|
|
- Nunca comite o `.env` no repositório.
|
|
- Restrinja permissões: `chmod 600 .env`.
|
|
- Use um usuário exclusivo para cada instância do serviço.
|
|
- Para maior isolamento, execute cada instância em um container Docker separado ou em VMs distintas.
|