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

Was tun, wenn ein Werkzeug scheitert

Nach dieser Lektion: Ich kann den Fehler eines Werkzeugs als Ergebnis zurückgeben, damit das Modell sich erholen kann.

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

Werkzeuge scheitern, und das Modell kann helfen

Ein Werkzeug kann scheitern. Der Artikel existiert vielleicht nicht, der Dienst ist langsam, oder das Modell hat einen schlechten Wert gesendet. Stürzt Ihr Programm ab, hält der ganze Assistent an.

Gibt Ihr Programm den Fehler als Ergebnis zurück, kann das Modell ihn lesen und sich fangen.

Am Ende dieser Lektion

Notiz

Ich kann den Fehler eines Werkzeugs als Ergebnis zurückgeben, damit das Modell sich erholen kann.

Schlüsselwörter

BegriffWas er bedeutet
Ausnahmeein Fehler, den eine Funktion auslöst, wenn sie nicht fertig werden kann
Fehlerergebniseine Werkzeugnachricht, die sagt, was schiefging
Wiederholungdenselben Aufruf noch einmal versuchen
Zeitüberschreitungein Aufruf, der zu lange dauerte und aufgegeben wurde
Aufgebennicht mehr versuchen und das Scheitern melden

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

Ein Fehler ist ein lesbares Ergebnis

Umgeben Sie den Aufruf mit einem try. Löst er einen Fehler aus, halten Sie nicht an. Legen Sie die Meldung in eine Werkzeugnachricht, etwa Fehler: nicht gefunden: kiwi, und fragen Sie das Modell erneut.

Das Modell sieht die Worte. Es kann sich beim Nutzer entschuldigen oder einen anderen Artikel versuchen. Die Schleife behält ihre Schrittgrenze, sie kann also nicht ewig laufen.

Durchgerechnetes Beispiel: was aus jedem Scheitern wird

Was schiefgingWiederholen?Meldung an das Modell
Der Artikel ist nicht im LadenNeinFehler: nicht gefunden: kiwi
Der Wert ist nicht erlaubtNeinFehler: negative Zahl
Die Argumente passen nichtNeinFehler: ungültige Argumente
Der Dienst hat die Zeit überschrittenJa, einige MaleFehler: Zeit überschritten, nach dem letzten Versuch

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

Einen Helfer speichern, der das Modell aufruft

Befehl
docker exec -w /home/node/project agent node -e "const fragen=async(m,t,c)=>{const r=await fetch((process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions',{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:m,tools:t,tool_choice:c,max_tokens:120})});const j=await r.json();if(r.ok)return j.choices[0].message;throw Error(r.status+' '+j.error.message)};require('fs').writeFileSync('ki.cjs','exports.fragen='+fragen+';');console.log('ki.cjs gespeichert: fragen(messages, tools) gibt die Nachricht des Modells zurück.')"

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 scheiterndes und ein wackeliges Werkzeug umhüllen

Befehl
docker exec -w /home/node/project agent node -e "let n=0;const wackelig=()=>{n++;if(n<3)throw Error('Zeit');return 'ok'};const preis=a=>{if((a.artikel=='apfel')===false)throw Error('nicht gefunden: '+a.artikel);return 40};const aufrufen=(f,a,versuche)=>{for(let i=1;;i++){try{return{ok:true,ergebnis:String(f(a)),anzahl:i}}catch(e){if(e.message=='Zeit'&&i<versuche)continue;return{ok:false,fehler:e.message,anzahl:i}}}};console.log(JSON.stringify(aufrufen(preis,{artikel:'apfel'},3)));console.log(JSON.stringify(aufrufen(preis,{artikel:'kiwi'},3)));console.log(JSON.stringify(aufrufen(wackelig,{},3)))"

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

Wiederholen Sie nur, was klappen kann

Eine Zeitüberschreitung kann vorübergehen, ein neuer Versuch kann also helfen. Ein fehlender Artikel bleibt fehlend, eine Wiederholung verschwendet nur Zeit.

Legen Sie eine Zahl von Versuchen fest, zählen Sie jeden Aufruf und geben Sie mit einer klaren Meldung auf, wenn sie aufgebraucht sind. Melden Sie, wie viele Versuche Sie gemacht haben.

Einem Modell einen Fehler zurückgeben

Befehl
docker exec -w /home/node/project agent node -e "const{fragen}=require('./ki.cjs');const P={apfel:40,birne:45};const T=[{type:'function',function:{name:'preis_von',description:'Preis.',parameters:{type:'object',properties:{artikel:{type:'string'}}}}}];const los=async(m,f)=>{try{return await fragen(m,T)}catch(e){console.log('Fehler ('+e.message+'). Aufgezeichnetes Beispiel:');return f}};(async()=>{const m=[{role:'user',content:'Preis: Kiwi?'}];const a=await los(m,{role:'assistant',tool_calls:[{id:'c1',function:{name:'preis_von',arguments:JSON.stringify({artikel:'kiwi'})}}]});m.push(a);const c=a.tool_calls?.[0];if(c==null)return console.log('Antwort: '+a.content);const i=JSON.parse(c.function.arguments).artikel;const r=i in P?String(P[i]):'Fehler: nicht gefunden: '+i;console.log('Ergebnis: '+r);m.push({role:'tool',tool_call_id:c.id,content:r});const b=await los(m,{role:'assistant',content:'Keine.'});console.log('Dann: '+(b.content||JSON.stringify(b.tool_calls[0].function)))})()"

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 häufiger Fehler

Warnung

Viele glauben, ein gescheitertes Werkzeug bedeute, dass das ganze Gespräch gescheitert ist. Das stimmt nicht. Ein Fehler ist nur ein weiteres Ergebnis. Senden Sie ihn als Text zurück, behalten Sie die Schrittgrenze und lassen Sie das Modell entscheiden, was es tut.

Zum Weiterdenken: die Versuche ändern

Ändern Sie im Lauf, der die Werkzeuge umhüllt, den letzten Aufruf aufrufen(wackelig,{},3) in aufrufen(wackelig,{},2) und führen Sie ihn erneut aus. Sehen Sie sich die letzte Zeile an.

Schreiben Sie auf, was sich ändert (der Aufruf gibt jetzt nach zwei Versuchen auf) und warum eine Grenze für Versuche wichtig ist.

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