Porque foi feita essa alteração? Resolução de Bug e Melhoria de UX. - Foi removido o tom excessivamente animado e os exemplos robóticos do onboarding. - Corrigido o loop de registro onde o usuário não era encontrado no Qdrant logo após o upsert (adicionado cache local em memória). - Implementado regex flexível para capturar nome e empresa com separadores variados (vírgula, ponto, hífen, espaço). - Removidas saudações duplicadas no fluxo de análise. - Melhorado o tratamento de erros na resposta final do agente. Quais testes foram feitos? - Execução de pytest tests/test_onboarding.py (12 testes passando). - Teste manual via Telegram validando o fluxo de registro sem vírgula e a transição direta para o agente. A alteração gerou um novo teste que precisa ser implementado no pipeline de testes? Não. Os testes unitários existentes foram atualizados para refletir a mudança nos templates de mensagem, garantindo que o fluxo continue validado. |
||
|---|---|---|
| .gemini | ||
| docker | ||
| docs | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| agent_logs_tg.txt | ||
| docker-compose.yml | ||
| package-lock.json | ||
| pytest.ini | ||
| requirements.txt | ||
README.md
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
cp .env.example .env
# Edite o .env com suas credenciais (Telegram, Zabbix, etc.)
2. Executando com Docker
docker-compose up --build
O bot estará online e monitorando mensagens do Telegram.
3. Executando Homologação
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