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

JSON von einem Modell anfordern

Nach dieser Lektion: Ich kann eine Antwort in einer Form anfordern, die mein Programm lesen kann.

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

Die Antwort, die die App zum Absturz brachte

JSON von einem Sprachmodell anzufordern heißt, ihm in der Aufforderung genau die Form der gewünschten Antwort zu beschreiben. Das ist wichtig, weil ein Programm nur eine Antwort nutzen kann, die es lesen kann.

Die App einer Mensa bittet ein Modell, ein Brötchen und seinen Preis zu erfinden. Eines Tages beginnt die Antwort mit „Klar, hier ist“ und das Programm bleibt stehen. Das Modell hat geantwortet, aber nicht in lesbarer Form.

Am Ende dieser Lektion

Notiz

Ich kann eine Antwort in einer Form anfordern, die mein Programm lesen kann.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Aufforderungder Text, den Sie an ein Modell senden
JSONein Textformat für Daten, aus Schlüsseln und Werten
Schlüsselder Name eines Feldes in einem JSON-Objektpreis
Codeblockdrei Gravis-Zeichen, die Code in einer Antwort umgeben
Parseneinen Text in nutzbare Daten einlesen
Token-Grenzedie größte Länge einer Antwort

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

Die Form in der Aufforderung sagen

Ein Modell errät aus Ihren Worten, was Sie wollen. Sagen Sie deshalb die Form. Nennen Sie die Schlüssel, geben Sie den Typ jedes Wertes an und sagen Sie, was wegbleiben soll.

Schließen Sie mit einer einfachen Regel: nur mit dem JSON antworten. Je mehr Sie dem Zufall überlassen, desto verschiedener werden die Antworten.

Beispiel: drei Aufforderungen für ein Brötchen

Die Aufforderung sagtWas zurückkommen kann
Nennen Sie mir ein Brötchen und einen PreisSätze, vielleicht eine Liste, keine festen Schlüssel
Nennen Sie mir ein Brötchen als JSONWahrscheinlich JSON, mit Schlüsseln, die Sie nicht gewählt haben
Antworten Sie mit einem JSON-Objekt mit den Schlüsseln name (Text) und preis (eine Zahl). Antworten Sie nur mit dem JSON.Eher die Form, die Sie verlangt haben

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

Eine Beispielantwort zeigen

Ein Beispiel ist mehr wert als ein Absatz voller Regeln. Legen Sie in die Aufforderung eine vollständige Antwort mit erfundenen Werten und sagen Sie, dass die echte Antwort dieselben Schlüssel haben muss.

Modelle neigen dazu, das Muster eines Beispiels zu kopieren. Nehmen Sie Werte, die niemand für echt hält, sonst gilt ein kopiertes Beispiel als echte Antwort.

Die Modellhilfe 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.

Die Modellhilfe 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 erste Skript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' '' 'const nachrichten = [' '  { role: \"system\", content: \"Sie antworten nur mit JSON.\" },' '  { role: \"user\", content: \"Erfinden Sie ein belegtes Brötchen für die Mensa einer Hochschule. Antworten Sie mit einem JSON-Objekt mit den Schlüsseln name (Text) und preis (eine Zahl in Euro). Antworten Sie nur mit dem JSON.\" },' '];' 'const zaun = \"\x60\x60\x60\";' '// Aufgezeichnete Probe, nur benutzt, wenn kein Modell antwortet. Sie ist absichtlich unordentlich.' 'const probe = \"Klar, hier ist Ihr Brötchen:\n\" + zaun + \"json\n\" + JSON.stringify({ name: \"Käsebrötchen\", preis: 2.2 }) + \"\n\" + zaun + \"\nGuten Appetit.\";' > anfrage1.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 erste Skript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function jsonHerausziehen(text) {' '  try { return JSON.parse(text); } catch (fehler) { }' '  const anfang = text.indexOf(\"{\");' '  const ende = text.lastIndexOf(\"}\");' '  if (anfang === -1 || ende < anfang) return null;' '  try { return JSON.parse(text.slice(anfang, ende + 1)); } catch (fehler) { return null; }' '}' '' 'async function main() {' '  const antwort = await fragen(nachrichten, probe, 100);' '  console.log(\"Rohantwort:\");' '  console.log(antwort);' '  let ganz = true;' '  try { JSON.parse(antwort); } catch (fehler) { ganz = false; }' '  console.log(\"Die ganze Antwort ist JSON:\", ganz ? \"ja\" : \"nein\");' '  console.log(\"Herausgezogen:\", JSON.stringify(jsonHerausziehen(antwort)));' '}' 'main();' >> anfrage1.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.

Ausführen und die Antwort lesen

Befehl
docker exec -w /home/node/project agent node anfrage1.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.

Eine mögliche Ausgabe

ZeileWas sie zeigen kann
RohantwortEin Satz, dann das JSON in einem Codeblock, dann ein weiterer Satz
Die ganze Antwort ist JSONnein
Herausgezogen{"name":"Käsebrötchen","preis":2.2}

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

Warum eine gute Aufforderung scheitern kann

Auch eine klare Aufforderung kann scheitern. Das Modell kann einen Gruß anfügen, das JSON in einen Codeblock packen oder einen Schlüsselnamen ändern. Es kann auch zu früh aufhören, wenn die Token-Grenze zu klein ist, und das JSON bleibt abgeschnitten.

Deshalb wird immer geparst und geprüft. Gutes Fragen macht eine schlechte Antwort seltener. Unmöglich macht es sie nie.

Ein häufiger Fehler

Warnung

Viele glauben, eine klare Aufforderung erspare die Prüfung. Eine Aufforderung senkt nur die Wahrscheinlichkeit einer schlechten Antwort. Behalten Sie die Prüfung, auch wenn die letzten hundert Antworten gut waren.

Ü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.