AI observability quick-start
monsys.ai heeft een passieve, audit-grade observability-laag voor je LLM-applicaties. Deze gids loodst je in vijftien minuten van een leeg account naar je eerste signed evidence pack.
Wat ga je krijgen
- Een ingest token dat aan een applicatie hangt (één per applicatie).
- Een SDK (Python, Node of Go, ~150 LOC) die elke LLM-call wrapt in een trace.
- PII-redactie aan de bron (IBAN-BE, Rijksregister, BTW, KBO, email, telefoon).
- Per-request kosten en tokens zichtbaar in het dashboard.
- Anomalie-alerts (kosten-spikes, refusal-spikes, PII-leak rate, …).
- Een Ed25519-getekend evidence pack dat je per maand kan downloaden, met een offline verifier voor je auditor.
0. Vereiste
Je tenant heeft ai_observability_enabled = true nodig. Dit staat
standaard uit. Vraag het aan via info@be-hosted.be of via je
beta-onboarding ticket — we flippen het binnen 24u na akkoord op de
AI-bijlage van de DPA.
1. Mint een ingest token
In het dashboard:
- Linker navigatie → AI
- Apps → Nieuwe applicatie
- Vul
namein (bv.klantenservice-bot) - Kies een redaction_level:
off— geen redactie (alleen voor sandbox/test tenants)hash-only— alleen content-hashes worden bewaard, geen raw inhoudpattern-redact— IBAN/RRN/BTW etc. worden vervangen door tokens, rest blijft (default, aanbevolen)full-content-strip— alle vrije tekstvelden worden leeggemaakt
- Klik Aanmaken — de token (
aiv_...) wordt één keer getoond. Bewaar hem nu, want enkel de SHA256 wordt opgeslagen.
2. Installeer een SDK
Python
# Geen pip install nodig — kopieer monsys_ai.py uit /sdk/python/ in je projectexport MONSYS_AI_ENDPOINT=https://api.monsys.ai/api/v1/ai/ingestexport MONSYS_AI_TOKEN=aiv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfrom monsys_ai import Tracer
tracer = Tracer()
with tracer.trace("rag.chat") as t: with t.span("openai.chat", provider="openai", model="gpt-4o") as s: s.prompt = user_msg resp = client.chat.completions.create(...) s.completion = resp.choices[0].message.content s.input_tokens = resp.usage.prompt_tokens s.output_tokens = resp.usage.completion_tokensEén HTTP POST per trace, géén batching, géén background threads. Failures loggen, gooien nooit een exception.
Node (TypeScript)
import { Tracer } from "./monsys-ai";
const tracer = new Tracer();await tracer.trace("rag.chat", async (t) => { await t.span("openai.chat", { provider: "openai", model: "gpt-4o" }, async (s) => { const resp = await openai.chat.completions.create({...}); s.record({ prompt: userMsg, completion: resp.choices[0].message.content!, inputTokens: resp.usage!.prompt_tokens, outputTokens: resp.usage!.completion_tokens, }); });});Go
tracer, _ := monsysai.New(monsysai.Options{})_ = tracer.Trace(ctx, "rag.chat", func(t *monsysai.Trace) error { return t.Span(ctx, "openai.chat", monsysai.SpanOpts{Provider: "openai", Model: "gpt-4o"}, func(s *monsysai.Span) error { s.Prompt = userMsg // ... call your LLM ... return nil })})3. Verifieer in het dashboard
Binnen enkele seconden zie je:
- AI → Traces — chronologische lijst, klik voor span-boom met provider, model, tokens, latency, kosten, PII-hits.
- AI → Apps → klantenservice-bot — totalen per app.
- AI → Summary — KPI’s over de afgelopen 24u (totaal calls, kosten, refusal rate, PII-hit rate).
4. Onbloot inhoud (TOTP-gated)
Als je tenant redaction_level=hash-only of strikter gebruikt, is de
raw inhoud niet zichtbaar in het dashboard. Voor incident-onderzoek kan
een admin de inhoud van één specifieke span ontgrendelen:
- Open de trace.
- Klik op een span → Inhoud ontgrendelen.
- Bevestig met je 6-cijfer TOTP-code + een reden (audit log).
- De originele (geredacteerde) content verschijnt voor 5 minuten.
Elke ontgrendeling staat in je audit log met user_id, span_id, reason en timestamp.
5. Stel alert-regels in
AI → Alert rules → Nieuwe regel. Voorbeelden:
- Cost spike:
cost_per_minute > 1.00 EUR voor app=klantenservice-bot - Refusal spike:
refusal_rate_pct > 30% over 15min - PII leak:
pii_hit_rate_pct > 5% - Tool-call anomalie:
tool_call_zscore > 3(vs 7-dagen baseline)
Alerts gaan naar je ntfy-kanaal en/of webhooks. Webhook payloads bevatten alleen content-hashes, geen raw text — zie ADR-0009 invariant 9.
6. Exporteer een evidence pack
AI → Evidence packs → Nieuwe pack:
- Periode: bv.
2026-04-01tot2026-04-30 - App: alles of één specifieke
include_blobs: aan (voor volledige evidence inclusief geredacteerde inhoud)
Klik Aanmaken. Je krijgt een download-URL voor een pack-N.tar.gz.
Inhoud van de tarball:
manifest.json — metadata + content hashes (Ed25519-gesigned)manifest.sig — Ed25519 signature (base64)traces.jsonl — één regel per tracespans.jsonl — één regel per spanblobs/HASH.txt — geredacteerde inhoud per content-hash7. Offline verificatie (voor je auditor)
Geef je auditor:
- De
pack-N.tar.gz - Het script
tools/evidence-pack-verify.py - (Optioneel) je publieke signing key van https://monsys.ai/security/keys
De auditor draait:
pip install cryptographypython3 evidence-pack-verify.py pack-N.tar.gzExit code:
0— manifest signature valid + alle artifact-hashes matchen1— mismatch (tampering of corruptie)
De auditor heeft geen monsys-account nodig. Het script gebruikt de publieke signing key uit het manifest zelf — je kan dit kruislings verifiëren tegen wat monsys publiek vermeldt.
Volgende stappen
- Lees de drie harde invariants (passief, PII-aan-bron, getekende packs).
- Bekijk de envidence pack format voor je auditor.
- Bekijk de envelope spec als je een eigen SDK wil bouwen.