OpenAIs GPT 3.5 API kann jetzt Funktionen aufrufen und ich liebe es!

In der Nacht auf den 14.06.2023 hat OpenAI eine neue Version für das Model GPT-3.5-Turbo bereit gestellt. Mal davon abgesehen, dass Systemnachrichten verbessert und die Nutzungskosten um 25% reduziert wurden, wurde auch noch ein gänzlich neues Feature hinzugefügt: Function Calls. Und da wir bei Biga ohnehin gerade an einer eigenen Anwendung mit OpenAI-Anbindung arbeiten, haben wir uns das mal etwas genauer angeschaut.

Was sind Function Calls?

Function Calls sind nichts weiter als die Möglichkeit, eigene Logik ausgelöst durch einen Respond der API auszuführen. Mag sich kompliziert anhören, aber glücklicherweise muss man nicht viel machen.

Wofür benötige ich das und was für einen Mehrwert bringt es mir?

Wer sich bereits etwas mehr mit der Datenverarbeitung der Chatmodels auseinander gesetzt hat, wird wissen, dass das gesamte System bahnbrechend aber auch beschränkt ist.

So kann man äußerst natürliche Unterhaltungen führen, sich einen Essay zu einem beliebigen Thema schreiben oder textbasierte mathematische Aufgaben lösen lassen.

Jedoch gibt es diese und mehr Punkte, an denen es scheitert:

  • Lerndaten von 09/2021
  • Antworten auf exakt gleiche Abfrage sind zum Teil unterschiedlich (trotz deterministischer Parameter)
  • Ansprechen von externer Software kaum möglich (ChatGPT Plugins außenvor weil Beta)

Möchte man zum Beispiel mit dem Prompt „Wie ist das Wetter heute in Berlin“ eine gute Auskunft erhalten, bekommt man nur eine Antwort, dass aktuelle Daten leider nicht zur Verfügung stehen. Dies kann durch externe Informationen gelöst werden, die einen Function Call bereitstellt.

Wie genau funktioniert das mit den Function Calls?

Um das beschrieben Problem zu lösen, würde ich nun zwei eigene Methode schreiben, die mir genau den fehlenden Kontext liefern.

  get_todays_date() {
    return JSON.stringify({ date: new Date() });
  }

  get_weather(city: string, date: string) {
    return JSON.stringify({ city: city, date: date, weather: "26°C, Sonnig" });
  }

Diese Methoden übergebe ich bei dem API-Call ebenfalls beschrieben im JSON-Format, damit das GPT weiß, auf welche Funktionen es zurückgreifen kann, um an die nötigen Informationen zu gelangen.

[
   {
      "name":"get_todays_date",
      "description":"Get the date of today"
   },
   {
      "name":"get_weather",
      "description":"Get the current weather in a given city and on a given date",
      "parameters":{
         "type":"object",
         "properties":{
            "city":{
               "type":"string"
            },
            "date":{
               "type":"string"
            }
         },
         "required":[
            "location",
            "date"
         ]
      }
   }
]

Jetzt wird unser Request „Wie ist das Wetter heute in Berlin?“ mit unseren bekanntgegebenen Methoden abgeschickt. Im JSON-Response findet man dann(wenn alles korrekt funktioniert hat) im Array „choices[0].message.function_call“ die Funktionen, die aufgerufen werden sollen inklusive die von dem Model übergebenen Parameter.

Wenn diese Methoden dann durchlaufen sind, können deren Ergebnisse als Nachricht an den Request mit angehangen werden. Eine ganz genaue Dokumentation zu den Parametern hierzu findet man in der API-Referenz und in den Guides.

Fazit

Der erste Test mit Function Calls war noch mal eine neue Erfahrung. Die Arbeit mit der API war zuvor schon sehr angenehm und wurde jetzt noch um so vieles erweitert, da automatisierte Ausführungen eigener Logik nichts mehr im Weg steht. Kommende Projekte bei Biga werden mit Sicherheit davon profitieren können.

Ich bin gespannt, was von OpenAI alles noch so dazu kommt in den nächsten Jahren und ich freue mich jetzt schon drauf.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert