Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wozu ein LLM-Gateway dient

Nach dieser Lektion: Ich kann sagen, wozu ein Gateway vor Modellaufrufen dient.

Lektion, 60 Min.7 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Warum Modellaufrufe über ein Gateway laufen

Ein LLM-Gateway ist ein einziger Dienst, durch den alle Modellaufrufe laufen. Er hält die Schlüssel des Anbieters, wendet Limits an, protokolliert den Aufruf und wählt das Modell. Das ist wichtig, weil jedes Produkt, das den Anbieter direkt aufruft, jede Regel selbst nachbauen müsste.

Ein Unternehmen hat drei Produkte, die ein Modell aufrufen. Eines lässt einen Schlüssel in einem Build-Protokoll durchsickern. Ein anderes hat kein Limit und verbraucht ein Monatsbudget in einer Nacht. Ein Gateway macht aus beidem eine einzige Korrektur.

Am Ende dieser Lektion

Notiz

Ich kann sagen, wozu ein Gateway vor Modellaufrufen dient.

Schlüsselwörter

BegriffWas er bedeutet
Gatewayein Dienst, durch den alle Modellaufrufe laufen
Kundenschlüsselein Schlüssel, mit dem ein Team das Gateway erreicht
Ratenlimiteine Obergrenze für Anfragen in einem Zeitfenster
Routingdie Wahl, welches Modell eine Anfrage bedient
Anfrageprotokolleine Aufzeichnung jedes Aufrufs, ohne seinen Text

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Gateway hat vier Aufgaben

Jede Aufgabe ist eine Regel, die vor oder nach dem Aufruf gilt. Schlüssel: Aufrufer haben einen Kundenschlüssel, und nur das Gateway hat den Schlüssel des Anbieters. Limits: ein Zähler pro Team und Minute. Routing: eine Regel wählt das Modell. Protokoll: ein Eintrag pro Aufruf.

Weil alle Aufrufe durch eine Funktion laufen, ändert man eine Regel an einer einzigen Stelle.

Beispiel: fünf Anfragen, Limit zwei

AnfrageSchlüsselWörterErgebnis
1schluessel-berlin40ok, kleines-modell
2schluessel-berlin500ok, grosses-modell
3schluessel-berlin20begrenzt: Berlin hat schon zwei
4schluessel-zzz10abgelehnt: diesen Schlüssel gibt es nicht
5schluessel-koeln80ok, kleines-modell

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Was ein Gateway protokollieren darf

Protokollieren Sie die ID, das Team, den Status, das Modell, die Größe und die Uhrzeit. Protokollieren Sie nicht den Text des Prompts. Prompts enthalten personenbezogene Daten, und ein Protokoll lesen mehr Menschen als die Funktion selbst.

Das Gateway ist außerdem eine einzelne Fehlerquelle und ein zusätzlicher Schritt. Geben Sie ihm ein Zeitlimit, starten Sie mehrere Kopien und halten Sie seine Regeln klein.

Ein häufiger Fehler

Warnung

Viele glauben, ein Gateway mache Aufrufe sicher, weil es Schlüssel prüft. Es prüft, wer anruft, nicht, was gefragt wird. Ein gültiger Schlüssel kann trotzdem einen schädlichen Prompt senden. Limits und Protokolle begrenzen den Schaden; den Text beurteilen sie nicht.

Das Modell-Hilfsskript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 200 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    return (await res.json()).choices[0].message.content;' > model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Modell-Hilfsskript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    const liste = [].concat(probe);' '    const runde = nachrichten.filter(function (m) { return m.role === \"assistant\"; }).length;' '    return liste[Math.min(runde, liste.length - 1)];' '  }' '}' 'module.exports = { fragen };' >> model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Gateway schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const SCHLUESSEL = { \"schluessel-berlin\": \"berlin\", \"schluessel-koeln\": \"koeln\" }; // erfundene Schlüssel' 'const LIMIT = 2; // angenommene Anfragen pro Team' 'const zaehler = {};' 'const protokoll = [];' > gateway.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Gateway schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function waehlen(anfrage) {' '  return anfrage.woerter > 300 ? \"grosses-modell\" : \"kleines-modell\";' '}' 'function gateway(anfrage) {' '  const team = SCHLUESSEL[anfrage.schluessel];' '  let status = \"ok\";' '  if (team === undefined) status = \"abgelehnt\";' '  else if ((zaehler[team] || 0) >= LIMIT) status = \"begrenzt\";' '  if (status === \"ok\") zaehler[team] = (zaehler[team] || 0) + 1;' '  const modell = status === \"ok\" ? waehlen(anfrage) : \"keines\";' '  protokoll.push({ id: anfrage.id, team: team || \"unbekannt\", status: status, modell: modell });' '}' >> gateway.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Gateway schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const anfragen = [' '  { id: 1, schluessel: \"schluessel-berlin\", woerter: 40 },' '  { id: 2, schluessel: \"schluessel-berlin\", woerter: 500 },' '  { id: 3, schluessel: \"schluessel-berlin\", woerter: 20 },' '  { id: 4, schluessel: \"schluessel-zzz\", woerter: 10 },' '  { id: 5, schluessel: \"schluessel-koeln\", woerter: 80 },' '];' 'anfragen.forEach(function (a) { gateway(a); });' 'protokoll.forEach(function (zeile) { console.log(zeile.id, zeile.team, zeile.status, zeile.modell); });' >> gateway.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Gateway schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const probe = \"Ein Gateway hält Schlüssel, Limits und Protokoll an einem Ort.\";' '  const nachrichten = [{ role: \"user\", content: \"In einem kurzen Satz: Warum setzt man ein Gateway vor die Modellaufrufe?\" }];' '  console.log(\"Echter Aufruf für Anfrage 1:\", await fragen(nachrichten, probe, 40));' '}' 'main();' >> gateway.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Gateway ausführen

Befehl
docker exec -w /home/node/project agent node gateway.js

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Stellvertreter, kein echtes Gateway

Dieses Gateway ist eine Funktion über eine Liste. Das Labor hat kein Netz aus Diensten, also lebt das Limit in einer Variablen. Ein echtes Gateway ist ein Dienst mit gemeinsamem Speicher für seine Zähler, damit jede Kopie dieselben Zahlen sieht.

Hier übernimmt die Plattform schon diese Rolle: Sie fügt Ihr Token hinzu und wählt das Modell für den einen echten Aufruf.

Eine mögliche Ausgabe

ZeileWas sie zeigt
1 berlin ok kleines-modellAngenommen und an das kleine Modell geschickt
3 berlin begrenzt keinesAbgelehnt, nichts geht an ein Modell
4 unbekannt abgelehnt keinesAbgelehnt, das Team ist unbekannt
Echter AufrufEin kurzer Satz von einem Modell oder eine gekennzeichnete aufgezeichnete Probe

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.