Skip to main content
Function Calling ermöglicht dynamische Workflows, indem das Modell basierend auf Benutzereingaben Funktionsaufrufe auswählen und vorschlagen kann, was beim Aufbau von agentischen Workflows hilft. Durch die Definition einer Reihe von Funktionen oder Tools stellen Sie einen Kontext bereit, der es dem Modell ermöglicht, Funktionsargumente nach Bedarf zu empfehlen und auszufüllen.

Wie Function Calling funktioniert

Function Calling ermöglicht adaptive Workflows, die Echtzeitdaten und strukturierte Ausgaben nutzen und so dynamischere und reaktionsfähigere Modellinteraktionen schaffen.
  1. Anfrage mit Tools senden: Beginnen Sie, indem Sie eine Benutzeranfrage zusammen mit verfügbaren Tools senden, die im JSON-Schema definiert sind. Dieses Schema gibt Parameter für jede Funktion an.
  2. Das Modell verarbeitet und schlägt vor: Das Modell interpretiert die Anfrage, bewertet die Absicht und entscheidet, ob es konversationell antworten oder Funktionsaufrufe vorschlagen wird. Wenn eine Funktion aufgerufen wird, füllt es die Argumente basierend auf dem Schema aus.
  3. Modellantwort erhalten: Sie erhalten eine Antwort vom Modell, die einen Funktionsaufrufvorschlag enthalten kann. Führen Sie die Funktion mit den bereitgestellten Argumenten aus und geben Sie das Ergebnis zur weiteren Interaktion an das Modell zurück.
Nicht alle Modelle unterstützen Function Calling. Siehe Infercom Inference Service Modelle für die Liste der verfügbaren Modelle und deren Funktionen.
Bei Verwendung von gpt-oss-120b für Function Calling setzen Sie reasoning_effort auf "high" für beste Ergebnisse.

Modellunterstützung

Function Calling wird von den unten aufgeführten Modellen unterstützt. Prüfen Sie stets Unterstützte Modelle auf die aktuelle Verfügbarkeit. Vision-Anfragen unterstützen dieselben Optionen tools, tool_choice und response_format wie reine Textanfragen. Die Einschränkung wird während der Generierung angewendet. Siehe Vision.

Beispielverwendung

Die folgenden Beispiele beschreiben jeden Schritt der Verwendung von Function Calling mit einem End-to-End-Beispiel nach dem letzten Schritt.

Schritt 1: Funktionsschema definieren

Definieren Sie ein JSON-Schema für Ihre Funktion. Sie müssen Folgendes angeben:
  • Den Namen der Funktion.
  • Eine Beschreibung dessen, was sie tut.
  • Die Parameter, ihre Datentypen und Beschreibungen.
Example schema for getting the weather

Schritt 2: Function Calling in Ihrer Anfrage konfigurieren

Fügen Sie beim Senden einer Anfrage die Funktionsdefinition im Parameter tools ein und setzen Sie tool_choice auf einen der folgenden Werte:
  • auto : Ermöglicht dem Modell, zwischen der Generierung einer Nachricht oder dem Aufrufen einer Funktion zu wählen. Dies ist die Standard-Tool-Auswahl, wenn das Feld nicht angegeben wird.
  • required : Dies zwingt das Modell, einen Funktionsaufruf zu generieren. Das Modell wird dann immer eine oder mehrere Funktion(en) zum Aufrufen auswählen.
  • Um einen bestimmten Funktionsaufruf zu erzwingen, setzen Sie tool_choice = {"type": "function", "function": {"name": "get_weather"}}. Dies stellt sicher, dass das Modell nur die angegebene Funktion verwendet.
Ein erzwungenes tool_choice ist nicht bei jedem Modell garantiert. Planen Sie zwei Verhaltensweisen ein.gemma-4-31B-it hält die Einschränkung nicht immer ein. Bei Prompts, die nicht offensichtlich einen Tool-Aufruf erfordern, liefert etwa ein Drittel bis die Hälfte eine reine Textantwort statt des erzwungenen Aufrufs. Die übrigen Modelle in der Tabelle oben sind nicht betroffen. Wenn Sie einen zuverlässig erzwungenen Aufruf auf Infercoms EU-Infrastruktur benötigen, verwenden Sie MiniMax-M2.7 oder gpt-oss-120b.Ein nicht eingehaltener erzwungener Aufruf gibt HTTP 400 zurück. Wenn das Modell keinen gültigen Funktionsaufruf erzeugt, schlägt die Anfrage mit dem folgenden Body fehl. Beachten Sie, dass diese Antwort nicht die standardmäßige Fehlerhülle verwendet: error ist ein String, kein Objekt, und es gibt keine request_id.
Das Feld error_model_output enthält den Text, den das Modell stattdessen erzeugt hat. Lesen Sie es aus, wenn Sie die Antwort dennoch benötigen. Behandeln Sie diesen Status in jedem Workflow, der einen Aufruf erzwingt. Siehe API-Fehlercodes.
Der folgende Codeblock zeigt eine gefälschte Wetterabfrage, die eine zufällige Temperatur zwischen 20°C und 50°C zurückgibt. Für genaue und Echtzeitwetterdaten verwenden Sie eine ordnungsgemäße Wetter-API.

Schritt 3: Tool-Aufrufe handhaben

Wenn das Modell sich entscheidet, eine Funktion aufzurufen, finden Sie tool_calls in der Antwort. Extrahieren Sie die Funktionsaufrufdetails und führen Sie die entsprechende Funktion mit den bereitgestellten Parametern aus.
Example code

Schritt 4: Funktionsergebnisse an das Modell zurückgeben

Sobald Sie das Ergebnis berechnet haben, geben Sie es an das Modell zurück, um die Konversation fortzusetzen oder die Ausgabe zu bestätigen.
Example code

Schritt 5: Beispielausgabe

Eine Beispielausgabe wird unten gezeigt.

End-to-End-Beispiel

Der folgende Codeblock zeigt eine gefälschte Wetterabfrage, die eine zufällige Temperatur zwischen 20°C und 50°C zurückgibt. Für genaue und Echtzeitwetterdaten verwenden Sie eine ordnungsgemäße Wetter-API.

Tool-Aufrufe streamen

Setzen Sie stream: true, um Tool-Aufrufe während der Generierung zu erhalten. Die Argumente treffen im Feld tool_calls des Deltas ein. In delta.content erscheint kein Reasoning-Gerüst.
Ignorieren Sie Delta-Felder, die Sie nicht kennen. Die Menge der Schlüssel in delta ist über die Modelle hinweg nicht festgelegt.gpt-oss-120b fügt dem Delta ein Feld channel hinzu, jedoch nur bei Streams ohne Tools. Es enthält den Wert analysis, während das Modell denkt. Sobald Sie ein tools-Array übergeben, fehlt das Feld. Kein anderes Modell sendet es.Ein Client, der Delta-Schlüssel strikt validiert, bricht im ersten Fall ab. Lesen Sie die Felder, die Sie benötigen, und verwerfen Sie den Rest.

JSON-Schema

Sie können den Parameter response_format auf Ihr definiertes Schema setzen, um sicherzustellen, dass das Modell ein JSON-Objekt erzeugt, das Ihrer angegebenen Struktur entspricht.
Stellen Sie sicher, dass Sie den Parameter "strict" auf false setzen, da true noch nicht unterstützt wird. Wenn es verfügbar ist, wird es sicherstellen, dass das Modell Ihr Funktionsschema strikt befolgt, anstatt einen Best-Effort-Versuch zu unternehmen.

JSON-Modus

Sie können den Parameter response_format in Ihrer Anfrage auf json_object setzen, um sicherzustellen, dass das Modell ein gültiges JSON ausgibt. Falls der Modus kein gültiges JSON generieren kann, wird ein Fehler zurückgegeben.
Falls das Modell kein gültiges JSON generieren kann, erhalten Sie eine Fehlermeldung Model did not output valid JSON.
Example response

Andere Methoden für strukturierte Ausgaben

Neben dem JSON-Modus können strukturierte Ausgaben auch mithilfe der Instructor-Bibliothek generiert werden, die einen praktischen Wrapper zum Extrahieren strukturierter Daten aus LLM-Antworten mittels Pydantic-Modellen bietet.