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