Überblick
Mit Funktionsaufrufen können Sie benutzerdefinierte Funktionen definieren und in einem generativen KI-Modell bereitstellen. Während der Verarbeitung einer Abfrage kann das Modell bestimmte Datenverarbeitungsaufgaben an diese Funktionen delegieren. Die Funktionen werden dabei nicht aufgerufen. Stattdessen wird eine strukturierte Datenausgabe bereitgestellt, die den Namen einer ausgewählten Funktion und die Argumente enthält, die das Modell zum Aufruf der Funktion vorschlägt. Mit dieser Ausgabe können Sie externe APIs aufrufen. Sie können dann die API-Ausgabe für das Modell zurückgeben, damit es die Antwort auf die Abfrage finalisieren kann. Auf diese Weise können durch Funktionsaufrufe LLMs auf Echtzeitinformationen zugreifen und mit verschiedenen Diensten wie SQL-Datenbanken, Customer-Relationship-Management-Systemen und Dokument-Repositories interagieren.
Das folgende Diagramm veranschaulicht die Funktionsweise von Funktionsaufrufen:
Weitere Informationen zu den Anwendungsfällen von Funktionsaufrufen finden Sie unter Anwendungsfälle für Funktionsaufrufe. Informationen zum Erstellen einer Funktionsaufrufanwendung finden Sie unter Funktionsaufrufanwendung erstellen. Best Practices finden Sie unter Best Practices.
Modell | Version | Startphase für Funktionsaufrufe | Unterstützung für parallelen Funktionsaufruf | Unterstützung für erzwungene Funktionsaufrufe |
---|---|---|---|---|
Gemini 1.0 Pro |
gemini-1.0-pro-001 |
General Availability | Nein | Nein |
Gemini 1.0 Pro |
gemini-1.0-pro-002 |
General Availability | Nein | Nein |
Gemini 1.5 Flash |
gemini-1.5-flash-001 |
General Availability | Ja | Nein |
Gemini 1.5 Pro |
gemini-1.5-pro-001 |
General Availability | Ja | Ja |
Anwendungsfälle von Funktionsaufrufen
Sie können Funktionsaufrufe für die folgenden Aufgaben verwenden:
- Entitäten aus Geschichten in natürlicher Sprache extrahieren: Extrahiert Listen von Charakteren, Beziehungen, Dingen und Orten aus einer Geschichte.
Vertex AI SDK für Python-Notebook – Extraktion strukturierter Daten mit Funktionsaufrufen - SQL-Datenbanken mit natürlicher Sprache abfragen und verstehen: Bitten Sie das Modell, Fragen wie
What percentage of orders are returned?
in SQL-Abfragen zu konvertieren und Funktionen zu erstellen, die diese Abfragen an BigQuery senden.
Blogpost: AI-gestützte Anwendung zur BigQuery-Datenexploration mit Funktionsaufrufen in Gemini erstellen - Kunden bei der Interaktion mit Unternehmen unterstützen: Erstellen Sie Funktionen, die eine Verbindung zur API eines Unternehmens herstellen, sodass das Modell genaue Antworten auf Abfragen wie die folgenden
Do you have the Pixel 8 Pro in stock?
oderIs there a store in Mountain View, CA that I can visit to try it out?
geben kann
Vertex AI SDK für Python-Notebook – Funktionsaufrufe mit der Vertex AI Gemini API und dem Python SDK
REST-Beispiel | Vertex AI SDK für Python-Chat – Beispiel - Erstellen Sie generative KI-Anwendungen, indem Sie eine Verbindung zu öffentlichen APIs herstellen, z. B.:
- Währungen umrechnen: Erstellen Sie eine Funktion, die eine Verbindung zu einer Währungsumtausch-App herstellt, sodass das Modell genaue Antworten auf Abfragen wie
What's the exchange rate for euros to dollars today?
geben kann
Codelab – Interaktion mit APIs durch Funktionsaufrufe in Gemini - Wetter für einen bestimmten Ort abfragen: Erstellen Sie eine Funktion, die eine Verbindung zu einer API eines meteorologischen Dienstes herstellt, sodass das Modell genaue Antworten auf Abfragen wie
What's the weather like in Paris?
liefern kann
Vertex AI SDK für Python-Notebook – Funktionsaufrufe mit der Vertex AI Gemini API und dem Python SDK
Blogpost – Funktionsaufruf: Ein natives Framework zum Verbinden von Gemini mit externen Systemen, Daten und APIs
Vertex AI SDK für Python- und Node.js-Textbeispiele | Chatbeispiele für Node.js, Java und Go - Adresse in Breiten- und Längengradkoordinaten umwandeln: Erstellen Sie eine Funktion, mit der strukturierte Standortdaten in Breiten- und Längengradkoordinaten umgewandelt werden. Bitten Sie das Modell, Adresse, Stadt, Bundesland und Postleitzahl in Abfragen wie
I want to get the lat/lon coordinates for the following address: 1600 Amphitheatre Pkwy, Mountain View, CA 94043, US.
zu identifizieren
Vertex AI SDK für Python-Notebook – Funktionsaufruf mit Vertex AI Gemini API und Python SDK
- Währungen umrechnen: Erstellen Sie eine Funktion, die eine Verbindung zu einer Währungsumtausch-App herstellt, sodass das Modell genaue Antworten auf Abfragen wie
- Sprachbefehle interpretieren: Erstellen Sie Funktionen für Aufgaben im Fahrzeug. Sie können beispielsweise Funktionen erstellen, mit denen das Radio oder die Klimaanlage aktiviert wird. Senden Sie Audiodateien der Sprachbefehle des Nutzers an das Modell und bitten Sie das Modell, die Audiodaten in Text umzuwandeln und die Funktion zu identifizieren, die der Nutzer aufrufen möchte.
- Workflows basierend auf Umgebungstriggern automatisieren: Erstellen Sie Funktionen zur Darstellung von Prozessen, die automatisiert werden können. Stellen Sie dem Modell Daten von Umgebungssensoren bereit und bitten Sie es, die Daten zu parsen und zu verarbeiten, um zu bestimmen, ob einer oder mehrere der Workflows aktiviert werden sollen. Ein Modell könnte zum Beispiel Temperaturdaten in einem Lager verarbeiten und eine Sprinklerfunktion aktivieren.
- Zuweisung von Support-Tickets automatisieren: Stellen Sie dem Modell Support-Tickets, Logs und kontextsensitive Regeln bereit. Bitten Sie das Modell, alle diese Informationen zu verarbeiten, um festzustellen, wem das Ticket zugewiesen werden soll. Rufen Sie eine Funktion auf, um das Ticket der vom Modell vorgeschlagenen Person zuzuweisen.
- Informationen aus einer Wissensdatenbank abrufen: Erstellen Sie Funktionen, die wissenschaftliche Artikel zu einem bestimmten Thema abrufen und zusammenfassen. Befähigen Sie das Modell, Fragen zu akademischen Themen zu beantworten und die Antworten mit Zitaten zu versehen.
Funktionsaufrufanwendung erstellen
Damit eine Benutzeroberfläche mit dem Modell kommunizieren und Funktionsaufrufe verwenden kann, müssen Sie Code erstellen, der die folgenden Aufgaben ausführt:
- Definieren und beschreiben Sie mithilfe von Funktionsdeklarationen eine Reihe verfügbarer Funktionen.
- Senden Sie die Abfrage eines Nutzers und die Funktionsdeklarationen an das Modell.
- Rufen Sie eine Funktion auf, wobei Sie die vom Modell ausgegebenen strukturierten Daten verwenden.
- Funktionsausgabe für das Modell übergeben.
Sie können eine Anwendung erstellen, die alle diese Aufgaben verwaltet. Diese kann ein Text-Chatbot, ein Sprach-Agent, ein automatisierter Workflow oder ein anderes Programm sein.
Einen Satz verfügbarer Funktionen definieren und beschreiben
Die Anwendung muss eine Reihe von Funktionen deklarieren, die das Modell zur Verarbeitung der Abfrage verwenden kann. Jede Funktionsdeklaration muss einen Funktionsnamen und Funktionsparameter enthalten. Wir empfehlen dringend, in jede Funktionsdeklaration auch eine Funktionsbeschreibung aufzunehmen.
Funktionsname
Die Anwendung und das Modell identifizieren die Funktion anhand des Funktionsnamens.
Best Practices für den Funktionsnamen finden Sie unter Best Practices – Funktionsname.
Funktionsparameter
Funktionsparameter müssen in einem Format bereitgestellt 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
, oneOf
.
Wenn Sie curl verwenden, geben Sie das Schema mit JSON an. Wenn Sie das Vertex AI SDK für Python verwenden, geben Sie das Schema mit einem Python-Wörterbuch an.
Best Practices für Funktionsparameter finden Sie unter Best Practices – Funktionsparameter.
Funktionsbeschreibung
Das Modell verwendet Funktionsbeschreibungen, um den Zweck der Funktionen zu verstehen und zu bestimmen, ob diese Funktionen bei der Verarbeitung von Nutzerabfragen nützlich sind.
Best Practices zur Funktionsbeschreibung finden Sie unter Best Practices – Funktionsbeschreibung.
Beispiel für eine Funktionsdeklaration
Das folgende Beispiel zeigt eine einfache Funktionsdeklaration in Python:
get_current_weather_func = FunctionDeclaration(
name="get_current_weather",
description="Get the current weather in a given location",
parameters={
"type": "object",
"properties": {"location": {"type": "string", "description": "The city name of the location for which to get the weather."}},
},
)
Das folgende Beispiel zeigt eine Funktionsdeklaration mit einem Elemente-Array:
extract_sale_records_func = FunctionDeclaration(
name="extract_sale_records",
description="Extract sale records from a document.",
parameters={
"type": "object",
"properties": {
"records": {
"type": "array",
"description": "A list of sale records",
"items": {
"description": "Data for a sale record",
"type": "object",
"properties": {
"id": {"type": "integer", "description": "The unique id of the sale."},
"date": {"type": "string", "description": "Date of the sale, in the format of MMDDYY, e.g., 031023"},
"total_amount": {"type": "number", "description": "The total amount of the sale."},
"customer_name": {"type": "string", "description": "The name of the customer, including first name and last name."},
"customer_contact": {"type": "string", "description": "The phone number of the customer, e.g., 650-123-4567."},
},
"required": ["id", "date", "total_amount"],
},
},
},
"required": ["records"],
},
)
Abfrage und Funktionsdeklarationen an das Modell senden
Stellt der Nutzer einen Prompt bereit, muss die Anwendung das Modell mit dem Nutzer-Prompt und den Funktionsdeklarationen bereitstellen. Die Anwendung kann dem Modell eine Generierungskonfiguration zur Verfügung stellen, um zu konfigurieren, wie das Modell Ergebnisse generiert. Um zu konfigurieren, wie das Modell die Funktionsdeklarationen verwendet, kann die Anwendung das Modell mit einer Toolkonfiguration bereitstellen.
Nutzer-Prompt
Das folgende Beispiel zeigt einen Nutzer-Prompt: "Wie ist das Wetter in Boston?"
Best Practices für den Nutzer-Prompt finden Sie unter Best Practices – Nutzer-Prompt.
Generierungskonfiguration
Das Modell kann für verschiedene Parameterwerte unterschiedliche Ergebnisse generieren. Der Temperaturparameter steuert den Grad der Zufälligkeit in dieser Generierung.
Niedrigere Temperaturen eignen sich für Funktionen, die deterministische Parameterwerte erfordern, während höhere Temperaturen für Funktionen mit Parametern geeignet sind, die unterschiedliche oder kreativere Parameterwerte akzeptieren. Eine Temperatur von 0
ist deterministisch. In diesem Fall sind die Antworten auf einen bestimmten Prompt größtenteils deterministisch, aber eine gewisse Variation ist dennoch möglich. Weitere Informationen finden Sie unter Gemini API.
Zum Festlegen dieses Parameters senden Sie eine Generierungskonfiguration (generation_config
) zusammen mit dem Prompt und den Funktionsdeklarationen. Sie können den Parameter temperature
während einer Chatunterhaltung mit der Vertex AI API und einem aktualisierten generation_config
aktualisieren. Ein Beispiel für das Festlegen des temperature
-Parameters siehe
So reichen Sie den Prompt und die Funktionsdeklarationen ein.
Best Practices für die Generierungskonfiguration finden Sie unter Best Practices – Generierungskonfiguration.
Toolkonfiguration
Sie können Einschränkungen für die Verwendung der von Ihnen bereitgestellten Funktionsdeklarationen durch das Modell festlegen. Anstatt dem Modell beispielsweise zu erlauben, zwischen einer Antwort in natürlicher Sprache und einem Funktionsaufruf zu wählen, können Sie erzwingen, dass nur Funktionsaufrufe vorhergesagt werden ("erzwungener Funktionsaufruf"). Sie können dem Modell auch einen vollständigen Satz von Funktionsdeklarationen bereitstellen, seine Antworten jedoch auf eine Teilmenge dieser Funktionen beschränken.
Reichen Sie eine Toolkonfiguration (tool_config
) zusammen mit dem Prompt und den Funktionsdeklarationen ein, um diese Einschränkungen festzulegen. In der Konfiguration können Sie einen der folgenden Modi angeben:
Modus | Beschreibung |
---|---|
AUTOMATISCH | Das Standardverhalten des Modells. Das Modell entscheidet, ob ein Funktionsaufruf oder eine Antwort in natürlicher Sprache vorhergesagt werden soll. |
ALLE | Das Modell darf nur Funktionsaufrufe vorhersagen. Wenn Sie das Modell auf eine Teilmenge von Funktionen beschränken möchten, definieren Sie die zulässigen Funktionsnamen in allowed_function_names . |
KEINE | Das Modell darf Funktionsaufrufe nicht vorhersagen. Dieses Verhalten entspricht einer Modellanfrage ohne zugehörige Funktionsdeklarationen. |
Der ANY
-Modus der Toolkonfiguration ("erzwungener Funktionsaufruf") ist ein Vorschaufeature. Er wird nur für Gemini 1.5 Pro
-Modelle unterstützt.
Weitere Informationen finden Sie unter Function Calling API.
Prompt und Funktionsdeklarationen senden
Das folgende Beispiel zeigt, wie Sie die Abfrage und die Funktionsdeklarationen an das Modell senden und das Modell auf die Vorhersage von get_current_weather
-Funktionsaufrufen beschränken können.
# Initialize Vertex AI
from vertexai.preview.generative_models import ToolConfig
vertexai.init(project=project_id, location=location)
# Initialize Gemini model
model = GenerativeModel("Gemini 1.5 Pro")
# Define a tool that includes the function declaration get_current_weather_func
weather_tool = Tool(
function_declarations=[get_current_weather_func],
)
# Define the user's prompt in a Content object that we can reuse in model calls
user_prompt_content = Content(
role="user",
parts=[
Part.from_text(prompt),
],
)
# Send the prompt and instruct the model to generate content using the Tool object that you just created
response = model.generate_content(
user_prompt_content,
generation_config={"temperature": 0},
tools=[weather_tool],
tool_config=ToolConfig(
function_calling_config=ToolConfig.FunctionCallingConfig(
# ANY mode forces the model to predict a function call
mode=ToolConfig.FunctionCallingConfig.Mode.ANY,
# Allowed functions to call when the mode is ANY. If empty, any one of
# the provided functions are called.
allowed_function_names=["get_current_weather"],
))
)
response_function_call_content = response.candidates[0].content
Wenn das Modell feststellt, dass es die Ausgabe einer bestimmten Funktion benötigt, enthält die Antwort, die die Anwendung vom Modell empfängt, den Funktionsnamen und die Parameterwerte, mit denen die Funktion aufgerufen werden soll.
Das folgende Beispiel zeigt eine Modellantwort auf den Nutzer-Prompt „Wie ist das Wetter in Boston?“. Das Modell schlägt den Aufruf der Funktion get_current_weather
mit dem Parameter Boston, MA
vor.
candidates { content { role: "model" parts { function_call { name: "get_current_weather" args { fields { key: "location" value { string_value: "Boston, MA" } } } } } } ... }
Für Prompts wie „Wetterdetails in Neu-Delhi und San Francisco?“ kann das Modell mehrere parallele Funktionsaufrufe vorschlagen. Parallele Funktionsaufrufe sind ein Vorschaufeature. Es wird von den Modellen Gemini 1.5 Pro
und Gemini 1.5 Flash
unterstützt. Weitere Informationen finden Sie unter Beispiel für parallele Funktionsaufrufe.
Externe API aufrufen
Wenn die Anwendung einen Funktionsnamen und Parameterwerte vom Modell empfängt, muss die Anwendung eine Verbindung zu einer externen API herstellen und die Funktion aufrufen.
Im folgenden Beispiel werden synthetische Daten verwendet, um eine Antwortnutzlast von einer externen API zu simulieren:
# Check the function name that the model responded with, and make an API call to an external system
if (
response.candidates[0].content.parts[0].function_call.name
== "get_current_weather"
):
# Extract the arguments to use in your API call
location = (
response.candidates[0].content.parts[0].function_call.args["location"]
)
# Here you can use your preferred method to make an API request to fetch the current weather, for example:
# api_response = requests.post(weather_api_url, data={"location": location})
# In this example, we'll use synthetic data to simulate a response payload from an external API
api_response = """{ "location": "Boston, MA", "temperature": 38, "description": "Partly Cloudy",
"icon": "partly-cloudy", "humidity": 65, "wind": { "speed": 10, "direction": "NW" } }"""
Best Practices für API-Aufrufe finden Sie unter Best Practices – API-Aufruf.
Funktionsausgabe für das Modell übergeben
Nachdem eine Anwendung eine Antwort von einer externen API erhalten hat, muss sie diese Antwort an das Modell senden. Im Folgenden finden Sie ein Beispiel dafür, wie Sie das mit Python tun können:
response = model.generate_content(
[
user_prompt_content, # User prompt
response_function_call_content, # Function call response
Content(
parts=[
Part.from_function_response(
name="get_current_weather",
response={
"content": api_response, # Return the API response to Gemini
},
)
],
),
],
tools=[weather_tool],
)
# Get the model summary response
summary = response.candidates[0].content.parts[0].text
Wenn das Modell mehrere parallele Funktionsaufrufe vorgeschlagen hat, muss die Anwendung alle Antworten an das Modell zurückgeben. Parallele Funktionsaufrufe sind ein Vorschaufeature. Es wird von den Modellen Gemini 1.5 Pro
und Gemini 1.5 Flash
unterstützt. Weitere Informationen finden Sie unter Beispiel für parallele Funktionsaufrufe.
Die Modelle gemini-1.0-pro-001
und gemini-1.0-pro-002
können feststellen, dass die Ausgabe einer anderen Funktion zum Beantworten der Abfrage erforderlich ist. In diesem Fall enthält die Antwort, die die Anwendung vom Modell empfängt, einen anderen Funktionsnamen und einen weiteren Satz von Parameterwerten.
Wenn das Modell feststellt, dass die API-Antwort zur Beantwortung der Nutzeranfrage ausreicht, wird eine Antwort in natürlicher Sprache erstellt und an die Anwendung zurückgegeben. In diesem Fall muss die Anwendung die Antwort an den Nutzer zurückgeben. Das folgende Beispiel zeigt eine Abfrageantwort: It is currently 38 degrees Fahrenheit in Boston, MA with partly cloudy skies. The humidity is 65% and the wind is blowing at 10 mph from the northwest.
Best Practices
Funktionsname
Verwenden Sie im Funktionsnamen keine Punkte (.
), Bindestriche (-
) oder Leerzeichen.
Verwenden Sie stattdessen Unterstriche (_
) oder andere Zeichen.
Funktionsparameter
Schreiben Sie klare und ausführliche Parameterbeschreibungen, einschließlich Details wie Ihr bevorzugtes Format oder Ihre bevorzugte Werte. Beispiel für eine book_flight_ticket
-Funktion:
- Hier ein gutes Beispiel für eine
departure
-Parameterbeschreibung:Use the 3 char airport code to represent the airport. For example, SJC or SFO. Don't use the city name.
- Das folgende Beispiel zeigt eine
departure
-Parameterbeschreibung:the departure airport
Verwenden Sie nach Möglichkeit stark typisierte Parameter, um Modellhalluzinationen zu reduzieren. Wenn die Parameterwerte beispielsweise aus einem endlichen Set stammen, fügen Sie das Feld enum
hinzu, anstatt den Wertesatz in die Beschreibung einzufügen. Wenn der Parameterwert immer eine Ganzzahl ist, setzen Sie den Typ auf integer
statt auf number
.
Funktionsbeschreibung
Schreiben Sie Funktionsbeschreibungen klar und ausführlich. Beispiel für eine book_flight_ticket
-Funktion:
- Das folgende Beispiel zeigt eine gute Funktionsbeschreibung:
book flight tickets after confirming users' specific requirements, such as time, departure, destination, party size and preferred airline
- Das folgende Beispiel zeigt eine fehlerhafte Funktionsbeschreibung:
book flight ticket
Nutzer-Prompt
Die besten Ergebnisse erzielen Sie, wenn Sie der Nutzerabfrage die folgenden Details voranstellen:
- Zusätzlicher Kontext für das Modell, z. B.
You are a flight API assistant to help with searching flights based on user preferences.
- Details oder Anleitungen zur Verwendung der Funktionen, z. B.
Don't make assumptions on the departure or destination airports. Always use a future date for the departure or destination time.
- Eine Anleitung, um klärende Fragen zu stellen, wenn Nutzerabfragen mehrdeutig sind, z. B.
Ask clarifying questions if not enough information is available.
Generierungskonfiguration
Verwenden Sie für den Temperaturparameter 0
oder einen anderen niedrigen Wert. Dadurch wird das Modell angewiesen, zuverlässigere Ergebnisse zu generieren und KI-Halluzinationen zu reduzieren.
API-Aufruf
Wenn das Modell den Aufruf einer Funktion vorschlägt, die eine Bestellung senden, eine Datenbank aktualisieren oder anderweitig erhebliche Konsequenzen haben würde, validieren Sie den Funktionsaufruf vor der Ausführung mit dem Nutzer.
Preise
Die Preise für Funktionsaufrufe basieren auf der Anzahl der Zeichen in den Textein- und -ausgaben. Weitere Informationen finden Sie unter Vertex AI-Preise.
Hier bezieht sich die Texteingabe (Prompt) auf die Nutzerabfrage für die aktuelle Unterhaltungsrunde, die Funktionsdeklarationen für die aktuelle Unterhaltungsrunde und den Verlauf der Unterhaltung. Der Verlauf der Unterhaltung umfasst die Abfragen, die Funktionsaufrufe und die Funktionsantworten vorheriger Unterhaltungsrunden. Vertex AI kürzt den Verlauf der Unterhaltung auf 32.000 Zeichen.
Die Textausgabe (Antwort) bezieht sich auf die Funktionsaufrufe und die Textantworten für die aktuelle Unterhaltungsrunde.
Beispiele für Funktionsaufrufe
Sie können Funktionsaufrufe verwenden, um eine einzelne Textantwort zu generieren oder eine Chatsitzung zu unterstützen. Ad-hoc-Textantworten sind für bestimmte Geschäftsaufgaben nützlich, einschließlich der Codegenerierung. Chatsitzungen sind in freien, dialogorientierten Szenarien nützlich, in denen ein Nutzer wahrscheinlich Anschlussfragen stellt.
Wenn Sie Funktionsaufrufe verwenden, um eine einzelne Antwort zu generieren, müssen Sie dem Modell den vollständigen Kontext der Interaktion bereitstellen. Wenn Sie dagegen Funktionsaufrufe im Kontext einer Chatsitzung verwenden, speichert die Sitzung den Kontext für Sie und fügt ihn in jede Modellanfrage ein. In beiden Fällen speichert Vertex AI den Verlauf der Interaktion auf der Clientseite.
Informationen zum Generieren einer einzelnen Textantwort mithilfe von Funktionsaufrufen finden Sie unter Textbeispiele. Informationen zur Verwendung von Funktionsaufrufen zur Unterstützung einer Chatsitzung finden Sie unter Chatbeispiele. Ein Beispiel für den parallelen Funktionsaufruf finden Sie unter Beispiel für parallele Funktionsaufrufe.
Textbeispiele
Python
Dieses Beispiel zeigt ein Textszenario mit einer Funktion und einem Prompt. Es verwendet die Klasse GenerativeModel
und ihre Methoden. Weitere Informationen zur Verwendung des Vertex AI SDK für Python mit multimodalen Modellen von Gemini finden Sie unter Einführung in multimodale Klassen in Vertex AI SDK für Python.
Python
Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Node.js
Dieses Beispiel zeigt ein Textszenario mit einer Funktion und einem Prompt.
REST
Dieses Beispiel zeigt ein Textszenario mit drei Funktionen und einer Eingabeaufforderung.
In diesem Beispiel rufen Sie das generative KI-Modell zweimal auf.
- In dem ersten Aufruf geben Sie das Modell mit dem Prompt und den Funktionsdeklarationen an.
- In dem zweiten Aufruf geben Sie dem Modell die API-Antwort.
Erste Modellanfrage
Die Anfrage muss eine Abfrage im Parameter text
definieren. In diesem Beispiel wird die folgende Abfrage definiert: "In welchen Theatern in Mountain View wird der Barbie-Film gezeigt?".
In der Anfrage muss auch ein Tool (tools
) mit einer Reihe von Funktionsdeklarationen (functionDeclarations
) definiert sein. Diese Funktionsdeklarationen müssen in einem Format angegeben werden, das mit dem OpenAPI-Schema kompatibel ist. In diesem Beispiel werden die folgenden Funktionen definiert:
find_movies
sucht Filmtitel, die im Kino gezeigt werden.find_theatres
sucht Kinos basierend auf dem Standort.get_showtimes
ermittelt die Startzeiten von Filmen, die in einem bestimmten Kino laufen.
Weitere Informationen zu den Parametern der Modellanfrage finden Sie unter Gemini API.
Ersetzen Sie my-project durch den Namen des Google Cloud-Projekts.
Erste Modellanfrage
PROJECT_ID=my-project MODEL_ID=gemini-1.0-pro API=streamGenerateContent curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:${API} -d '{ "contents": { "role": "user", "parts": { "text": "Which theaters in Mountain View show the Barbie movie?" } }, "tools": [ { "function_declarations": [ { "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "string", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": [ "description" ] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which are is currently playing in theaters", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" } }, "required": [ "location" ] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" }, "theater": { "type": "string", "description": "Name of the theater" }, "date": { "type": "string", "description": "Date for requested showtime" } }, "required": [ "location", "movie", "theater", "date" ] } } ] } ] }'
Für die Eingabeaufforderung „In welchen Kinos in Mountain View wird der Barbie-Film gezeigt?“, gibt das Modell möglicherweise die Funktion find_theatres
mit den Parametern Barbie
und Mountain View, CA
zurück.
Antwort auf die erste Modellanfrage
[{ "candidates": [ { "content": { "parts": [ { "functionCall": { "name": "find_theaters", "args": { "movie": "Barbie", "location": "Mountain View, CA" } } } ] }, "finishReason": "STOP", "safetyRatings": [ { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } ], "usageMetadata": { "promptTokenCount": 9, "totalTokenCount": 9 } }]
Zweite Modellanfrage
In diesem Beispiel werden synthetische Daten verwendet, anstatt die externe API aufzurufen.
Es gibt zwei Ergebnisse mit jeweils zwei Parametern (name
und address
):
name
:AMC Mountain View 16
,address
:2000 W El Camino Real, Mountain View, CA 94040
name
:Regal Edwards 14
,address
:245 Castro St, Mountain View, CA 94040
Ersetzen Sie my-project durch den Namen des Google Cloud-Projekts.
Zweite Modellanfrage
PROJECT_ID=my-project MODEL_ID=gemini-1.0-pro API=streamGenerateContent curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:${API} -d '{ "contents": [{ "role": "user", "parts": [{ "text": "Which theaters in Mountain View show the Barbie movie?" }] }, { "role": "model", "parts": [{ "functionCall": { "name": "find_theaters", "args": { "location": "Mountain View, CA", "movie": "Barbie" } } }] }, { "parts": [{ "functionResponse": { "name": "find_theaters", "response": { "name": "find_theaters", "content": { "movie": "Barbie", "theaters": [{ "name": "AMC Mountain View 16", "address": "2000 W El Camino Real, Mountain View, CA 94040" }, { "name": "Regal Edwards 14", "address": "245 Castro St, Mountain View, CA 94040" }] } } } }] }], "tools": [{ "functionDeclarations": [{ "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "STRING", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": ["description"] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which are is currently playing in theaters", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "STRING", "description": "Any movie title" } }, "required": ["location"] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "STRING", "description": "Any movie title" }, "theater": { "type": "STRING", "description": "Name of the theater" }, "date": { "type": "STRING", "description": "Date for requested showtime" } }, "required": ["location", "movie", "theater", "date"] } }] }] }'
Die Antwort des Modells sieht in etwa so aus:
Antwort auf die zweite Modellanfrage
{ "candidates": [ { "content": { "parts": [ { "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14." } ] } } ], "usageMetadata": { "promptTokenCount": 9, "candidatesTokenCount": 27, "totalTokenCount": 36 } }
Chatbeispiele
Python
Dieses Beispiel zeigt ein Chatszenario mit zwei Funktionen und zwei aufeinanderfolgenden Eingabeaufforderungen. Es verwendet die Klasse GenerativeModel
und ihre Methoden. Weitere Informationen zur Verwendung des Vertex AI SDK für Python mit multimodalen Modellen finden Sie unter Einführung in multimodale Klassen in Vertex AI SDK für Python.
Informationen zum Installieren oder Aktualisieren von Python finden Sie unter Vertex AI SDK für Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Go-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Go API.
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Beispiel für parallelen Funktionsaufruf
REST
Dieses Beispiel zeigt ein Szenario mit einer get_current_weather
-Funktion.
Die Eingabeaufforderung lautet „Wetterdetails für Neu-Delhi und San Francisco?“. Das Modell schlägt zwei parallele get_current_weather
-Funktionsaufrufe vor: einen mit dem Parameter New Delhi
und einen mit dem Parameter San Francisco
.
Der parallele Funktionsaufruf ist eine Vorschaufunktion. Es wird von den Modellen Gemini 1.5 Pro
und Gemini 1.5 Flash
unterstützt.
Weitere Informationen zu den Parametern der Modellanfrage finden Sie unter Gemini API.
candidates { content { role: "model" parts: [ { function_call { name: "get_current_weather" args { fields { key: "location" value { string_value: "New Delhi" } } } } }, { function_call { name: "get_current_weather" args { fields { key: "location" value { string_value: "San Francisco" } } } } } ] } ... }
Der folgende Befehl zeigt, wie Sie dem Modell die Funktionsausgabe bereitstellen. Ersetzen Sie my-project durch den Namen des Google Cloud-Projekts.
Modellanfrage
PROJECT_ID=my-project MODEL_ID=gemini-1.5-pro-001 VERSION="v1" LOCATION="us-central1" ENDPOINT=${LOCATION}-aiplatform.googleapis.com API="generateContent" curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://${ENDPOINT}/${VERSION}/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${API} -d '{ "contents": [ { "role": "user", "parts": { "text": "What is difference in temperature in New Delhi and San Francisco?" } }, { "role": "model", "parts": [ { "functionCall": { "name": "get_current_weather", "args": { "location": "New Delhi" } } }, { "functionCall": { "name": "get_current_weather", "args": { "location": "San Francisco" } } } ] }, { "role": "user", "parts": [ { "functionResponse": { "name": "get_current_weather", "response": { "temperature": 30.5, "unit": "C" } } }, { "functionResponse": { "name": "get_current_weather", "response": { "temperature": 20, "unit": "C" } } } ] } ], "tools": [ { "function_declarations": [ { "name": "get_current_weather", "description": "Get the current weather in a specific location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" } }, "required": [ "location" ] } } ] } ] }'
Die vom Modell erstellte Antwort in natürlicher Sprache sieht in etwa so aus:
Modellantwort
[ { "candidates": [ { "content": { "parts": [ { "text": "The temperature in New Delhi is 30.5C and the temperature in San Francisco is 20C. The difference is 10.5C. \n" } ] }, "finishReason": "STOP", ... } ] ... } ]