89 lines
2.3 KiB
Markdown
89 lines
2.3 KiB
Markdown
# Referência da API
|
|
|
|
A API REST é servida pelo FastAPI na porta `8000`, implementada em [app/api.py](../code/app/api.py) e orquestrada por [app/backend/orquestrador.py](../code/app/backend/orquestrador.py).
|
|
|
|
## Endpoints
|
|
|
|
### `GET /`
|
|
|
|
Health check da aplicação.
|
|
|
|
**Resposta:**
|
|
|
|
```json
|
|
{
|
|
"status": "ok"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### `POST /agent`
|
|
|
|
Executa uma consulta no agente analítico.
|
|
|
|
**Request Body (`QueryRequest`):**
|
|
|
|
| Campo | Tipo | Obrigatório | Descrição |
|
|
|-------|------|-------------|-----------|
|
|
| `query` | `string` | Sim | Pergunta do usuário em português |
|
|
| `history` | `string` | Não | Histórico de mensagens anteriores (serializado) |
|
|
| `model` | `string` | Não | ID do modelo LLM (padrão: Claude Haiku) |
|
|
| `base` | `string` | Não | Nome do dashboard/base de dados |
|
|
|
|
**Response Body (`QueryResponse`):**
|
|
|
|
| Campo | Tipo | Descrição |
|
|
|-------|------|-----------|
|
|
| `response` | `string` | Resposta do agente em português |
|
|
| `input_tokens` | `int` | Total de tokens de entrada consumidos |
|
|
| `output_tokens` | `int` | Total de tokens de saída gerados |
|
|
| `total_tokens` | `int` | Total de tokens (input + output) |
|
|
|
|
**Exemplo — cURL:**
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8000/agent \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"query": "Qual foi meu NPS?",
|
|
"history": "",
|
|
"model": "anthropic.claude-haiku-4-5-20251001-v1:0",
|
|
"base": "nome_do_dashboard"
|
|
}'
|
|
```
|
|
|
|
**Exemplo — Resposta:**
|
|
|
|
```json
|
|
{
|
|
"response": "O NPS foi...",
|
|
"input_tokens": 1250,
|
|
"output_tokens": 340,
|
|
"total_tokens": 1590
|
|
}
|
|
```
|
|
|
|
## Modelos Disponíveis
|
|
|
|
| ID do Modelo | Provider |
|
|
|-------------|----------|
|
|
| `anthropic.claude-haiku-4-5-20251001-v1:0` | Anthropic |
|
|
| `anthropic.claude-sonnet-4-5-20250929-v1:0` | Anthropic |
|
|
| `meta.llama4-maverick-17b-instruct-v1:0` | Meta |
|
|
| `meta.llama4-scout-17b-instruct-v1:0` | Meta |
|
|
| `amazon.nova-lite-v1:0` | Amazon |
|
|
| `amazon.nova-pro-v1:0` | Amazon |
|
|
| `amazon.nova-2-lite-v1:0` | Amazon |
|
|
|
|
## Bases Disponíveis
|
|
|
|
As bases são carregadas dinamicamente do DynamoDB (tabela `TABLE`, index `item_type_index`, `item_type = "contexto"`). O formato do nome segue o padrão `{cliente}_{dashboard}`.
|
|
|
|
## Documentação Interativa
|
|
|
|
Com a aplicação rodando:
|
|
|
|
- **Swagger UI:** `http://localhost:8000/docs`
|
|
- **ReDoc:** `http://localhost:8000/redoc`
|