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

Eine Person fragen, bevor ein Werkzeug läuft

Nach dieser Lektion: Ich kann ein riskantes Werkzeug auf die Zustimmung einer Person warten lassen.

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

Manche Aufrufe sollten auf ein Ja warten

Eine Preisabfrage ändert nichts. Ein Werkzeug, das speichert, sendet oder löscht, ändert etwas. Fordert das Modell eines aus Versehen an, ist der Schaden echt.

Darum entscheidet Ihr Programm, nie das Modell, ob ein riskanter Aufruf läuft. Bei einem riskanten Aufruf fragt es zuerst eine Person.

Am Ende dieser Lektion

Notiz

Ich kann ein riskantes Werkzeug auf die Zustimmung einer Person warten lassen.

Schlüsselwörter

BegriffWas er bedeutet
Lesewerkzeugein Werkzeug, das Daten nur ansieht
Schreibwerkzeugein Werkzeug, das etwas ändert
Zustimmungdas Ja einer Person, bevor ein Aufruf läuft
Standardmäßig ablehnenablehnen, außer es gibt ein klares Ja
Protokolldie Aufzeichnung dessen, was gefragt wurde und lief

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

Sortieren Sie Werkzeuge nach Risiko

Geben Sie jedem Werkzeug ein Risiko. Ein Lesewerkzeug sieht nur an und kann sofort laufen. Ein Schreibwerkzeug ändert etwas und braucht ein Ja.

Halten Sie das Risiko in Ihrer eigenen Tabelle. Das Modell sagt nie, wie riskant ein Aufruf ist, und ein irrendes Modell kann die Tabelle nicht umgehen.

Durchgerechnetes Beispiel: drei Werkzeuge und ihr Risiko

WerkzeugWas es tutRisikoLäuft
preis_vonSchlägt einen Preis nachlesenSofort
notiz_hinzufuegenFügt einer Notizliste etwas hinzuschreibenNach einem Ja
notiz_loeschenEntfernt eine NotizschreibenNach einem Ja
jeder andere NameNicht in der TabelleunbekanntNie

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.

Fragen Sie nach, lehnen Sie sonst ab

Geben Sie aus, was das Werkzeug tun wird, und lesen Sie eine Antwort. Nur j ist ein Ja. Alles andere, eine leere Zeile oder gar keine Antwort, ist ein Nein.

Das ist standardmäßig ablehnen: Ein Aufruf läuft nur mit einem klaren Ja. Im nächsten Lauf sind die Antworten vorab eingespeist, sodass alle dieselben Zeilen sehen. Von Hand getippt, würde er auf Sie warten.

Drei Aufrufe mit festen Antworten filtern

Befehl
printf 'j\nn\n' | docker exec -i -w /home/node/project agent node -e "const rl=require('readline').createInterface({input:process.stdin});const it=rl[Symbol.asyncIterator]();const R={preis_von:'lesen',notiz_hinzufuegen:'schreiben',notiz_loeschen:'schreiben'};const N=['Milch'];const F={preis_von:a=>40,notiz_hinzufuegen:a=>N.push(a.text),notiz_loeschen:a=>N.splice(a.index,1)};(async()=>{const p=[];for(const c of [{n:'preis_von',a:{artikel:'birne'}},{n:'notiz_hinzufuegen',a:{text:'Eier'}},{n:'notiz_loeschen',a:{index:0}}]){let ok=R[c.n]=='lesen';if(ok===false){process.stdout.write('Erlauben: '+c.n+' '+JSON.stringify(c.a)+'? (j/n) ');const l=await it.next();ok=l.value?.trim()=='j';console.log(ok?'j':'n')}if(ok)F[c.n](c.a);p.push(c.n+': '+(ok?'ausgeführt':'abgelehnt'))}console.log(p.join(', '));console.log('Notizen: '+N.join(', '));rl.close()})()"

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 Modell fragen lassen und es ablehnen

Befehl
printf 'n\n' | docker exec -i -w /home/node/project agent node -e "const{fragen}=require('./ki.cjs');const rl=require('readline').createInterface({input:process.stdin});const it=rl[Symbol.asyncIterator]();const T=[{type:'function',function:{name:'notiz_hinzufuegen',description:'Speichert eine Notiz.',parameters:{type:'object',properties:{text:{type:'string'}}}}}];(async()=>{let c;try{c=(await fragen([{role:'user',content:'Speichere eine Notiz: Milch kaufen'}],T,'required')).tool_calls[0].function}catch(e){console.log('Kein Modell ('+e.message+'). Aufgezeichnetes Beispiel:');c={name:'notiz_hinzufuegen',arguments:JSON.stringify({text:'Milch kaufen'})}}process.stdout.write('Das Modell will '+c.name+' '+c.arguments+'. Erlauben? (j/n) ');const l=await it.next();const ok=l.value?.trim()=='j';console.log(ok?'j':'n');console.log(ok?'notiz_hinzufuegen ausgeführt.':'Abgelehnt. Nichts lief.');rl.close()})()"

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

Führen Sie ein Protokoll jedes Aufrufs

Halten Sie jeden Aufruf fest: seinen Namen, ob eine Person gefragt wurde, was sie antwortete und ob er lief. Ein Protokoll zeigt, was ein Assistent tat und woran man ihn hinderte.

Halten Sie auch die Ablehnungen fest. Ein abgelehnter Aufruf, den niemand sieht, wird später zum Rätsel.

Ein häufiger Fehler

Warnung

Viele glauben, das Modell entscheide, ob ein riskanter Aufruf sicher ist. Das tut es nicht: Es kann irren oder durch einen Text getäuscht werden, den es liest. Ihr Programm entscheidet, nach Ihrer eigenen Tabelle, und fragt vor jedem Schreiben eine Person.

Zum Weiterdenken: die Antworten ändern

Ändern Sie im ersten Lauf die eingespeisten Antworten j und n in n und n. Führen Sie ihn erneut aus und lesen Sie die Notizzeile.

Ändern Sie danach preis_von in R auf schreiben. Schreiben Sie auf, was das Programm jetzt fragt.

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