O que é um Agente
No Infinity Copilot, um agente é uma unidade de raciocínio que usa um LLM com acesso a ferramentas (tools). O handler de uma instância pode delegar parte do processamento a um ou mais agentes, que executam ciclos de raciocínio até chegar a uma resposta final.
Ciclo de Vida
O ciclo de tool_call → execução → continuação repete até o LLM produzir uma resposta final sem tool calls.
Definição de um Agente
Um agente é definido por:
- Prompt: template Jinja2 com contexto do usuário e instruções
- Tools: funções Python ou servidores MCP que o LLM pode invocar
- Executor: controla o ciclo de raciocínio e o limite de iterações
Conectores Flow
O Infinity Copilot acessa LLMs para agentes via Flow API. Providers suportados para agentes:
| Conector | Provider |
|---|---|
flow/claude | Anthropic Claude |
flow/gemini | Google Gemini |
flow/openai | OpenAI GPT |
Integração MCP
Agentes podem se conectar a servidores MCP (Model Context Protocol) para acessar ferramentas externas sem implementação custom. O copilot-core gerencia o ciclo de vida da conexão MCP e expõe as ferramentas para o executor do agente.
Segurança — Guardrails
Guardrails são verificações aplicadas sobre a entrada do usuário (input guards) e sobre a resposta do LLM (output guards) antes de entregá-la ao canal.
Input Guards
| Guard | O que detecta |
|---|---|
length | Mensagens fora do intervalo de tokens configurado (padrão: 1–512) |
jailbreak | Tentativas de burlar restrições do agente — modo heuristic (regex PT-BR) ou llm |
pii | Dados pessoais: CPF, RG, email, telefone, CEP, CNPJ, cartão de crédito, IP |
toxicity | Insultos e ameaças em 6 categorias — modo heuristic ou llm |
sql_injection | 14 padrões de SQL injection (SELECT, DROP, UNION, time delays, etc.) |
Output Guards
| Guard | O que detecta |
|---|---|
toxicity_filter | Conteúdo tóxico na resposta do LLM (via LLM ou keyword matching) |
compliance_validator | Vazamento de dados pessoais na resposta (LGPD) — modo regex ou llm |
credential_leakage | API keys, AWS keys, GitHub tokens, JWT, SSH keys, strings de alta entropia |
O fluxo de execução é: input guards → LLM → output guards. Se qualquer guard falhar, um GuardrailsError é lançado e a resposta não é entregue ao usuário.
Autenticação
API Core (HTTP Basic Auth)
O copilot-core protege rotas internas com HTTP Basic Auth usando secrets.compare_digest() para evitar timing attacks.
Backoffice (OAuth)
O backoffice suporta autenticação via OAuth Google e Microsoft SSO através de plugins independentes. Cada plugin registra um provider e a tela de login exibe os botões automaticamente.
Webhook WhatsApp (HMAC-SHA256)
O Infinity valida a autenticidade de cada requisição recebida da Meta via HMAC-SHA256, conforme documentação oficial do Graph API.