Documentação interativa
Todas as aplicações Agent-Lab servem automaticamente OpenAPI 3 — a implementação de
referência em http://localhost:18000/docs (ou a sua
própria aplicação, onde quer que esteja em execução). O catálogo abaixo documenta os
routers incluídos na framework; os seus extra_routers aparecem no mesmo esquema.
Autenticação
Quando auth.enabled é true (consulte a Referência de configuração),
as rotas exigem um bearer token do Keycloak. O router /auth só é montado quando a
autenticação está ativada:
TOKEN=$(curl -s -X POST https://<host>/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "…", "password": "…"}' | jq -r '.access_token')
curl -s https://<host>/agents/list -H "Authorization: Bearer $TOKEN" | jq| Método | Endpoint | Descrição |
|---|---|---|
| POST | /auth/login |
Criar um novo bearer token |
| POST | /auth/renew |
Renovar um bearer token existente |
| POST | /auth/exchange |
Trocar um código de autorização do Microsoft Entra ID (PKCE) por um token da aplicação |
| GET | /auth/profile |
Obter o perfil do utilizador autenticado |
| PUT | /auth/profile |
Atualizar o perfil do utilizador autenticado |
A configuração do realm/cliente é descrita em Autenticação com Keycloak.
Caminhos sem autenticação: /status/*, /docs, /openapi.json, /mcp,
/static, os endpoints well-known de OAuth e o ponto de montagem da SPA — tudo o
resto exige um token válido.
Endpoints
Agentes
Criar instâncias de qualquer tipo de agente registado; agent_type é validado
dinamicamente face ao registo.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /agents/list |
Listar todas as instâncias de agentes |
| GET | /agents/types |
Listar os tipos de agente registados (o registo) |
| GET | /agents/{agent_id} |
Obter uma instância de agente pelo ID |
| POST | /agents/create |
Criar uma nova instância de agente |
| POST | /agents/update |
Atualizar as informações básicas de um agente |
| POST | /agents/update_setting |
Atualizar uma única definição de um agente |
| POST | /agents/{agent_id}/reset_settings |
Repor as definições predefinidas de um agente |
| DELETE | /agents/delete/{agent_id} |
Eliminar uma instância de agente |
| WS | /agents/ws/task_updates/{agent_id} |
Stream WebSocket com atualizações do progresso de tarefas em operações longas |
Mensagens
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /messages/post |
Enviar uma mensagem a um agente e obter a resposta |
| POST | /messages/list |
Listar as mensagens de um agente |
| GET | /messages/{message_id} |
Obter os detalhes expandidos de uma mensagem (respostas, anexo) |
| DELETE | /messages/delete/{message_id} |
Eliminar uma mensagem |
Modelos de linguagem
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /llms/list |
Listar os modelos de linguagem configurados |
| GET | /llms/{language_model_id} |
Obter um modelo de linguagem e as respetivas definições |
| POST | /llms/create |
Criar um novo modelo de linguagem |
| POST | /llms/update |
Atualizar a configuração de um modelo de linguagem |
| POST | /llms/update_setting |
Atualizar uma única definição de um modelo de linguagem |
| DELETE | /llms/delete/{language_model_id} |
Eliminar um modelo de linguagem |
Integrações
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /integrations/list |
Listar integrações externas (fornecedores de IA) |
| GET | /integrations/{integration_id} |
Obter os detalhes de uma integração |
| POST | /integrations/create |
Criar uma integração (credenciais guardadas no Vault) |
| DELETE | /integrations/delete/{integration_id} |
Eliminar uma integração |
Anexos
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /attachments/list |
Listar anexos |
| GET | /attachments/download/{attachment_id} |
Transferir um anexo |
| POST | /attachments/upload |
Carregar um ficheiro como anexo |
| POST | /attachments/embeddings |
Gerar embeddings para um anexo |
Estado e MCP
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /status/liveness |
Liveness probe |
| GET | /status/readiness |
Readiness probe |
| GET | /status/metrics |
Métricas do Prometheus |
| * | /mcp |
O servidor MCP (Streamable HTTP) |
| GET | /.well-known/oauth-protected-resource/mcp |
Metadados OAuth para clientes MCP |
Exemplos de pedidos
Criar uma instância de agente — agent_name aceita [a-zA-Z0-9_-];
agent_type tem de ser um tipo registado; language_model_id é opcional:
curl -s -X POST http://localhost:18000/agents/create \
-H "Content-Type: application/json" \
-d '{
"agent_name": "support-agent-1",
"agent_type": "coordinator_planner_supervisor",
"language_model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}' | jqEnviar uma mensagem — message_role é um de human, assistant, tool;
attachment_id é opcional:
curl -s -X POST http://localhost:18000/messages/post \
-H "Content-Type: application/json" \
-d '{
"agent_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message_role": "human",
"message_content": "Summarize the attached report.",
"attachment_id": null
}' | jqAtualizar uma definição de agente — setting_key aceita [a-zA-Z_-];
setting_value comporta até 16 000 caracteres (é aqui que residem os templates de
prompts e os payloads JSON — consulte o Modelo de Domínio de Entidades):
curl -s -X POST http://localhost:18000/agents/update_setting \
-H "Content-Type: application/json" \
-d '{
"agent_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"setting_key": "system_prompt",
"setting_value": "You are a concise research assistant…"
}' | jqConvenções
- Os IDs são UUIDs; todos os endpoints de listagem aceitam corpos JSON, e não query strings.
- As definições são pares chave-valor persistidos com o agente ou o modelo — é assim que a mesma implementação executa muitas instâncias configuradas de forma diferente.
- O registo é a fonte de verdade para os valores válidos de
agent_type— executeGET /agents/typespara ver o que a aplicação em execução descobriu (incluindo os seus próprios pacotes através descan_packages).