| # 💬 Chat API Documentation |
|
|
| **Status**: ✅ Implementado e Funcional |
| **Versão**: 1.0.0 |
| **Data**: Setembro 2025 |
|
|
| ## 📋 Visão Geral |
|
|
| A API de Chat do Cidadão.AI permite interação conversacional natural com os agentes de IA para investigar contratos públicos, detectar anomalias e gerar relatórios. |
|
|
| ## 🚀 Endpoints |
|
|
| ### 1. Enviar Mensagem |
| ```http |
| POST /api/v1/chat/message |
| ``` |
|
|
| Processa uma mensagem do usuário e retorna resposta do agente apropriado. |
|
|
| **Request Body:** |
| ```json |
| { |
| "message": "Quero investigar contratos do Ministério da Saúde", |
| "session_id": "uuid-opcional", |
| "context": { |
| "additional": "data" |
| } |
| } |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "session_id": "550e8400-e29b-41d4-a716-446655440000", |
| "agent_id": "abaporu", |
| "agent_name": "Abaporu", |
| "message": "Vou coordenar essa investigação. Qual período você gostaria de analisar?", |
| "confidence": 0.85, |
| "suggested_actions": ["start_investigation", "view_examples"], |
| "requires_input": { |
| "period": "Informe o período desejado" |
| }, |
| "metadata": { |
| "intent_type": "investigate", |
| "processing_time": 0.234, |
| "is_demo_mode": false, |
| "timestamp": "2025-09-16T10:30:00Z" |
| } |
| } |
| ``` |
|
|
| ### 2. Stream de Mensagens (SSE) |
| ```http |
| POST /api/v1/chat/stream |
| ``` |
|
|
| Retorna resposta em streaming usando Server-Sent Events para experiência mais fluida. |
|
|
| **Request Body:** Igual ao endpoint `/message` |
|
|
| **Response Stream:** |
| ``` |
| data: {"type": "start", "timestamp": "2025-01-16T10:30:00Z"} |
| |
| data: {"type": "detecting", "message": "Analisando sua mensagem..."} |
| |
| data: {"type": "intent", "intent": "investigate", "confidence": 0.85} |
| |
| data: {"type": "agent_selected", "agent_id": "zumbi", "agent_name": "Zumbi dos Palmares"} |
| |
| data: {"type": "chunk", "content": "Detectei que você quer"} |
| |
| data: {"type": "chunk", "content": "investigar contratos..."} |
| |
| data: {"type": "complete", "suggested_actions": ["start_investigation"]} |
| ``` |
|
|
| ### 3. Sugestões Rápidas |
| ```http |
| GET /api/v1/chat/suggestions |
| ``` |
|
|
| Retorna sugestões de perguntas/ações rápidas. |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "id": "investigate", |
| "label": "Investigar contratos", |
| "icon": "search", |
| "action": "Quero investigar contratos do Ministério da Saúde" |
| }, |
| { |
| "id": "anomalies", |
| "label": "Ver anomalias recentes", |
| "icon": "alert-circle", |
| "action": "Mostre as principais anomalias detectadas" |
| } |
| ] |
| ``` |
|
|
| ### 4. Histórico de Chat |
| ```http |
| GET /api/v1/chat/history/{session_id}?limit=50 |
| ``` |
|
|
| Recupera histórico de mensagens de uma sessão. |
|
|
| **Response:** |
| ```json |
| { |
| "session_id": "550e8400-e29b-41d4-a716-446655440000", |
| "messages": [ |
| { |
| "role": "user", |
| "content": "Investigar contratos", |
| "timestamp": "2025-09-16T10:30:00Z" |
| }, |
| { |
| "role": "assistant", |
| "content": "Vou coordenar essa investigação...", |
| "timestamp": "2025-09-16T10:30:05Z", |
| "agent_id": "abaporu" |
| } |
| ], |
| "total_messages": 2, |
| "current_investigation_id": "INV-2025-001" |
| } |
| ``` |
|
|
| ### 5. Limpar Histórico |
| ```http |
| DELETE /api/v1/chat/history/{session_id} |
| ``` |
|
|
| Limpa o histórico de uma sessão. |
|
|
| **Response:** |
| ```json |
| { |
| "message": "Histórico limpo com sucesso" |
| } |
| ``` |
|
|
| ### 6. Listar Agentes |
| ```http |
| GET /api/v1/chat/agents |
| ``` |
|
|
| Lista todos os agentes disponíveis para conversa. |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "id": "abaporu", |
| "name": "Abaporu", |
| "avatar": "🎨", |
| "role": "Orquestrador Master", |
| "description": "Coordena investigações complexas", |
| "status": "active" |
| }, |
| { |
| "id": "zumbi", |
| "name": "Zumbi dos Palmares", |
| "avatar": "🔍", |
| "role": "Investigador", |
| "description": "Detecta anomalias e irregularidades", |
| "status": "active" |
| } |
| ] |
| ``` |
|
|
| ## 🧠 Sistema de Detecção de Intenção |
|
|
| O sistema detecta automaticamente a intenção do usuário: |
|
|
| ### Tipos de Intenção |
| - **INVESTIGATE**: Investigar contratos/gastos |
| - **ANALYZE**: Analisar anomalias/padrões |
| - **REPORT**: Gerar relatórios/documentos |
| - **STATUS**: Verificar status/progresso |
| - **HELP**: Ajuda/explicações |
| - **GREETING**: Saudações |
| - **QUESTION**: Perguntas gerais |
|
|
| ### Extração de Entidades |
| - **Órgãos**: Ministério da Saúde (26000), Educação (25000), etc. |
| - **Períodos**: Anos, meses, períodos relativos |
| - **Valores**: Valores monetários em R$ |
|
|
| ### Roteamento de Agentes |
| ``` |
| INVESTIGATE → Abaporu (Master) |
| ANALYZE → Anita (Analyst) |
| REPORT → Tiradentes (Reporter) |
| QUESTION → Machado (Textual) |
| DEFAULT → Abaporu |
| ``` |
|
|
| ## 💡 Exemplos de Uso |
|
|
| ### Investigação Completa |
| ``` |
| USER: "Quero investigar contratos suspeitos" |
| BOT: "Qual órgão você gostaria de investigar?" |
| USER: "Ministério da Saúde" |
| BOT: "Qual período?" |
| USER: "Últimos 6 meses" |
| BOT: "Iniciando investigação..." [Cria investigação] |
| ``` |
|
|
| ### Consulta Direta |
| ``` |
| USER: "Mostre anomalias do ministério da educação em 2024" |
| BOT: [Detecta órgão e período] "Analisando contratos..." |
| ``` |
|
|
| ### Geração de Relatório |
| ``` |
| USER: "Gere um relatório da última investigação" |
| BOT: "Gerando relatório em PDF..." [Link para download] |
| ``` |
|
|
| ## 🔧 Configuração |
|
|
| ### Headers Necessários |
| ``` |
| Content-Type: application/json |
| Authorization: Bearer {token} (opcional) |
| ``` |
|
|
| ### Parâmetros de Sessão |
| - Sessões expiram após 24 horas de inatividade |
| - Máximo 1000 mensagens por sessão |
| - Cache de 5 minutos para respostas idênticas |
|
|
| ## 🎯 Boas Práticas |
|
|
| 1. **Mantenha sessões**: Use o mesmo `session_id` para contexto |
| 2. **Mensagens claras**: Seja específico sobre órgãos e períodos |
| 3. **Use sugestões**: Aproveite as sugestões rápidas |
| 4. **Streaming para UX**: Use `/stream` para experiência fluida |
|
|
| ## 🚨 Limitações |
|
|
| - Mensagens: Máximo 1000 caracteres |
| - Rate limit: 60 mensagens/minuto por IP |
| - Sessões: Máximo 100 ativas por usuário |
| - Histórico: Últimas 1000 mensagens |
|
|
| ## 🔐 Segurança |
|
|
| - Autenticação JWT opcional |
| - Sanitização de entrada |
| - Proteção contra XSS |
| - Rate limiting por IP/usuário |
|
|
| --- |
|
|
| **Próximo**: [Integração Frontend](./FRONTEND_CHATBOT_PROMPT.md) |