So schreiben Sie einen Ein-Seiten-Entwurf
Ein Ein-Seiten-Entwurf sagt, wie eine modellgestützte Funktion arbeiten und scheitern wird, bevor sie jemand baut. Er nennt Gateway, Warteschlange, Bewertungen, Budget, Rückfall und Sicherheitsregeln an einem Ort. Das ist wichtig, weil jede dieser Entscheidungen auf dem Papier billig und nachträglich teuer ist.
Zwei Entwickler erinnern sich an je ein anderes Ratenlimit. Die Entwurfsseite klärt es, und ein Skript kann die Seite prüfen.
Am Ende dieser Lektion
Notiz
Ich kann einen Ein-Seiten-Entwurf für eine modellgestützte Funktion schreiben.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Entwurfsseite | eine Seite, die sagt, wie eine Funktion arbeitet |
| Anforderung | eine Aussage, die der Entwurf erfüllen muss |
| Rückfall | was geschieht, wenn ein Modellaufruf scheitert |
| Budget | das Meiste, was eine Funktion ausgeben darf |
| Bewertung | ein Qualitätstest über feste Fälle |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Sechs Abschnitte decken eine Funktion ab
Schreiben Sie zu jedem Thema einen kurzen Abschnitt. Gateway: Schlüssel, Limits, Modellwahl. Warteschlange: welche Aufrufe Aufträge sind und wie Wiederholungen begrenzt werden. Bewertungen: die Fälle und die Bestehensgrenze. Budget: das Limit und was beim Erreichen geschieht. Rückfall: was die Nutzerin sieht, wenn ein Aufruf scheitert. Sicherheit: was der Prompt enthalten darf und was protokolliert wird.
Eine Seite zwingt zu Entscheidungen. Zwei Sätze pro Abschnitt genügen.
Beispiel: was jeder Abschnitt sagen muss
| Abschnitt | Eine Anforderung, die er erfüllt | Gesuchte Wendung |
|---|---|---|
| Gateway | Aufrufer haben nie den Schlüssel des Anbieters | Kundenschlüssel |
| Warteschlange | Langsame Arbeit blockiert keine Anfrage | Auftrag, Wiederholung |
| Bewertungen | Eine Änderung wird an festen Fällen beurteilt | Fälle, Bestehensquote |
| Budget | Ausgaben haben eine Decke | Tagesgrenze |
| Rückfall | Die Nutzerin bekommt immer etwas | einfache Antwort |
| Sicherheit | Personenbezogene Daten werden minimiert und Protokolle sind sicher | personenbezogene Daten, Protokoll |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Skript kann eine Entwurfsseite prüfen
Machen Sie aus jeder Anforderung einen Abschnitt und ein paar Wendungen, die vorkommen müssen. Ein kurzes Skript liest die Seite und listet auf, was fehlt. Es kann nicht beurteilen, ob der Entwurf gut ist. Es beweist nur, dass die Seite jede Frage beantwortet hat.
Lassen Sie es im Review laufen und halten Sie die Seite kurz: Eine Wortgrenze ist auch eine Anforderung.
Ein häufiger Fehler
Warnung
Viele glauben, ein Entwurf, der das Skript besteht, sei ein guter Entwurf. Das Skript prüft, dass ein Thema vorkommt, nicht, dass die Entscheidung richtig ist. Bestehen ist der Anfang des Reviews, nie sein Ende.
Das Modell-Hilfsskript schreiben, Teil 1
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
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.
Die Entwurfsprüfung schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Ein Ein-Seiten-Entwurf für eine Funktion, die Tickets zusammenfasst, für die Lektion erfunden.' 'const entwurf = {' ' gateway: \"Aufrufer nutzen einen Kundenschlüssel. Das Gateway wendet ein Ratenlimit von 60 pro Minute an und wählt das Modell.\",' ' warteschlange: \"Eine Zusammenfassung ist ein Auftrag. Ein Arbeiter führt ihn aus, und eine Wiederholung ist auf drei Versuche begrenzt.\",' ' bewertung: \"Vierzig Fälle mit bekannten Antworten. Wir vergleichen die Bestehensquote jeder Prompt-Version.\",' ' budget: \"Eine Tagesgrenze pro Team. Darüber sagt die Funktion das und hält an.\",' ' rueckfall: \"Scheitert das Modell, probieren wir ein zweites Modell und zeigen dann die ersten Zeilen des Tickets.\",' ' sicherheit: \"Tickets können personenbezogene Daten enthalten, also bekommt der Prompt nur das Nötige.\",' '};' > design.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 Entwurfsprüfung schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const anforderungen = [' ' { id: \"A1\", abschnitt: \"gateway\", woerter: [\"kundenschlüssel\", \"ratenlimit\"] },' ' { id: \"A2\", abschnitt: \"warteschlange\", woerter: [\"auftrag\", \"wiederholung\"] },' ' { id: \"A3\", abschnitt: \"bewertung\", woerter: [\"fälle\", \"bestehensquote\"] },' ' { id: \"A4\", abschnitt: \"budget\", woerter: [\"tagesgrenze\"] },' ' { id: \"A5\", abschnitt: \"rueckfall\", woerter: [\"einfache antwort\"] },' ' { id: \"A6\", abschnitt: \"sicherheit\", woerter: [\"personenbezogene daten\", \"protokoll\"] },' '];' >> design.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 Entwurfsprüfung schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function pruefen(e, liste, maxWoerter) {' ' const ausgabe = [];' ' liste.forEach(function (a) {' ' const text = (e[a.abschnitt] || \"\").toLowerCase();' ' if (text.trim() === \"\") { ausgabe.push(a.id + \": kein Abschnitt \" + a.abschnitt); return; }' ' a.woerter.forEach(function (w) { if (text.indexOf(w) < 0) ausgabe.push(a.id + \": es fehlt \" + w); });' ' });' ' let n = 0;' ' for (const k in e) n += e[k].split(\" \").length;' ' if (n > maxWoerter) ausgabe.push(\"zu lang: \" + n + \" Wörter\");' ' return ausgabe;' '}' 'const probleme = pruefen(entwurf, anforderungen, 120);' 'probleme.forEach(function (p) { console.log(\"Problem:\", p); });' 'console.log(\"Erfüllte Anforderungen:\", anforderungen.length - probleme.length, \"von\", anforderungen.length);' >> design.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 Entwurfsseite prüfen
docker exec -w /home/node/project agent node design.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Dieser Run braucht kein Modell
Die Prüfung ist einfacher Code über Text, sie macht also keinen Aufruf. Das Hilfsskript wird für spätere Übungen geschrieben, und ein Run, der ein Modell aufruft, gibt eine gekennzeichnete aufgezeichnete Probe aus, wenn keines antwortet.
Der Entwurf ist erfunden. Ein echter Entwurf nennt Ihre eigenen Dienste und Zahlen.
Eine mögliche Ausgabe
| Zeile | Was sie zeigt |
|---|---|
| Problem: A5: es fehlt einfache antwort | Der Rückfall sagt nie, was die Nutzerin am Ende sieht |
| Problem: A6: es fehlt protokoll | Der Sicherheitsabschnitt sagt nichts zu Protokollen |
| Erfüllte Anforderungen: 4 von 6 | Vier Abschnitte beantworteten jede Frage |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.