Veelgestelde vragen
De meeste pagina's op deze site doen een bewering. Deze beantwoordt tien vragen waarvoor een koper ons normaal gesproken moet mailen. Waar het antwoord "nog niet" is, staat er "nog niet" — een pagina die te veel zou beweren, zou minder waard zijn dan geen pagina, omdat elke andere pagina hier is geschreven om controleerbaar te zijn.
Waar worden prompts en completions verwerkt?
Op het endpoint dat de router selecteert, een benoemde regio, en het antwoord vertelt u welke: het llmeu-blok bij elke completion bevat inference_region, endpoint_id en sovereignty_class. Een residency-waarde in uw beleid beperkt die set vóór selectie; ze wordt toegepast als filter, niet als voorkeur, en catalogue_unknown is nooit routeerbaar. Twee beperkingen bij die zin. Ten eerste zijn regio-rijen configuratiegegevens, geen bewijs van draaiende machines of bevestigde contracten met operators — het residency-document zegt dit in zijn eigen woorden, en we herhalen het hier in plaats van alleen daar. Ten tweede is er op deze deployment geen GPU: de standaardbackend is de mock, met regio dev-mock, en de mock vertegenwoordigt geen plaats. Zie "Wat gebeurt er als er geen GPU is?" hieronder. De API die dit doet is een Node-proces, geen onderdeel van deze statische site — llmeu.com zelf beantwoordt pagina's, het verwerkt geen requests.
apps/api/src/inference.mjs:457 (het llmeu-responsblok), packages/router/src/engine.mjs:467 (residency wordt toegepast vóór scoring), packages/inference/src/mock.mjs:7 (MOCK_REGION = dev-mock), packages/shared/src/catalog-schema.mjs:64 (de routeerbare klassen)
Worden prompts en completions bewaard?
Nee. Prompt- en completion-bodies worden niet naar de database geschreven. Elke aanroep slaat metadata op — opgevraagd en gebruikt model, versie, endpoint, regio, sovereignty_class, de reden van de router, tokenaantallen, latency, kosten, status — en prompt_stored van de rij is 0. De twee body-kolommen bestaan in het schema en zijn null. De handhaving is code, niet beleidsproza: een request waarvan de effectieve retentie iets anders is dan nul wordt geweigerd, met 403 retention_exceeds_policy als er meer wordt gevraagd dan uw beleid toestaat en 501 retention_not_implemented als het is toegestaan maar niet geïmplementeerd. Beleid kan 24h, 7d of 30d als keuzes opslaan; het opslaan van de keuze schakelt het opslaan van de body niet in. Als een trace ooit prompt_stored anders dan 0 toont, is dat het antwoord van één pagina op "wat heb je bewaard" — en u kunt het zelf controleren met jq, zoals de evidence-pagina laat zien.
packages/shared/src/db/schema.sql:295 (prompt_stored en de twee body-kolommen), apps/api/src/inference.mjs:83 (IMPLEMENTED_RETENTION = zero), apps/api/src/inference.mjs:89 (403 retention_exceeds_policy), apps/api/src/inference.mjs:97 (501 retention_not_implemented), docs/product/decisions.md:62 (ADR-003)
Trainen jullie op klantgegevens?
Nee — niets in dit product verkeert in een positie om dat te doen. Er is geen trainings- of fine-tuningcodepad in de API, het webproces, de router of de gedeelde packages. De API orkestreert een request naar een backend en meet die; er is geen dataset-inname, geen corpusopslag en geen fine-tunejob. Prompt- en completion-bodies worden niet naar de database geschreven, dus er is niet eens een opgeslagen corpus om op te trainen. Dat is een uitspraak over onze code, niet over de upstream trainingsgegevens van elk model. Modellen die op andermans gegevens zijn getraind, of die hun trainingsgegevens openbaar maken, worden op hun eigen kaarten beschreven, met bronnen, en sommige van die kaarten zeggen dat de trainingsgegevens niet zijn gepubliceerd.
apps/api/src/inference.mjs (het volledige requestpad: orkestreren, meten, nooit persisteren), packages/shared/src/db/schema.sql (geen dataset- of corpustabel), packages/content/models.mjs:196 (een kaart die zegt dat de trainingsgegevens niet zijn gepubliceerd)
Wat gebeurt er als geen enkel endpoint voldoet aan mijn residency-beleid?
Het request mislukt. Het wordt niet teruggeschroefd naar een nabijgelegen regio, en het wordt nergens anders naartoe gestuurd: 409 no_endpoint_for_policy, met de reden in de errorbody en de uitgesloten endpoints genoemd op de trace. Residency wordt toegepast vóór scoring, en failover beweegt zich alleen binnen de set die de router al heeft gefilterd — daarom kan een retry niet stilletjes ontsnappen aan de regel die u hebt ingesteld. De code zegt het in één zin: "No endpoint satisfies residency {x}. Residency is never relaxed silently." Wat u eraan kunt doen: noem een regio of klasse die uw beleid wel toestaat, verbreed het beleid bewust (een beslissing, met een changelog-item), of accepteer dat er voor dat model onder die regel geen route bestaat. Een 409 is het product dat werkt zoals bedoeld; de faalmodus die het voorkomt, is een request die "slaagde" op een plek die u niet had toegestaan.
packages/shared/src/errors.mjs:59 (no_endpoint_for_policy), packages/router/src/engine.mjs:370 (de fout, vóór scoring), packages/router/src/engine.mjs:507 (failover kan de gefilterde set niet verlaten), apps/api/src/inference.mjs:137 (retentie wordt gecontroleerd vóór routering)
Is dit AVG-conform of gecertificeerd?
Die claim maken we niet, en dat zullen we ook niet doen — niet "AI Act-conform", niet "gecertificeerd", niet "Officieel EU". LLM EU is een particulier bedrijf. Het is geen EU-instelling en geen conformiteitsbeoordelingsinstantie. "Geverifieerd" op deze site betekent gedocumenteerd, niet juridisch gecertificeerd: het is een openbaarmakingschecklist, beoordeeld op of een kaart zijn residency, aanbieder, versie, retentie, subprocessors en licentie vermeldt, met links. Wat we kunnen stellen, is wat de code doet, en waar de hiaten zitten: zero retention in code afgedwongen; API-sleutels opgeslagen als scrypt-hashes met het secret eenmalig getoond; elke klantquery afgebakend op organization id; per-IP-, per-key- en per-org-snelheidslimieten; request-bodies begrensd en gevalideerd. Wat niet is gedaan: geen onafhankelijke penetratietest; geen audit door derden; de privacyverklaring en voorwaarden zijn samenvattingen; de DPA is een onbeoordeelde, niet-ondertekende template; de subprocessor-inventaris is onvolledig. De beveiligingspagina en de juridische index noemen die hiaten in hun eigen secties; dit antwoord verwijst ernaar in plaats van ze te parafraseren tot iets zachters.
docs/product/decisions.md:115 (ADR-006 — geen compliance-stempel, in geen enkele string), apps/web/server/pages/docs.mjs:537 (SECURITY_COPY: de lijst met controles en hiaten), apps/web/server/pages/docs.mjs:643 (LEGAL_READINESS: gereedheid per document)
Is de API OpenAI-compatibel, en wat verandert een klant?
De base-URL, en niets anders. /v1/chat/completions accepteert de officiële requestvorm en retourneert de officiële responsvorm — choices, usage, streaming als SSE — zodat de officiële SDK's werken nadat u ze naar ons laat wijzen. Extra bodyvelden worden genegeerd in plaats van geweigerd, zodat een nieuwere SDK een oudere route niet kan breken. Wat wordt toegevoegd is optioneel en additief: een genamespaced llmeu-object in het request (residency, task, retention, data_class, policy_id, max_usd_per_1m, allow_partners) en een llmeu-blok in de respons met trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, route_reason, policy_id, retention en kostenramingen. Niet aangeboden, bewust: /v1/completions (501), n > 1 (400), embeddings tenzij er daadwerkelijk een embeddingmodel wordt gehost. Het llmeu-blok kan velden krijgen; een veld verwijderen zou een breaking change zijn en zou in de changelog verschijnen.
docs/product/decisions.md:78 (ADR-004), apps/api/src/app.mjs:554 (de respons die de client leest), apps/api/src/app.mjs:255 (501 op /v1/completions), apps/web/server/pages/docs.mjs:403 (het opgeschreven compatibiliteitscontract)
Wat gebeurt er als er geen GPU is?
De MockBackend antwoordt, en zegt dat in zijn eigen output: de completion noemt het model en de regio, vermeldt dat er geen echte weights draaiden, en zegt hoe first-party inference kan worden aangezet (VLLM_BASE_URL, daarna de gpu_enabled-vlag). Zijn regio is dev-mock, wat geen plaats is, en bij een mock-aanroep zijn er geen kosten. GET /readyz meldt welke backends up zijn, en gereedheid wordt niet vervuld door een endpoint-rij die up zegt — een beheerde runtime moet daadwerkelijk healthy rapporteren, omdat het hele doel van die probe is een node te vangen waarvan de weights nog laden. Het backendregister weigert de mock te vervangen voor een endpoint waarvan de runtime vllm is; het gooit in plaats daarvan een fout. De eerlijke samenvatting is ongemakkelijk en waard om ronduit te zeggen: deze deployment heeft geen GPU, dus een aanroep hier is een demonstratie van de pipeline, geen modelrun. Een mock-succes is een succes op de wire; het wordt nooit gepresenteerd als een echte modelrun.
packages/inference/src/mock.mjs:49 (het antwoord dat de mock noemt), apps/api/src/app.mjs:157 (gereedheid omvat beheerde backends), docs/product/decisions.md:131 (ADR-007 — het register weigert een GPU-runtime te faken)
Wat betekent een modelkaart met de markering catalogue_only?
Het betekent dat we het model catalogiseren en niet aanbieden. De kaart is referentie-informatie — aanbieder, licentie, contextvenster, waar de aanbieder zegt dat het draait, bronnen voor elk cijfer — en geen enkel LLM EU-endpoint antwoordt ervoor. Vraag je het op bij de API, dan krijg je 404 hosted_unavailable, met de notitie "catalogue only — not hosted on LLM EU yet"; een pagina ervoor vermeldt geen prijs, omdat een prijs voor iets dat niemand kan aanroepen een bewering is zonder iets erachter. Requests naar dat model gaan rechtstreeks naar zijn aanbieder, onder de eigen voorwaarden van die aanbieder, en de modelkaart zegt precies dat. De tegenovergestelde badge is ook geen sterkere belofte: een model dat wij hosten, wordt gehost in een benoemde regio met een benoemde sovereignty class, en dat is de bewering die u op de trace kunt controleren. Geen van beide badges is een compliance-verklaring.
packages/router/src/engine.mjs:325 (de router verwerpt het soort), apps/api/src/app.mjs:235 (404 hosted_unavailable met de notitie), apps/web/server/pages/docs.mjs:446 (prijzen slaan catalogue_only over)
Hoe werken prijzen en tegoed vandaag?
Prijzen zijn per miljoen tokens in en uit, opgeslagen per endpoint en getoond op de prijzenpagina en de modelkaarten, in EUR, afgeleid van één gepubliceerde USD-koers; het grootboek zelf slaat USD-micros op en schrijft de koers op elke rij, zodat een eerdere factuur exact kan worden gereconstrueerd. Elke completion retourneert cost_estimate_usd en cost_estimate_eur, en een trace registreert de kosten in beide. Beleidslimieten — een limiet per miljoen en een daglimiet — worden vóór routering gecontroleerd, dus een request boven budget wordt geweigerd in plaats van uitgevoerd. Kaartbetalingen zijn niet ingeschakeld op deze deployment, en niets voegt automatisch tegoed toe: er is nog geen factuurrun en geen operatorpad voor tegoed. De console toont wat is besteed en wat resteert. Als een stripe_enabled-vlag wordt aangezet, accepteert de credit-handler een gepost bedrag zonder te verifiëren dat er een betaling heeft plaatsgevonden — daarom moet de vlag uit blijven tot betalingsverificatie is geïmplementeerd en getest, en daarom zeggen we dat hier in plaats van een checkoutknop aan te bieden.
docs/product/decisions.md:148 (ADR-008 — micros opgeslagen, EUR weergegeven), apps/api/src/inference.mjs:457 (kostenramingen per request), apps/web/server/pages/docs.mjs:463 (de prijzenpagina vermeldt dat betalingen uit staan), apps/web/server/pages/docs.mjs:559 (de credit-handler verifieert betaling niet)
Kunnen we self-hosten?
Niet via iets dat we vandaag leveren. Er is geen self-hosted distributie: geen containerimage, geen installer, geen on-premise licentie, geen supportcontract om dit in uw eigen omgeving te draaien, en deze repository wordt niet aangeboden als ondersteunde deployment. Het team-oppervlak van de console bestaat, maar organisatierollen zijn geen volledige rolgebaseerde toegangscontrole, en dat is gedocumenteerd in plaats van weggeredeneerd. Wat de catalogus wel bevat, is een residency-klasse genaamd on_prem_customer — "het model draait binnen infrastructuur die de klant beheert" — en het is een classificatie van eigendom en exploitatie van een endpoint, geen aanbod van ons. Veel modellen in de catalogus publiceren open weights, en hun licenties (sommige niet-commercieel, sommige alleen voor onderzoek) staan met een link op de kaarten, zodat u kunt beoordelen of u ze zelf kunt draaien; dat is een beslissing over andermans weights en andermans licentie, geen self-hostingproduct van LLM EU. Voor een on-premisegesprek is de enterprise-pagina de juiste ingang, en het is eerlijk dat de regeling nog niet bestaat.
packages/router/src/engine.mjs:12 (on_prem_customer komt alleen voor in residency-mappings), packages/shared/src/catalog-schema.mjs:84 (de definitie ervan), apps/web/server/pages/docs.mjs:517 (onvolledige RBAC, vermeld), packages/content/models.mjs:695 (een open-weight-licentie op een kaart)
Als een antwoord hier onjuist is, is het een defect en behandelen we het als zodanig. Waar de code en deze pagina van elkaar afwijken, wint de code — en de evidence-pagina, de beveiligingspagina en de juridische index zijn de plekken waar we de rest van het ongemakkelijke detail bewaren in plaats van het tien keer te herhalen.
Vragen die deze pagina niet beantwoordt: mail@llmeu.com
Bewijs en verificatie · Beveiliging · Juridisch · Toegankelijkheid