Nach einem Menschen gefragt, eine Schleife bekommen
Eine Kundin tippt: „Ich möchte mit einem Menschen sprechen.“ Der Chatbot antwortet „Dabei helfe ich gern!“ und stellt dieselbe Frage noch einmal. Die Kundin schließt die App und ruft im Laden an.
Eine gute Funktion weiß, wann sie aufhören muss. Die Übergabe gehört zum Entwurf und ist kein Scheitern.
Am Ende dieser Lektion
Notiz
Ich kann den Punkt gestalten, an dem ein Mensch übernimmt.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Übergabe | ein Gespräch an einen Menschen weitergeben |
| Auslöser | eine Regel, die eine Übergabe startet |
| Kontextnotiz | was der Mensch erfährt, damit niemand etwas wiederholt |
| Warteschlange | die Liste der Personen, die auf einen Menschen warten |
| Rückgabe | das Gespräch an das Modell zurückgeben |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Vier Auslöser entscheiden, wann übergeben wird
Schreiben Sie die Auslöser als Regeln, damit man sie testen kann. Vier sind üblich. Die Person hat nach einem Menschen gefragt. Das Thema darf ein Modell nicht entscheiden, etwa eine Erstattung. Die Sicherheit des Modells ist niedrig. Das Gespräch hat zu viele Runden.
Der erste muss immer funktionieren. Niemand sollte mit einer Maschine streiten müssen, um einen Menschen zu erreichen.
Die Notiz und das Warten
Der Mensch, der übernimmt, sollte die Kundin nicht bitten, von vorn anzufangen. Geben Sie eine kurze Notiz weiter: die Gründe, die letzte Nachricht und die Zahl der Runden.
Sagen Sie der Kundin die Wartezeit mit einer echten Zahl. Wenn der Mensch fertig ist, entscheiden Sie, ob das Gespräch an das Modell zurückgeht oder endet.
Ein häufiger Fehler
Warnung
Viele glauben, eine Übergabe heiße, die KI-Funktion sei gescheitert, und machen den Weg zu einem Menschen schwer. Es ist umgekehrt. Eine schnelle, klare Übergabe hält die Kundin. Machen Sie die Bitte leicht und schicken Sie den Kontext mit.
Modell-Helfer schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' ' return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > 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.
Modell-Helfer schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' '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 || 100 }),' ' signal: AbortSignal.timeout(30000),' ' });' ' if (res.ok === false) throw new Error(\"Status \" + res.status);' ' const d = await res.json();' ' return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' ' } catch (fehler) {' ' console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' ' return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' ' }' '}' '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.
Auslöserprüfer schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const REGELN = { maxRunden: 6, minSicherheit: 50, themen: [\"Erstattung\", \"Beschwerde\"] };' 'const GESPRAECHE = [' ' { id: \"g1\", runden: 3, sicherheit: 90, thema: \"Zeiten\", gefragt: false, letzte: \"Wann haben Sie geöffnet?\" },' ' { id: \"g2\", runden: 4, sicherheit: 80, thema: \"Erstattung\", gefragt: false, letzte: \"Ich möchte mein Geld zurück.\" },' ' { id: \"g3\", runden: 8, sicherheit: 40, thema: \"Lieferung\", gefragt: false, letzte: \"Das Paket ist immer noch nicht da.\" },' ' { id: \"g4\", runden: 2, sicherheit: 95, thema: \"Zeiten\", gefragt: true, letzte: \"Ich möchte mit einem Menschen sprechen.\" },' '];' > uebergabe.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.
Auslöserprüfer schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function gruende(g) {' ' const aus = [];' ' if (g.gefragt) aus.push(\"gefragt\");' ' if (REGELN.themen.includes(g.thema)) aus.push(\"thema\");' ' if (g.sicherheit < REGELN.minSicherheit) aus.push(\"sicherheit\");' ' if (g.runden > REGELN.maxRunden) aus.push(\"runden\");' ' return aus;' '}' >> uebergabe.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.
Auslöserprüfer schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' for (const g of GESPRAECHE) {' ' const warum = gruende(g);' ' console.log(g.id + \" \" + (warum.length > 0 ? \"übergeben \" + warum.join(\"+\") : \"beim Modell bleiben\"));' ' }' ' const n = GESPRAECHE[2];' ' console.log(\"Notiz \" + JSON.stringify({ id: n.id, gruende: gruende(n), letzte: n.letzte, runden: n.runden }));' ' const frage = \"Schreiben Sie eine kurze Zeile, die einer Kundin sagt, dass ein Mensch übernimmt und sie nichts wiederholen muss.\";' ' const r = await fragen([{ role: \"user\", content: frage }], \"Ein Mensch übernimmt jetzt. Sie müssen nichts wiederholen.\", 30);' ' console.log(\"Die Kundin sieht: \" + r.text);' '}' 'main();' >> uebergabe.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.
Auslöserprüfer ausführen
docker exec -w /home/node/project agent node uebergabe.jsHier 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
| Zeile | Was sie zeigt |
|---|---|
| g1 beim Modell bleiben | Kein Auslöser hat gegriffen |
| g2 übergeben thema | Eine Erstattung ist ein Thema für einen Menschen |
| g3 übergeben sicherheit+runden | Zwei Auslöser auf einmal |
| g4 übergeben gefragt | Die Kundin hat gefragt, also immer |
| Notiz {"id":"g3",...} | Was der Mensch bekommt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.