Wie Programme über ein Netzwerk sprechen
HTTP ist die Art, wie zwei Programme über ein Netzwerk sprechen: Eines sendet eine Anfrage, das andere schickt eine Antwort zurück. JSON ist das Textformat, das sie meist für die Daten nutzen.
Jede Modell-API arbeitet so. Wer eine Anfrage und eine Antwort lesen kann, kann jede davon nutzen.
Am Ende dieser Lektion
Notiz
Ich kann eine HTTP-Anfrage und einen JSON-Body lesen und schreiben.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Anfrage | was ein Programm sendet, um etwas anzufordern | |
| Antwort | was als Erwiderung auf eine Anfrage zurückkommt | |
| Header | eine benannte Angabe zu einer Anfrage oder Antwort | content-type |
| Statuscode | eine Zahl, die sagt, wie die Anfrage verlief | 200 |
| JSON | ein Textformat für Daten aus Schlüsseln und Werten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Anfrage hat vier Teile
Die Methode sagt, was zu tun ist: GET liest, POST sendet Daten. Die URL sagt, wohin. Header fügen Angaben hinzu, etwa den Typ der Daten. Der Body sind die Daten selbst.
Eine Modell-API erwartet ein POST mit einem JSON-Body, der Ihre Nachrichten enthält.
Beispiel: eine Anfrage, Teil für Teil
| Teil | Was er enthält | In unserem Aufruf |
|---|---|---|
| Methode | Was zu tun ist | POST |
| URL | Wohin sie geht | http://ai:4000/v1/chat/completions |
| Header | Der Typ des Bodys | content-type: application/json |
| Body | Die Daten als JSON | model, messages, max_tokens |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Anfrage ausgeben, die ein Skript senden würde
docker exec -w /home/node/project agent node -e "const koerper={model:'lab',messages:[{role:'user',content:'Sagen Sie Hallo'}],max_tokens:20};console.log('POST /v1/chat/completions');console.log('content-type: application/json');console.log(JSON.stringify(koerper,null,2))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
JSON ist Text aus Schlüsseln und Werten
JSON schreibt Daten als Text. Ein Objekt sind geschweifte Klammern um Paare "schluessel": wert. Eine Liste steht in eckigen Klammern. Schlüssel stehen immer in doppelten Anführungszeichen.
Ihr Programm macht aus Daten JSON-Text, um sie zu senden (JSON.stringify), und aus JSON-Text wieder Daten, um sie zu lesen (JSON.parse).
Eine Antwort hat einen Status und einen Body
Das Erste an einer Antwort ist der Statuscode. Eine Zahl von 200 bis 299 heißt: Es hat geklappt. Eine Zahl von 400 bis 499 heißt: Die Anfrage war fehlerhaft. Ab 500 lag der Fehler beim Dienst.
Lesen Sie den Status, bevor Sie den Body lesen.
Beispiel: Statuscodes, die Ihnen begegnen
| Status | Bedeutung | Was Sie tun |
|---|---|---|
| 200 | Es hat geklappt | Den Body lesen |
| 400 | Die Anfrage ist falsch | Den Body korrigieren |
| 401 | Schlüssel fehlt oder ist falsch | Den Schlüssel prüfen |
| 403 | Nicht erlaubt | Die Meldung lesen |
| 429 | Zu viele Anfragen | Warten, dann erneut versuchen |
| 503 | Noch nicht bereit | Später erneut versuchen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Modell aufrufen und den Status lesen
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const zeigen=(s,t,k,m)=>{console.log('Status: '+s);console.log('Inhaltstyp: '+t);console.log('Schlüssel der obersten Ebene: '+k);console.log('Antwort: '+m)};(async()=>{try{const r=await fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:'Sagen Sie Hallo in drei Wörtern.'}],max_tokens:20})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);zeigen(r.status,r.headers.get('content-type'),Object.keys(j).join(', '),j.choices[0].message.content)}catch(e){console.log('Keine Antwort ('+e.message+'). Aufgezeichnetes Beispiel:');zeigen(200,'application/json','id, object, model, choices, usage','Hallo, guter Freund.')}})()"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, Status 200 heiße, die Antwort sei richtig. Er heißt nur, dass die Anfrage geklappt hat. Ein Modell kann 200 mit einer falschen oder seltsamen Antwort liefern. Prüfen Sie erst den Status, dann den Inhalt.
Weiter: die Anfrage ändern
Ändern Sie die Ausführung, die die Anfrage ausgibt. Fügen Sie dem Body temperature: 0 hinzu und führen Sie sie erneut aus. Setzen Sie dann max_tokens auf 5.
Notieren Sie jedes Mal, welchen Teil Sie geändert haben: die Methode, die URL, einen Header oder den Body.