118 lines
5.6 KiB
Markdown
118 lines
5.6 KiB
Markdown
# Arthur - Agente de Suporte Técnico N2
|
|
|
|
> **Branch:** `arthur-suporte-tecnico-n2`
|
|
|
|
Agente de IA soberano para Suporte Técnico N2, operando 100% local em CPU. Correlaciona dados em tempo real (Zabbix), histórico de eventos e bases de conhecimento técnico para fornecer diagnósticos precisos em ambientes multitenant.
|
|
|
|
## 🎯 Objetivo
|
|
Automatizar a triagem e análise de chamados técnicos, oferecendo diagnósticos baseados em RAG e telemetria, com escalação inteligente para especialistas humanos quando necessário.
|
|
|
|
## 🏗 Arquitetura
|
|
|
|
```
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ Telegram Bot │────▶│ Dispatcher │────▶│ Triage (1B) │
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
│ │
|
|
▼ ▼
|
|
┌─────────────────┐ ┌─────────────────┐
|
|
│ Specialist (8B)│◀────│ RAG + Zabbix │
|
|
└─────────────────┘ └─────────────────┘
|
|
```
|
|
|
|
### Stack Tecnológica
|
|
- **Runtime:** Python 3.11+
|
|
- **LLMs:** Llama 3.2 1B (Triagem) + Llama 3.1 8B (Especialista) via Ollama
|
|
- **Vector DB:** Qdrant (Multitenant)
|
|
- **Monitoramento:** Zabbix API + Langfuse (Tracing)
|
|
- **Interface:** Telegram Bot
|
|
|
|
---
|
|
|
|
## 📞 Fluxo de Atendimento (Onboarding)
|
|
|
|
O Arthur identifica o usuário **antes** de processar qualquer solicitação técnica:
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Usuário envia mensagem no Telegram │
|
|
└───────────────────────────┬─────────────────────────────────┘
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Onboarding: is_known_user(telegram_id)? │
|
|
└───────────────────────────┬─────────────────────────────────┘
|
|
┌───────────────┴───────────────┐
|
|
▼ ▼
|
|
[NÃO CONHECIDO] [CONHECIDO]
|
|
│ │
|
|
▼ ▼
|
|
"Boa tarde! Primeira vez? "Boa tarde, João!"
|
|
Me confirma seu nome + Contexto histórico
|
|
e empresa?" carregado silenciosamente
|
|
│ │
|
|
▼ │
|
|
[Aguarda resposta] │
|
|
│ │
|
|
▼ ▼
|
|
register_user() ─────────────────────────►│
|
|
▼
|
|
┌─────────────────────────────┐
|
|
│ Dispatcher → Triage → RAG │
|
|
│ → Specialist → Resposta │
|
|
└─────────────────────────────┘
|
|
```
|
|
|
|
**Regras de Segurança:**
|
|
- Usuários de empresas não-clientes recebem atendimento cordial, mas **nenhuma informação técnica** é fornecida.
|
|
- O Arthur atua como "mensageiro" nesses casos, registrando o recado para a equipe.
|
|
|
|
---
|
|
|
|
## 🚀 Como Rodar
|
|
|
|
### 1. Configuração
|
|
```bash
|
|
cp .env.example .env
|
|
# Edite o .env com suas credenciais (Telegram, Zabbix, etc.)
|
|
```
|
|
|
|
### 2. Executando com Docker
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
O bot estará online e monitorando mensagens do Telegram.
|
|
|
|
### 3. Executando Homologação
|
|
```bash
|
|
docker exec arthur_agent python -c "from src.deployment.homologation import run_homologation; import asyncio; asyncio.run(run_homologation('staging'))"
|
|
```
|
|
|
|
---
|
|
|
|
## 📁 Estrutura do Projeto
|
|
|
|
```
|
|
src/
|
|
├── agents/
|
|
│ ├── dispatcher.py # State machine de atendimento
|
|
│ ├── triage_agent.py # Extração de entidades (1B)
|
|
│ ├── specialist_agent.py# Diagnóstico técnico (8B)
|
|
│ └── onboarding.py # Identificação de usuários
|
|
├── clients/
|
|
│ ├── telegram_client.py # Interface Telegram
|
|
│ ├── ollama_client.py # Inferência LLM
|
|
│ └── zabbix_connector.py# Telemetria
|
|
├── flywheel/
|
|
│ ├── episodic_memory.py # Memória de longo prazo
|
|
│ └── rag_pipeline.py # Ingestão de documentos
|
|
└── security/
|
|
└── dlp_filter.py # Redação de dados sensíveis
|
|
```
|
|
|
|
---
|
|
|
|
## 📚 Documentação Adicional
|
|
- [PRD Completo](.gemini/PRD_Suporte_Tecnico_N2.md)
|
|
- [Roadmap de Desenvolvimento](.gemini/TODO_Arthur.md)
|