Funktionsaufrufe mit der Gemini API


Generative Modelle eignen sich hervorragend für die Lösung vieler Probleme. Sie sind jedoch durch folgende Einschränkungen eingeschränkt:

  • Nach dem Training werden sie eingefroren, was zu veraltetem Wissen führt.
  • Sie können keine externen Daten abfragen oder ändern.

Mit Funktionsaufrufen können Sie einige dieser Einschränkungen umgehen. Funktionsaufrufe werden manchmal als Toolnutzung bezeichnet, da ein Modell damit externe Tools wie APIs und Funktionen zum Generieren der endgültigen Antwort verwenden kann.

Weitere Informationen zu Funktionsaufrufen finden Sie in der Google Cloud-Dokumentation, einschließlich einer hilfreichen Liste mit Anwendungsfällen für Funktionsaufrufe.

Funktionsaufrufe werden von Gemini 1.0 Pro, Gemini 1.5 Pro und Gemini 1.5 Flash unterstützt.

In diesem Leitfaden wird beschrieben, wie Sie eine Funktion ähnlich wie im Beispiel im nächsten Abschnitt dieser Seite implementieren können. Im Folgenden sind die Schritte zum Einrichten von Funktionsaufrufen in Ihrer App aufgeführt:

  1. Schreiben Sie eine Funktion, die dem Modell Informationen zur Verfügung stellen kann, die zum Generieren der endgültigen Antwort erforderlich sind (z. B. kann die Funktion eine externe API aufrufen).

  2. Erstellen Sie eine Funktionsdeklaration, in der die Funktion und ihre Parameter beschrieben werden.

  3. Geben Sie die Funktionsdeklaration während der Modellinitialisierung an, damit das Modell weiß, wie es die Funktion bei Bedarf verwenden kann.

  4. Richten Sie Ihre App so ein, dass das Modell die erforderlichen Informationen senden kann, damit Ihre App die Funktion aufrufen kann.

  5. Übergeben Sie die Antwort der Funktion an das Modell zurück, damit es die endgültige Antwort generieren kann.

Codeimplementierung

Beispiel für einen Funktionsaufruf

Wenn Sie eine Anfrage an das Modell senden, können Sie ihm auch eine Reihe von „Tools“ (z. B. Funktionen) zur Verfügung stellen, mit denen es die endgültige Antwort generieren kann. Damit diese Funktionen verwendet und aufgerufen werden können („Funktionsaufruf“), müssen das Modell und Ihre App Informationen miteinander austauschen. Daher wird empfohlen, den Funktionsaufruf über die Chatoberfläche in mehreren Runden zu verwenden.

Angenommen, Sie haben eine App, in der Nutzer einen Prompt wie den folgenden eingeben können: What was the weather in Boston on October 17, 2024?.

Die Gemini-Modelle kennen diese Wetterinformationen möglicherweise nicht. Angenommen, Sie kennen eine externe Wetterdienst-API, die diese Informationen bereitstellen kann. Mithilfe von Funktionsaufrufen können Sie dem Gemini-Modell einen Pfad zu dieser API und ihren Wetterinformationen geben.

Zuerst schreiben Sie in Ihrer App eine Funktion fetchWeather, die mit dieser hypothetischen externen API interagiert. Diese hat folgende Eingabe- und Ausgabewerte:

Parameter Typ Erforderlich Beschreibung
Eingabe
location Object Ja Der Name der Stadt und des Bundesstaats, für die das Wetter abgerufen werden soll.
Nur Städte in den USA werden unterstützt. Muss immer ein verschachteltes Objekt von city und state sein.
date String Ja Datum, für das das Wetter abgerufen werden soll (muss immer im Format YYYY-MM-DD sein).
Ausgabe
temperature Ganzzahl Ja Temperatur (in Fahrenheit)
chancePrecipitation String Ja Niederschlagswahrscheinlichkeit (in Prozent)
cloudConditions String Ja Wolkenbedingungen (clear, partlyCloudy, mostlyCloudy oder cloudy)

Beim Initialisieren des Modells teilen Sie dem Modell mit, dass diese fetchWeather-Funktion vorhanden ist und wie sie bei Bedarf zur Verarbeitung eingehender Anfragen verwendet werden kann. Dies wird als „Funktionsdeklaration“ bezeichnet. Das Modell ruft die Funktion nicht direkt auf. Stattdessen entscheidet das Modell bei der Verarbeitung der eingehenden Anfrage, ob die fetchWeather-Funktion ihm bei der Beantwortung der Anfrage helfen kann. Wenn das Modell entscheidet, dass die Funktion tatsächlich nützlich sein kann, generiert es strukturierte Daten, die Ihrer App helfen, die Funktion aufzurufen.

Sehen Sie sich die eingehende Anfrage noch einmal an: What was the weather in Boston on October 17, 2024?. Das Modell würde wahrscheinlich entscheiden, dass die Funktion fetchWeather ihm helfen kann, eine Antwort zu generieren. Das Modell prüft, welche Eingabeparameter für fetchWeather erforderlich sind, und generiert dann strukturierte Eingabedaten für die Funktion, die ungefähr so aussehen:

{
  functionName: fetchWeather,
  location: {
    city: Boston,
    state: Massachusetts  // the model can infer the state from the prompt
  },
  date: 2024-10-17
}

Das Modell übergibt diese strukturierten Eingabedaten an Ihre App, damit diese die fetchWeather-Funktion aufrufen kann. Wenn Ihre App die Wetterbedingungen von der API zurückerhält, werden die Informationen an das Modell übergeben. Anhand dieser Wetterinformationen kann das Modell die endgültige Verarbeitung abschließen und eine Antwort auf die ursprüngliche Anfrage von What was the weather in Boston on October 17, 2024? generieren.

Das Modell kann eine endgültige Antwort in natürlicher Sprache wie die folgende liefern: On October 17, 2024, in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.

Diagramm, das zeigt, wie beim Aufrufen einer Funktion das Modell mit einer Funktion in Ihrer App interagiert 

Funktionsaufrufe implementieren

Hinweis

Falls noch nicht geschehen, folgen Sie der Anleitung im Startleitfaden für die Vertex AI in Firebase-SDKs. Achten Sie darauf, dass Sie Folgendes getan haben:

  1. Richten Sie ein neues oder vorhandenes Firebase-Projekt ein. Verwenden Sie dabei den Blaze-Preisplan und aktivieren Sie die erforderlichen APIs.

  2. Verbinden Sie Ihre App mit Firebase. Dazu müssen Sie Ihre App registrieren und die Firebase-Konfiguration hinzufügen.

  3. Fügen Sie das SDK hinzu und initialisieren Sie den Vertex AI-Dienst und das generative Modell in Ihrer App.

Nachdem Sie Ihre App mit Firebase verbunden, das SDK hinzugefügt und den Vertex AI-Dienst und das generative Modell initialisiert haben, können Sie Gemini API aufrufen.

In den verbleibenden Schritten dieser Anleitung erfahren Sie, wie Sie eine Funktion zum Aufrufen einer Funktion implementieren, die dem Workflow ähnelt, der im Abschnitt Beispiel für einen Funktionsaufruf oben auf dieser Seite beschrieben wird.

Das vollständige Codebeispiel für dieses Beispiel für Funktionsaufrufe finden Sie weiter unten auf dieser Seite.

Schritt 1: Funktion schreiben

Angenommen, Sie haben eine App, in die ein Nutzer eine Aufforderung wie What was the weather in Boston on October 17, 2024? eingeben könnte. Die Gemini-Modelle kennen diese Wetterinformationen möglicherweise nicht. Angenommen, Sie kennen eine externe Wetterdienst-API, die diese Informationen bereitstellen kann. Das Beispiel in diesem Leitfaden basiert auf dieser hypothetischen externen API.

Schreiben Sie die Funktion in Ihre App, die mit der hypothetischen externen API interagiert und dem Modell die Informationen zur Verfügung stellt, die es zum Generieren der endgültigen Anfrage benötigt. In diesem Wetterbeispiel ist es eine fetchWeather-Funktion, die den Aufruf an diese hypothetische externe API sendet.

Schritt 2: Funktionsdeklaration erstellen

Erstellen Sie die Funktionsdeklaration, die Sie später dem Modell zur Verfügung stellen (nächster Schritt in dieser Anleitung).

Geben Sie in Ihrer Deklaration so viele Details wie möglich in den Beschreibungen für die Funktion und ihre Parameter an.

Das Modell bestimmt anhand der Informationen in der Funktionsdeklaration, welche Funktion ausgewählt werden soll und wie Parameterwerte für den tatsächlichen Aufruf der Funktion bereitgestellt werden. Unter Weitere Verhaltensweisen und Optionen weiter unten auf dieser Seite erfahren Sie, wie das Modell zwischen den Funktionen auswählen kann und wie Sie diese Auswahl steuern können.

Beachten Sie zu dem von Ihnen bereitgestellten Schema Folgendes:

  • Funktionsdeklarationen müssen in einem Schemaformat angegeben werden, das mit dem OpenAPI-Schema kompatibel ist. Vertex AI bietet eingeschränkte Unterstützung für das OpenAPI-Schema.

    • Die folgenden Attribute sind zulässig: type, nullable, required, format, description, properties, items, enum.

    • Die folgenden Attribute werden nicht unterstützt: default, optional, maximum und oneOf.

  • Bei Vertex AI in Firebase-SDKs werden alle Felder standardmäßig als erforderlich betrachtet, sofern Sie sie nicht in einem optionalProperties-Array als optional angeben. Für diese optionalen Felder kann das Modell die Felder ausfüllen oder sie überspringen. Dies ist das Gegenteil des Standardverhaltens für die Vertex AI Gemini API.

Best Practices für Funktionsdeklarationen, einschließlich Tipps zu Namen und Beschreibungen, finden Sie unter Best Practices in der Google Cloud-Dokumentation.

So schreiben Sie eine Funktionsdeklaration:

Schritt 3: Funktionsdeklaration bei der Modellinitialisierung angeben

Die maximale Anzahl von Funktionsdeklarationen, die Sie mit der Anfrage angeben können, beträgt 128. Unter Zusätzliche Verhaltensweisen und Optionen weiter unten auf dieser Seite erfahren Sie, wie das Modell zwischen den Funktionen auswählen kann und wie Sie diese Auswahl steuern können (mit einem toolConfig den Modus für Funktionsaufrufe festlegen).

Hier erfahren Sie, wie Sie ein Gemini-Modell und optional einen Standort für Ihren Anwendungsfall und Ihre App auswählen.

Schritt 4: Funktion aufrufen, um die externe API aufzurufen

Wenn das Modell feststellt, dass die fetchWeather-Funktion tatsächlich dabei helfen kann, eine endgültige Antwort zu generieren, muss Ihre App diese Funktion mit den vom Modell bereitgestellten strukturierten Eingabedaten aufrufen.

Da Informationen zwischen dem Modell und der App hin- und hergeleitet werden müssen, wird empfohlen, Funktionsaufrufe über die Chatoberfläche mit mehreren Antworten zu verwenden.

Das folgende Code-Snippet zeigt, wie Ihrer App mitgeteilt wird, dass das Modell die fetchWeather-Funktion verwenden möchte. Außerdem sehen Sie, dass das Modell die erforderlichen Eingabeparameterwerte für den Funktionsaufruf (und die zugrunde liegende externe API) bereitgestellt hat.

In diesem Beispiel enthielt die eingehende Anfrage den Prompt What was the weather in Boston on October 17, 2024?. Anhand dieses Prompts hat das Modell die Eingabeparameter abgeleitet, die für die Funktion fetchWeather erforderlich sind (city, state und date).

Schritt 5: Ausgabe der Funktion für das Modell bereitstellen, um die endgültige Antwort zu generieren

Nachdem die fetchWeather-Funktion die Wetterinformationen zurückgegeben hat, müssen sie von Ihrer App an das Modell zurückgegeben werden.

Anschließend führt das Modell die endgültige Verarbeitung durch und generiert eine endgültige Antwort in natürlicher Sprache wie: On October 17, 2024 in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.

Zusätzliche Verhaltensweisen und Optionen

Im Folgenden finden Sie einige zusätzliche Verhaltensweisen für Funktionsaufrufe, die Sie in Ihrem Code berücksichtigen müssen, sowie Optionen, die Sie steuern können.

Das Modell fordert Sie möglicherweise auf, eine Funktion noch einmal oder eine andere Funktion aufzurufen.

Wenn die Antwort eines Funktionsaufrufs nicht ausreicht, um die endgültige Antwort des Modells zu generieren, kann das Modell einen zusätzlichen Funktionsaufruf oder einen Aufruf einer ganz anderen Funktion anfordern. Letzteres kann nur passieren, wenn Sie dem Modell in Ihrer Funktionsdeklarationsliste mehr als eine Funktion zur Verfügung stellen.

Ihre App muss berücksichtigen, dass das Modell möglicherweise zusätzliche Funktionsaufrufe anfordert.

Das Modell kann mehrere Funktionen gleichzeitig aufrufen.

Sie können dem Modell bis zu 128 Funktionen in der Liste der Funktionsdeklarationen zur Verfügung stellen. Daher kann das Modell entscheiden, dass mehrere Funktionen erforderlich sind, um die endgültige Antwort zu generieren. Es kann auch entscheiden, einige dieser Funktionen gleichzeitig aufzurufen. Dies wird als paralleler Funktionsaufruf bezeichnet.

Ihre App muss berücksichtigen, dass das Modell möglicherweise mehrere Funktionen gleichzeitig anfordert, und alle Antworten der Funktionen an das Modell zurückgeben.

Parallele Funktionsaufrufe werden von Gemini 1.5 Pro und Gemini 1.5 Flash unterstützt.

Sie können festlegen, wie und ob das Modell Funktionsaufrufe anfordern darf.

Sie können einige Einschränkungen dafür festlegen, wie und ob das Modell die bereitgestellten Funktionsdeklarationen verwenden soll. Dies wird als Festlegen des Aufrufmodus der Funktion bezeichnet. Hier sind einige Beispiele:

  • Anstatt dem Modell zu erlauben, zwischen einer sofortigen Antwort in natürlicher Sprache und einem Funktionsaufruf zu wählen, können Sie erzwingen, dass immer Funktionsaufrufe verwendet werden. Dies wird als erzwungener Funktionsaufruf bezeichnet.

  • Wenn Sie mehrere Funktionsdeklarationen angeben, können Sie das Modell darauf beschränken, nur einen Teil der bereitgestellten Funktionen zu verwenden.

Zum Implementieren dieser Einschränkungen (oder Modi) fügen Sie eine Toolkonfiguration (toolConfig) zusammen mit dem Prompt und den Funktionsdeklarationen hinzu. In der Toolkonfiguration können Sie einen der folgenden Modi angeben. Der nützlichste Modus ist ANY.

Mode Beschreibung
AUTO Das Standardverhalten des Modells. Das Modell entscheidet, ob ein Funktionsaufruf oder eine Antwort in natürlicher Sprache verwendet werden soll.
ANY Das Modell muss Funktionsaufrufe verwenden („erzwungene Funktionsaufrufe“). Wenn Sie das Modell auf eine Teilmenge von Funktionen beschränken möchten, geben Sie die zulässigen Funktionsnamen in allowedFunctionNames an.
NONE Das Modell darf keine Funktionsaufrufe verwenden. Dieses Verhalten entspricht einer Modellanfrage ohne zugehörige Funktionsdeklarationen.

Der Modus für Funktionsaufrufe wird von Gemini 1.5 Pro und Gemini 1.5 Flash unterstützt.

Was können Sie sonst noch tun?

Weitere Gemini API-Funktionen ausprobieren

Inhaltserstellung steuern

Mit Vertex AI Studio können Sie auch mit Prompts und Modellkonfigurationen experimentieren.

Weitere Informationen zu den Gemini-Modellen

Hier finden Sie Informationen zu den Modellen, die für verschiedene Anwendungsfälle verfügbar sind, sowie zu ihren Kontingenten und Preisen.


Feedback zu Vertex AI in Firebase geben