Waterschap Brabantse Delta · R&D-lab · research-artifact
Eddy is een chat-assistent bovenop LibreChat, met Keycloak-SSO, die praat met de systemen en documenten van het waterschap. Het achterliggende taalmodel bevat geen waterschapskennis; alle feiten komen uit gereedschappen (tools) die Eddy tijdens een gesprek aanroept via het Model-Context-Protocol (MCP). Zo is elk antwoord herleidbaar tot een bron in plaats van tot het geheugen van een model.[1]
De opzet is bewust modelonafhankelijk: de MCP-servers zijn losse diensten en de agent-laag koppelt ze aan wélk taalmodel dan ook. Het model is daarmee een uitwisselbaar onderdeel, geen fundament — een eigenschap die de overstap in hoofdstuk 4 mogelijk maakte.
Niveau, debiet, druk, zuurstof, vrachten en vergunningen per installatie — uit de ruwe historian (realtime SCADA) én uit gevalideerde Z-info-objecten.
Meetreeksen komen terug als ECharts-grafiek met zoom en tijdschuif, gehost naast de chat — het model tekent nooit zelf een grafiek, het levert de data.
Hybride zoek over het documentcorpus: pgvector-embeddings + Nederlandse full-text, samengevoegd met Reciprocal Rank Fusion. Inclusief PDF-upload in het gesprek.
Legger, Omgevingswet (DSO), BRO-ondergrond, Rijkswaterstaat en PDOK — als kaart of feitenlijst, via de gedeelde kaart-renderer.
Neerslag/weer (KNMI), zonkracht en actuele stroomprijzen — de context waarin een gemaal of zuivering draait.
Grote datasets als veilige, gechunkte CSV-export, downloadbaar buiten het gesprek.
LibreChat is puur UI + agent-runtime; alle domeinlogica zit in de MCP-servers. Een vraag doorloopt onderstaande lus: het model besluit welke tool het nodig heeft, LibreChat voert die tool uit, en het resultaat gaat terug het gesprek in — net zo vaak als nodig.
eddy).| Server | Rol | Bron / techniek |
|---|---|---|
| zinfo-historian | Ruwe/live SCADA-tags | Z-info-webservice |
| zinfo-objecten | Gevalideerde dagwaarden, vrachten, vergunningen | Z-info-objecten |
| documenten | RAG-documentzoek + ingest | Postgres + pgvector |
| omgeving | Weer, zon, stroomprijzen | KNMI · Open-Meteo · EnergyZero |
| legger | Legger & registers | WBD-geo |
| omgevingswet | DSO-regels & activiteiten | DSO-API (gratis sleutel) |
| bro | Ondergrond | BRO (key-loos) |
| rws | Rijkswateren | Rijkswaterstaat (key-loos) |
| pdok | Basiskaarten & locaties | PDOK (key-loos) |
Embeddings voor het documentzoeken draaien lokaal en key-loos via een eigen
Infinity-service (BAAI/bge-m3, 1024 dims). De databases (pgvector
en MongoDB) staan op interne netwerken zonder uitgaand verkeer.[2]
Eddy draaide aanvankelijk op Claude Haiku 4.5, maar niet via een reguliere API-sleutel: een interne bridge leende een persoonlijk Claude-abonnement (Max/Team, OAuth). Dat viel buiten het bedoelde gebruik van de leverancier (risico voor dat account) en was aan de limieten van een consumentenabonnement gebonden.
Sinds 2026-07-06 draait het antwoordmodel op een eigen Perplexity-API-account
van het waterschap, model sonar-pro. Omdat de architectuur modelonafhankelijk
is, was dit een configuratiewijziging — geen herbouw: Perplexity is toegevoegd als
OpenAI-compatibel endpoint, de agent wijst naar sonar-pro, en het persoonlijke
abonnement is losgekoppeld.[3]
geverifieerd Alleen de pro-tier
van Perplexity ondersteunt de tool-aanroepen die Eddy nodig heeft. Tegen de API getest
(2026-07-06): sonar-pro en sonar-reasoning-pro geven een correct
tool_calls-antwoord; sonar en sonar-reasoning geven
400 "Tool calling is not supported". Eddy móét dus op de pro-tier draaien,
anders zouden de MCP-tools (Z-info, documenten, kaarten) stilvallen.
Aandachtspunt: Sonar is een zoek-georiënteerd model dat webresultaten kan meewegen en per aanroep een kleine zoekkost meebrengt — bij gebruik wordt bewaakt dat antwoorden op de Z-info- en documentbronnen leunen, niet op het open web.
Toegang loopt uitsluitend via Keycloak-SSO (realm wbd): alleen
gebruikers met de rol eddy_read mogen inloggen. E-mail-login en zelfregistratie
staan uit in productie.
Het corpus kan persoonsgegevens bevatten (bijv. vergunningaanvragen); de AVG/BIO-toets is bewust belegd vóór bredere uitrol. De keuze om embeddings lokaal te berekenen en interne databronnen zonder egress te draaien beperkt wat het waterschap buiten de deur zet. De overstap naar een eigen model-account (hoofdstuk 4) is onderdeel van dezelfde lijn: grip op waar data en verkeer heen gaan.
sonar-pro op een eigen account.stacks/eddy (netwerkmodel, embeddings, MCP-servers).
git.wbd-rd.nl/RnD/infra ↗
geraadpleegd 2026-07-06docs/decisions.md in RnD/eddy; tool-calling geverifieerd tegen
api.perplexity.ai/chat/completions.
2026-07-06