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

Einem Modell mehrere Werkzeuge geben

Nach dieser Lektion: Ich kann mehr als ein Werkzeug anbieten und jede Anfrage an die richtige Funktion verteilen.

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

Ein Modell mit einem Werkzeugkasten

Ein Werkzeug ist einfach. Ein echter Assistent hat mehrere: eine Preisabfrage, einen Einheitenrechner, einen Ort für Notizen. Das Modell wählt für jede Anfrage eines aus, und Ihr Programm muss jede Anfrage an die richtige Funktion schicken.

Es muss auch damit umgehen, dass das Modell ein Werkzeug anfordert, das es nicht gibt.

Am Ende dieser Lektion

Notiz

Ich kann mehr als ein Werkzeug anbieten und jede Anfrage an die richtige Funktion verteilen.

Schlüsselwörter

BegriffWas er bedeutet
VerteilerCode, der eine Anfrage an die richtige Funktion schickt
Werkzeugtabelleeine Tabelle, die jeden Werkzeugnamen seiner Funktion zuordnet
Unbekanntes Werkzeugein Name, der nicht in Ihrer Werkzeugtabelle steht
Pflichtargumentein Wert, ohne den das Werkzeug nicht laufen kann
Prüfungeine Anfrage kontrollieren, bevor man handelt

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

Eine Werkzeugtabelle ordnet Namen Funktionen zu

Halten Sie Ihre Werkzeuge in einer einzigen Tabelle. Der Schlüssel ist der Name, den das Modell verwendet. Der Wert ist Ihre Funktion.

Um eine Anfrage zu verteilen, suchen Sie den Namen in der Tabelle und rufen auf, was Sie finden. Ein Werkzeug hinzuzufügen ist dann eine Zeile, und die Tabelle ist die einzige Liste dessen, was das Modell nutzen darf.

Durchgerechnetes Beispiel: ein Kasten mit drei Werkzeugen

NameWas es tutPflichtargument
preis_vonSchlägt den Preis eines Artikels nachartikel
km_in_meilenRechnet Kilometer in Meilen umkm
notiz_hinzufuegenSpeichert eine kurze Notiztext

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.

Lehnen Sie eine unmögliche Anfrage ab

Ein Modell kann einen Namen anfordern, der nicht in Ihrer Tabelle steht. Es kann unlesbare Argumente senden. Es kann ein Pflichtargument vergessen. Prüfen Sie alle drei Fälle, bevor Sie irgendetwas aufrufen.

Eine Ablehnung ist eine Nachricht an das Modell, etwa Fehler: unbekanntes Werkzeug alles_loeschen. Sie ist nie ein Absturz, und nichts wird ausgeführt.

Vier Anfragen verteilen, zwei davon schlecht

Befehl
docker exec -w /home/node/project agent node -e "const F={preis_von:a=>({apfel:40,birne:45})[a.artikel],km_in_meilen:a=>a.km*0.62,notiz_hinzufuegen:a=>'gespeichert'};const P={preis_von:['artikel'],km_in_meilen:['km'],notiz_hinzufuegen:['text']};const verteilen=c=>{if(Object.hasOwn(F,c.name)===false)return 'Fehler: unbekanntes Werkzeug '+c.name;let a;try{a=JSON.parse(c.arguments)}catch(e){return 'Fehler: ungültige Argumente'}for(const k of P[c.name])if((k in a)===false)return 'Fehler: fehlt '+k;return String(F[c.name](a))};for(const c of [{name:'preis_von',arguments:JSON.stringify({artikel:'birne'})},{name:'alles_loeschen',arguments:'{}'},{name:'preis_von',arguments:'{artikel:'},{name:'km_in_meilen',arguments:'{}'}])console.log(c.name+' -> '+verteilen(c))"

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

Einem Modell drei Werkzeuge anbieten

Befehl
docker exec -w /home/node/project agent node -e "const{fragen}=require('./ki.cjs');const w=(n,d,k)=>({type:'function',function:{name:n,description:d,parameters:{type:'object',properties:{[k]:{type:k=='km'?'number':'string'}}}}});const T=[w('preis_von','Preis eines Artikels.','artikel'),w('km_in_meilen','Rechnet km in Meilen um.','km'),w('notiz_hinzufuegen','Speichert eine Notiz.','text')];const F={preis_von:a=>({apfel:40,birne:45})[a.artikel],km_in_meilen:a=>Math.round(a.km*621.371)/1000,notiz_hinzufuegen:a=>'gespeichert: '+a.text};(async()=>{let c;try{c=(await fragen([{role:'user',content:'Wie viele Meilen sind 10 km?'}],T,'required')).tool_calls[0]}catch(e){console.log('Kein Modell ('+e.message+'). Aufgezeichnetes Beispiel:');c={function:{name:'km_in_meilen',arguments:JSON.stringify({km:10})}}}const f=c.function;console.log('Anfrage: '+f.name+' '+f.arguments);console.log('Ergebnis: '+(Object.hasOwn(F,f.name)?F[f.name](JSON.parse(f.arguments)):'unbekanntes Werkzeug'))})()"

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, das Modell fordere nur Werkzeuge an, die Sie angeboten haben. Es kann jeden Namen anfordern und Argumente senden, die nicht passen. Prüfen Sie immer den Namen gegen Ihre Tabelle und die Argumente gegen das, was das Werkzeug braucht.

Zum Weiterdenken: ein viertes Werkzeug

Fügen Sie im Verteiler-Lauf ein Werkzeug namens rufen (wie „laut rufen“) hinzu, das sein Argument text in Großbuchstaben zurückgibt. Tragen Sie es in F und in P ein und senden Sie eine Anfrage dafür.

Schreiben Sie auf, an wie vielen Stellen Sie den Code ändern mussten.

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