IA Generativa do CIT

sobre Martha

Como o Chatbot Analítico e o Concierge Virtual previstos no Caderno de Encargos (T3.9) assentam sobre a plataforma Martha — uma só implementação, dois agentes segregados, sobre os dados que já existem (Metabase CIT-PBS + catálogo de ~500 indicadores). Sem reinventar camadas: Martha é o RAG + Tool Use + guardrails + observabilidade que o Caderno de Encargos exige.

2
Agentes
8
Perfis
≤5%
Alucinação
Fluxo de referência

Pergunta → resposta fundamentada

O padrão central do Caderno de Encargos (§3.1). Em Martha, cada caixa é uma step de um Workflow — retries independentes, estado persistente, e citação automática das fontes.

01

Pergunta

Portal ou chat embebido. Token curto + origin allowlist.

02

Recuperação (RAG + Tool Use)

KB curada (hybrid search) + tools sobre a API do Metabase.

03

Geração controlada

LLM condicionado ao contexto recuperado e ao perfil.

04

Guardrails + verificação

Scope, anti-injection, resposta em baixa confiança.

05

Resposta fundamentada

Com fontes citadas + registo auditável (Langfuse).

Arquitetura em camadas

Onde a IA assenta — de cima para baixo

O chatbot e o concierge vivem na camada de Serviços/Apresentação (§3.3). Tudo abaixo é Martha sobre os dados existentes.

Superfícies
Apresentação
Portal Analytics (junto ao Metabase) Canvas de Indicadores Portal público de turismo
Agentes
Martha · segregados
Chatbot Analítico (interno) Concierge Virtual (público)
Núcleo Martha
Orquestração
Workflows Tools (OpenAPI → funções) Document RAG + citação Tasks / aprovações Langfuse (observabilidade)
Dados (já existem)
Fonte de verdade
Metabase CIT-PBS · API REST KB curada · catálogo ~500 indicadores Postgres/TimescaleDB · RLS
Governação
Transversal · AI Act
SSO Entra ID → Keycloak RBAC/ABAC + RLS WAF · rate limiting Audit log imutável
Segregação operacional

Dois agentes, um plano de dados

Mesma infraestrutura, mas KB, tools, permissões, logging e guardrails separados (§7.1). O concierge não herda permissões internas.

Chatbot Analítico

Interno · PT/EN

Apoio à consulta e interpretação de indicadores para a equipa CIT e perfis profissionais.

Acesso: SSO institucional (Entra ID via Keycloak). Aplica a matriz de permissões do utilizador.
Tools: API do Metabase (cards + SELECT) + KB analítica interna.
Limites: RLS por concelho/cluster; só lê o que o perfil pode ver.
KB + índices: namespace interno, curadoria e versionamento próprios.

Concierge Virtual

Público · PT/EN

Orientado ao visitante/turista registado. Exposição pública controlada, sem dados internos.

Acesso: autenticação OAuth2; embed via token curto + origin allowlist.
Tools: apenas KB pública (indicadores publicados, conteúdo turístico). Sem Metabase.
Guardrails+: filtros de scope reforçados, política de conteúdos própria, recusa em baixa confiança.
KB + índices: namespace público separado; logging e retenção distintos (RGPD).
Permissionamento por perfil

O mesmo agente, vistas diferentes

Os 8 perfis do Canvas tornam-se as chaves de scope. Cada perfil = uma allowlist de tools (Martha) × um scope de RLS (Metabase). A mesma pergunta devolve dados diferentes consoante quem pergunta.

Perfil Agente Âmbito de dados (RLS) Acesso ao Metabase
Decisores Públicos analítico 7 clusters · nacional/regional Dashboards completos + queries ad-hoc
Gestores do Destino analítico 7 clusters · região Norte Dashboards completos + queries ad-hoc
Porto Business School analítico 7 clusters · agregado Dashboards + exportação para análise
Alojamento analítico Procura + Oferta · seu concelho Cards filtrados ao seu território
Animação Turística analítico Procura + Experiência · seu concelho Cards filtrados ao seu território
Restauração e Comércio analítico Procura + Economia · seu concelho Cards filtrados ao seu território
Académicos analítico Datasets agregados · sem micro-dados Leitura agregada + metodologia
Visitantes concierge Apenas indicadores publicados Sem acesso · só KB pública
Uma fonte, muitas visibilidades. O scope não está no prompt — está na identidade. As claims do utilizador autenticado alimentam a RLS do Postgres e a tool-allowlist da Martha. Mudar de perfil muda o que o agente consegue ler, não apenas o que diz.
Acesso dos agentes aos dados

Como o agente lê o Metabase e a KB

Em Martha, "largar uma spec OpenAPI" transforma cada endpoint REST numa função invocável pelo agente. Credenciais guardadas centralmente, nunca no prompt.

Tool: Metabase API

Quantitativo

A API REST do Metabase (já self-hosted em pbs.ubp.pt/analytics) entra como spec OpenAPI.

Cards guardados: /api/card/:id/query → KPIs validados, sem SQL livre.
Queries ad-hoc: /api/dataset — só SELECT, parametrizado, dentro do scope RLS.
Filtro por perfil: collection/RLS do Metabase + allowlist de cards por perfil.

Tool: Knowledge Base (RAG)

Qualitativo

Catálogo de indicadores, definições, metodologia, relatórios e ontologia ingeridos pela Martha.

Ingestão: pasta R2 auto-ingest → parse → chunk → embed → hybrid search.
Citação: fontes citadas automaticamente — groundedness verificável.
Namespaces: interno vs público separados, versionados de forma independente.
Divisão de trabalho: a KB responde "o que significa / como se calcula"; o Metabase responde "qual é o valor agora, no meu território". O Workflow combina os dois numa resposta fundamentada e citada.
Onde é surfaçado

Pontos de exposição

O mesmo agente serve vários canais (browser partilha o agente; notificações por email/webhook). KISS: começar pelos dois primeiros.

Portal Analytics

Painel lateral de chat junto aos dashboards Metabase — pergunta sobre o que está no ecrã.

interno · prioritário

Canvas de Indicadores

"Explica este indicador / mostra-me a tendência" embebido no Canvas existente.

interno

Portal público

Widget Concierge para o visitante — embed via token curto + origin allowlist.

público

Alertas / relatórios

Notificações por email/webhook em variações relevantes (futuro, Tasks Martha).

extensão
Governação · AI Act / RGPD

Conformidade que o Caderno de Encargos exige

Cada obrigação nuclear do Caderno de Encargos tem um mecanismo concreto na Martha. Sem caixas mágicas.

Transparência

Informar o utilizador de que interage com IA; disclaimer no canal. Dever de transparência do AI Act.

Caderno de Encargos §4 · AI Act

Logging + auditoria

Registo imutável de retrieval, fontes, prompts, respostas e decisões de recusa via Langfuse.

Caderno de Encargos §4 · §7.3

Mitigação de alucinações

RAG fundamentado + verificação; evals semanais (RAGAS), taxa de alucinação ≤ 5% global.

Caderno de Encargos §5 · obrigação nuclear

Controlo de acessos

RBAC/ABAC + RLS; concierge sem permissões internas; allowlists de tools por perfil.

Caderno de Encargos §7.2 · obrigação nuclear

Robustez adversarial

Mitigação de prompt injection, resposta em baixa confiança, testes adversariais (T3.10).

Caderno de Encargos §5 · §6

Latência + SLOs

Medição P50/P95, taxa de erro; 25 sessões concorrentes, 1–3k msg/dia, autoscaling.

Caderno de Encargos §8 · T3.9