Wat gebeurt er technisch?
- De HTTP POST-body is het contract met de AI-gateway.
- Providerkeuze wordt als configuratie meegestuurd.
- sourceChecks bewijzen welke controles vóór de AI-call zijn uitgevoerd.
- requestedOutput begrenst wat het model moet teruggeven.
Bouwstappen met uitleg
Gebruik alleen gecontroleerde statements.
- Waarom?
- AI mag geen onbetrouwbare of nog niet gerubriceerde brondata ontvangen alsof die definitief is.
- Wat moet dit opleveren?
- De request bevat balans, resultaat en geslaagde sourceChecks.
Bouw een compacte JSON-body.
- Waarom?
- Gestructureerde invoer is beter te valideren, goedkoper te versturen en minder ambigu dan een lange vrije prompt.
- Wat moet dit opleveren?
- Iedere waarde heeft een vaste veldnaam en datatype.
Maak provider configureerbaar.
- Waarom?
- Werkgevers kunnen vanwege prijs, privacy of beleid een andere leverancier kiezen zonder de financiële logica opnieuw te bouwen.
- Wat moet dit opleveren?
- Dezelfde payload werkt via meerdere toegestane providers.
Vraag vaste outputvelden.
- Waarom?
- De volgende workflowstappen moeten antwoorden machinaal kunnen parsen en controleren.
- Wat moet dit opleveren?
- De response bevat summary, notes en warnings in JSON.
Minimaliseer de meegestuurde gegevens.
- Waarom?
- Voor toelichtingen zijn meestal geen persoonsgegevens, factuurteksten of volledige mutatieregels nodig.
- Wat moet dit opleveren?
- De request bevat alleen doelgebonden financiële informatie.
Wat gaat er mis als je dit overslaat?
Ruwe data of vrije prompts vergroten privacyrisico, kosten en de kans op onvoorspelbare output. Hardcoding van één provider maakt de oplossing bovendien moeilijk vervangbaar.
PowerLab-endpoint
Dit endpoint bootst het deel na dat later door Exact Online, een AI-provider of de documentservice wordt geleverd. Test het eerst los, zodat je begrijpt welke invoer en uitvoer de workflow verwerkt.
https://powerlab.rmeijer.eu/api/ai/v1/annual-report
Voorbeeldbody
{
"administration": {
"id": "demo-bv",
"name": "Demo Handelsbedrijf BV"
},
"currency": "EUR",
"financialYear": 2025,
"provider": "claude",
"requestedOutput": {
"accountingNotes": true,
"managementSummary": true,
"warnings": true
},
"sourceChecks": {
"balanced": true,
"difference": 0
},
"statements": {
"balanceSheet": {
"assets": 75000,
"equity": 55000,
"liabilities": 20000
},
"profitAndLoss": {
"expenses": 70000,
"result": 25000,
"revenue": 95000
}
}
}
Kun je uitleggen waarom?
Beantwoord deze vragen in je eigen woorden voordat je de oefening afrondt. Het doel is niet alleen de juiste nodes plaatsen, maar de ontwerpkeuzes kunnen verdedigen.
- Welke gegevens heeft het model echt nodig om een toelichting te schrijven?
- Wat blijft hetzelfde wanneer je Claude vervangt door Azure OpenAI?
- Waarom sturen we sourceChecks mee maar laten we AI die controles niet uitvoeren?
Klaar wanneer
De API retourneert een conceptobject met provider, status, summary, notes, sourceChecks en warnings.