cidadao.ai-backend / docs /CHAT_API_DOCUMENTATION.md
anderson-ufrj
fix: add detailed logging and error handling for chat API
c9dd90c
|
raw
history blame
6.02 kB
# 💬 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)