Häufige Fragen

Die meisten Seiten dieser Website behaupten etwas. Diese beantwortet zehn Fragen, für die man uns sonst eine E-Mail schreiben müsste. Wo die Antwort "noch nicht" lautet, steht "noch nicht" — eine Seite, die übertreibt, wäre weniger wert als keine Seite, weil jede andere Seite hier prüfbar geschrieben ist.

Wo werden Prompts und Antworten verarbeitet?

An dem Endpunkt, den der Router auswählt; das ist eine benannte Region, und die Antwort nennt sie: Der llmeu-Block jeder Antwort trägt inference_region, endpoint_id und sovereignty_class. Ein Residenzwert in Ihrer Richtlinie begrenzt diese Menge vor der Auswahl; er wirkt als Filter, nicht als Präferenz, und catalogue_unknown ist niemals routbar. Zwei Einschränkungen zu diesem Satz. Erstens: Regionszeilen sind Konfigurationsdaten, kein Nachweis laufender Maschinen oder bestätigter Betreiberverträge — die Residenz-Dokumentation sagt das mit eigenen Worten, und wir wiederholen es hier, statt es nur dort zu lassen. Zweitens: Auf dieser Bereitstellung gibt es keine GPU. Der Standard-Backend ist der Mock, seine Region ist dev-mock, und der Mock ist kein Ort. Siehe "Was passiert, wenn es keine GPU gibt?" weiter unten. Die API, die das tut, ist ein Node-Prozess und nicht Teil dieser statischen Website — llmeu.com beantwortet Seiten, es verarbeitet keine Anfragen.

apps/api/src/inference.mjs:457 (der llmeu-Antwortblock), packages/router/src/engine.mjs:467 (Residenz wird vor der Bewertung angewandt), packages/inference/src/mock.mjs:7 (MOCK_REGION = dev-mock), packages/shared/src/catalog-schema.mjs:64 (die routbaren Klassen)

Werden Prompts und Antworten gespeichert?

Nein. Prompt- und Antworttexte werden nicht in die Datenbank geschrieben. Jeder Aufruf speichert Metadaten — angefragtes und verwendetes Modell, Version, Endpunkt, Region, Souveränitätsklasse, Begründung des Routers, Token-Zahlen, Latenz, Kosten, Status — und prompt_stored der Zeile ist 0. Die beiden Textspalten existieren im Schema und sind null. Die Durchsetzung ist Code, keine Prosa: Eine Anfrage, deren effektive Aufbewahrung nicht zero ist, wird abgelehnt — mit 403 retention_exceeds_policy, wenn sie mehr verlangt, als Ihre Richtlinie erlaubt, und mit 501 retention_not_implemented, wenn sie erlaubt, aber nicht implementiert ist. Richtlinien können 24h, 7d oder 30d als Auswahl speichern; die Auswahl zu speichern aktiviert keine Textspeicherung. Zeigt ein Trace jemals prompt_stored ungleich 0, ist das die Ein-Seiten-Antwort auf "was habt ihr behalten" — und Sie können es selbst mit jq prüfen, wie die Nachweis-Seite zeigt.

packages/shared/src/db/schema.sql:295 (prompt_stored und die beiden Textspalten), 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)

Trainiert ihr auf Kundendaten?

Nein — nichts in diesem Produkt ist dazu überhaupt in der Lage. Es gibt keinen Trainings- oder Fine-Tuning-Codepfad in der API, im Web-Prozess, im Router oder in den geteilten Paketen. Die API orchestriert eine Anfrage an ein Backend und misst sie; es gibt keine Datensatz-Aufnahme, keinen Korpus-Speicher und keinen Fine-Tuning-Job. Prompt- und Antworttexte werden nicht in die Datenbank geschrieben, es gibt also nicht einmal einen gespeicherten Korpus zum Trainieren. Das ist eine Aussage über unseren Code, nicht über die vorgelagerten Trainingsdaten jedes Modells. Modelle, die mit Daten anderer trainiert wurden oder ihre Trainingsdaten offenlegen, sind auf ihren eigenen Karten mit Quellen beschrieben, und einige dieser Karten sagen, dass die Trainingsdaten nicht veröffentlicht sind.

apps/api/src/inference.mjs (der gesamte Anfragepfad: orchestrieren, messen, nie speichern), packages/shared/src/db/schema.sql (keine Datensatz- oder Korpus-Tabelle), packages/content/models.mjs:196 (eine Karte, die sagt, dass die Trainingsdaten nicht veröffentlicht sind)

Was passiert, wenn kein Endpunkt meine Residenzrichtlinie erfüllt?

Die Anfrage schlägt fehl. Sie wird nicht auf eine nahe gelegene Region herabgestuft und nirgendwo anders hingeschickt: 409 no_endpoint_for_policy, mit der Begründung im Fehlerkörper und den ausgeschlossenen Endpunkten im Trace. Residenz wird vor der Bewertung angewandt, und ein Failover bewegt sich nur innerhalb der Menge, die der Router bereits gefiltert hat — deshalb kann ein erneuter Versuch die von Ihnen gesetzte Regel nicht still umgehen. Der Code sagt es in einem Satz: "No endpoint satisfies residency {x}. Residency is never relaxed silently." Was man dagegen tun kann: eine Region oder Klasse nennen, die Ihre Richtlinie zulässt, die Richtlinie bewusst erweitern (eine Entscheidung, mit Eintrag im Changelog), oder akzeptieren, dass es für dieses Modell unter dieser Regel keine Route gibt. Ein 409 ist das Produkt, das wie entworfen arbeitet; der Fehlerfall, den es verhindert, ist eine Anfrage, die irgendwo "erfolgreich" war, wo Sie es nicht erlaubt haben.

packages/shared/src/errors.mjs:59 (no_endpoint_for_policy), packages/router/src/engine.mjs:370 (das Fehlschlagen, vor der Bewertung), packages/router/src/engine.mjs:507 (Failover kann die gefilterte Menge nicht verlassen), apps/api/src/inference.mjs:137 (Aufbewahrung wird vor dem Routing geprüft)

Ist das DSGVO-konform oder zertifiziert?

Diese Aussage treffen wir nicht, und wir werden sie nicht treffen — nicht "AI Act compliant", nicht "zertifiziert", nicht "Official EU". LLM EU ist ein privates Unternehmen. Es ist keine EU-Institution und keine Konformitätsbewertungsstelle. "Verified" auf dieser Website bedeutet dokumentiert, nicht rechtlich zertifiziert: eine Offenlegungs-Checkliste, bewertet danach, ob eine Karte Residenz, Anbieter, Version, Aufbewahrung, Unterauftragsverarbeiter und Lizenz mit Links nennt. Sagen können wir, was der Code tut und wo die Lücken sind: zero als einzige implementierte Aufbewahrung, im Code durchgesetzt; API-Schlüssel als scrypt-Hashes mit einmalig angezeigtem Geheimnis; jede Kundenabfrage auf die Organisation beschränkt; Ratenbegrenzungen pro IP, pro Schlüssel und pro Organisation; Anfragekörper begrenzt und validiert. Was nicht erledigt ist: kein unabhängiger Penetrationstest; kein externes Audit; Datenschutzerklärung und Nutzungsbedingungen sind Zusammenfassungen; der AVV ist eine ungeprüfte, nicht unterzeichnete Vorlage; das Unterauftragsverarbeiter-Inventar ist unvollständig. Die Sicherheitsseite und die Rechtsübersicht führen diese Lücken in eigenen Abschnitten; diese Antwort verweist darauf, statt sie in etwas Weicheres umzuformulieren.

docs/product/decisions.md:115 (ADR-006 — kein Compliance-Stempel, in keiner Zeichenkette), apps/web/server/pages/docs.mjs:537 (SECURITY_COPY: Maßnahmen- und Lückenliste), apps/web/server/pages/docs.mjs:643 (LEGAL_READINESS: Stand je Dokument)

Ist die API OpenAI-kompatibel, und was muss ein Kunde ändern?

Die Basis-URL, und sonst nichts. /v1/chat/completions akzeptiert die offizielle Anfrageform und liefert die offizielle Antwortform — choices, usage, Streaming als SSE —, sodass die offiziellen SDKs funktionieren, sobald Sie sie auf uns richten. Zusätzliche Felder im Body werden ignoriert statt abgelehnt, damit ein neueres SDK eine ältere Route nicht brechen kann. Was hinzukommt, ist optional und additiv: ein namensraumgebundenes llmeu-Objekt in der Anfrage (residency, task, retention, data_class, policy_id, max_usd_per_1m, allow_partners) und ein llmeu-Block in der Antwort mit trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, route_reason, policy_id, retention und Kostenschätzungen. Bewusst nicht angeboten: /v1/completions (501), n > 1 (400), Embeddings, solange kein Embedding-Modell tatsächlich gehostet wird. Der llmeu-Block darf Felder hinzugewinnen; ein Feld zu entfernen wäre eine brechende Änderung und stünde im Changelog.

docs/product/decisions.md:78 (ADR-004), apps/api/src/app.mjs:554 (die Antwort, die der Client liest), apps/api/src/app.mjs:255 (501 auf /v1/completions), apps/web/server/pages/docs.mjs:403 (der schriftliche Kompatibilitätsvertrag)

Was passiert, wenn es keine GPU gibt?

Das MockBackend antwortet, und es sagt es in seiner eigenen Ausgabe: Die Antwort nennt Modell und Region, stellt fest, dass keine echten Gewichte liefen, und sagt, wie man First-Party-Inferenz einschaltet (VLLM_BASE_URL, dann das Flag gpu_enabled). Seine Region ist dev-mock, was kein Ort ist, und ein Mock-Aufruf kostet nichts. GET /readyz meldet, welche Backends oben sind, und Bereitschaft wird nicht durch eine Endpunktzeile erfüllt, die up sagt — eine verwaltete Laufzeit muss tatsächlich healthy melden, denn genau das soll diese Prüfung fangen: einen Knoten, dessen Gewichte noch laden. Die Backend-Registry weigert sich, den Mock für einen Endpunkt zu setzen, dessen Laufzeit vllm ist; sie wirft stattdessen einen Fehler. Die ehrliche Zusammenfassung ist unangenehm und es wert, klar gesagt zu werden: Diese Bereitstellung hat keine GPU, ein Aufruf hier ist also eine Vorführung der Pipeline, kein Modelllauf. Ein Mock-Erfolg ist ein Erfolg auf dem Draht; er wird nie als echter Modelllauf dargestellt.

packages/inference/src/mock.mjs:49 (die Antwort, die den Mock nennt), apps/api/src/app.mjs:157 (Bereitschaft umfasst verwaltete Backends), docs/product/decisions.md:131 (ADR-007 — die Registry weigert sich, eine GPU-Laufzeit vorzutäuschen)

Was bedeutet eine Modellkarte mit catalogue_only?

Sie bedeutet: Wir katalogisieren das Modell und liefern es nicht aus. Die Karte ist Referenzinformation — Anbieter, Lizenz, Kontextfenster, wo der Anbieter nach eigener Angabe rechnet, Quellen für jede Zahl — und kein LLM-EU-Endpunkt antwortet dafür. Fragen Sie die API danach, erhalten Sie 404 hosted_unavailable mit dem Hinweis "catalogue only — not hosted on LLM EU yet"; eine Seite dafür nennt keinen Preis, denn ein Preis für etwas, das niemand aufrufen kann, ist eine Behauptung ohne Grundlage. Anfragen an dieses Modell gehen direkt an seinen Anbieter, zu dessen Bedingungen, und die Modellkarte sagt genau das. Das umgekehrte Abzeichen ist auch kein stärkeres Versprechen: Ein von uns gehostetes Modell läuft in einer benannten Region mit einer benannten Souveränitätsklasse, und das ist die Behauptung, die Sie im Trace prüfen können. Keines der beiden Abzeichen ist eine Compliance-Aussage.

packages/router/src/engine.mjs:325 (der Router weist die Art zurück), apps/api/src/app.mjs:235 (404 hosted_unavailable mit dem Hinweis), apps/web/server/pages/docs.mjs:446 (die Preisseite überspringt catalogue_only)

Wie funktionieren Preise und Guthaben heute?

Preise gelten pro Million Tokens hinein und hinaus, sind je Endpunkt gespeichert und stehen auf der Preisseite und den Modellkarten, in EUR, abgeleitet aus einem veröffentlichten USD-Kurs; das Ledger selbst speichert USD-Mikros und schreibt den Kurs in jede Zeile, sodass eine frühere Rechnung exakt rekonstruierbar ist. Jede Antwort liefert cost_estimate_usd und cost_estimate_eur, und ein Trace hält die Kosten in beiden fest. Richtlinienlimits — eine Obergrenze pro Million und eine Tagesgrenze — werden vor dem Routing geprüft, eine überbudgetierte Anfrage wird also abgelehnt statt ausgeführt. Kartenzahlungen sind auf dieser Bereitstellung nicht aktiviert, und nichts bucht Guthaben automatisch auf: Es gibt keinen Rechnungslauf und keinen Betreiber-Pfad für Guthaben. Die Konsole zeigt, was ausgegeben wurde und was bleibt. Wird ein Flag stripe_enabled eingeschaltet, nimmt der Guthaben-Handler einen übermittelten Betrag an, ohne zu prüfen, ob eine Zahlung erfolgt ist — deshalb muss das Flag aus bleiben, bis Zahlungsprüfung implementiert und getestet ist, und deshalb sagen wir das hier, statt einen Bezahlknopf anzubieten.

docs/product/decisions.md:148 (ADR-008 — Mikros gespeichert, EUR angezeigt), apps/api/src/inference.mjs:457 (Kostenschätzungen je Anfrage), apps/web/server/pages/docs.mjs:463 (die Preisseite stellt fest, dass Zahlungen aus sind), apps/web/server/pages/docs.mjs:559 (der Guthaben-Handler prüft keine Zahlung)

Können wir selbst hosten?

Nicht über etwas, das wir heute ausliefern. Es gibt keine Self-Hosting-Distribution: kein Container-Image, keinen Installer, keine On-Premise-Lizenz, keinen Supportvertrag für den Betrieb in Ihrer eigenen Umgebung, und dieses Repository wird nicht als unterstützte Bereitstellung angeboten. Die Team-Oberfläche der Konsole existiert, aber Organisationsrollen sind keine vollständige rollenbasierte Zugriffskontrolle, und das ist dokumentiert statt wegerklärt. Was der Katalog trägt, ist eine Residenzklasse namens on_prem_customer — "das Modell läuft in Infrastruktur unter Kontrolle des Kunden" — und das ist eine Klassifizierung von Eigentum und Betrieb eines Endpunkts, kein Angebot von uns. Viele Modelle im Katalog veröffentlichen offene Gewichte, und ihre Lizenzen (teils nicht kommerziell, teils nur für Forschung) stehen mit Link auf den Karten; Sie können also prüfen, ob Sie sie selbst betreiben wollen. Das ist eine Entscheidung über fremde Gewichte und eine fremde Lizenz, kein Self-Hosting-Produkt von LLM EU. Für ein On-Premise-Gespräch ist die Unternehmensseite die richtige Tür, und sie ist ehrlich damit, dass die Vereinbarung noch nicht existiert.

packages/router/src/engine.mjs:12 (on_prem_customer erscheint nur in Residenz-Zuordnungen), packages/shared/src/catalog-schema.mjs:84 (seine Definition), apps/web/server/pages/docs.mjs:517 (unvollständiges RBAC, benannt), packages/content/models.mjs:695 (eine Offene-Gewichte-Lizenz auf einer Karte)

Ist eine Antwort hier falsch, ist das ein Fehler, den wir wie einen Fehler behandeln. Wo der Code und diese Seite sich widersprechen, gewinnt der Code — und die Nachweis-Seite, die Sicherheitsseite und die Rechtsübersicht sind die Orte, an denen der Rest der unangenehmen Details liegt, statt ihn zehnmal zu wiederholen.

Fragen, die diese Seite nicht beantwortet: mail@llmeu.com

Nachweise und Prüfung · Sicherheit · Rechtliches · Barrierefreiheit