Um das besser einzuordnen muss man verstehen wie diese Modelle funktionieren.
Es sind zum ersten "nur" Sprachmodelle. Die können ungeheuer gut Sprache verstehen und produzieren. Dazu zählen vor allem auch Programmiersprachen, da diese im Gegensatz zu natürlicher Menschlicher Sprache super primitiv sind (ganz wenig Schlüsselworte, sehr einfache und strikte Syntax ohne viele Ausnahmen).
Kurzum: Das ding wird dir zu nahezu 100% immer syntaktisch richtigen Code produzieren.
Was den Inhalt angeht, der mit der Sprache ausgedrückt wird, da wird es komplizierter. Am Ende ist ein neuronales Netzwerk ja nur in Daten gegossene Wahrscheinlichkeitsrechnung.
Hier ist das Modell darauf trainiert, basierend auf dem Input eine Antwort zu generieren, die zu einem hoffentlich möglichst hohen Prozentwert plausibel ist.
Falls diese Antwort in den Trainingsdaten war, dann besteht zudem eine sehr hohe Chance, dass die Antwort nicht nur plausibel sondern auch in der Tat korrekt ist. Ist die Antwort nicht in den Trainingsdaten enthalten, dann sinkt die Wahrscheinlichkeit einer korrekten Antwort entsprechend.
Selber rechnen oder (leise) zählen können die Modelle nicht. Also so gar nicht. "Schreibe mir 100 Wörter" wird maximal zufällig auch wirklich 100 Wörter liefern.
Was funktioniert ist "Gib mir 10 Punkte", weil das Modell dann "Laut" zählt und eine Liste mit 1., 2. etc. bis 10. produziert. Das klappt schon nicht mehr wenn Du sagst: Nicht nummerieren, sondern nur * vorne dran schreiben - und schon weiss das Modell nicht mehr, wie viel es schon gemacht hat oder noch machen muss. Deswegen hat ChatGPT auch jetzt den Code-Interpreter (bzw. Advanced Data Analysis)-Modus. Hier kann ChatGPT Python-Code schreiben der die Berechnung durchführt, diesen ausführen lassen und dann das Ergebnis verwenden. Das ist dann nicht nur plausibel sondern korrekt.
Wie jetzt genau die
Indy-
API aussieht, kennt das Modell auch eher nicht in- und auswendig. Daher wird es versuchen Funktionen aufzurufen, die plausibel klingen - auch wenn es sie nicht gibt. Wenn Du dem Modell die
API allerdings im Kontext mitlieferst, und ihm sagst benutzte nur diese Funktionen, dann steigt die Wahrscheinlichkeit dass das was rauskommt auch funktioniert massiv an.
Kurzum: Das Modell entspricht einer Horde an Azubis und Praktikanten mit den unterschiedlichsten Fähigkeitsleveln. Du gibst eine Aufgabe rein, und irgendjemand aus der Menge wird die abarbeiten. Du weisst nicht wer. Klar muss man das noch überprüfen.
Auch klar: Je besser Du beschreibst was Du willst, und je mehr sinnvollen Kontext (wie eine
API-Beschreibung) Du dazu gibst, desto besser wird das Ergebnis werden (oder andersrum: gibst Du Mist rein, kommt wahrscheinlich auch Mist raus). Um eine möglichst sinnvolle Anforderung reinzugeben, muss man je nach Modell eben auch unterschiedliches Prompt-Engineering betreiben.