In dieser Anleitung wird gezeigt, wie Sie Funktionsaufrufe mit offenen Modellen in Vertex AI verwenden. Dabei werden die folgenden Themen behandelt:
- Funktionsaufrufe verwenden:Hier erfahren Sie, wie Sie eine Anfrage an das Modell strukturieren, die eine Funktionsdefinition enthält.
- Ausführliches Beispiel:Hier finden Sie ein vollständiges Beispiel für eine Unterhaltung in mehreren Runden, in der Funktionsaufrufe verwendet werden.
Das folgende Diagramm fasst den gesamten Workflow zusammen:
Mit Funktionsaufrufen kann ein Modell erkennen, wann ein externes Tool oder eine externe API aufgerufen werden muss. Anschließend werden strukturierte Daten mit der erforderlichen Funktion und den erforderlichen Argumenten für die Ausführung generiert. Alle offenen Modelle, die in Vertex AI Model as a Service (MaaS) verfügbar sind, unterstützen Funktionsaufrufe.
Weitere konzeptionelle Informationen zur Funktion „Funktionsaufruf“ finden Sie unter Einführung in Funktionsaufrufe.
Funktionsaufrufe verwenden
Wenn Sie Funktionsaufrufe verwenden möchten, stellen Sie dem Modell in Ihrer Anfrage eine Reihe von Tooldefinitionen zur Verfügung. Anhand dieser Definitionen entscheidet das Modell, ob es eine Funktion aufrufen muss, um Ihre Anfrage zu beantworten.
Im folgenden Beispiel wird das Modell aufgefordert, das Wetter in zwei Städten zu vergleichen. Die Anfrage enthält ein tools
-Array mit einer Funktionsdeklaration für get_current_weather
.
{
"model": "MODEL_NAME",
"messages": [
{
"role": "user",
"content": "Which city has a higher temperature, Boston or new Delhi, and by how much in F?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}
Nachdem das Modell die Anfrage erhalten hat, stellt es fest, dass es die Funktion get_current_weather
für beide Städte aufrufen muss. Es wird eine Antwort mit einem tool_calls
-Array mit den entsprechenden Argumenten für jeden Funktionsaufruf zurückgegeben.
Die folgenden Snippets zeigen die beiden Funktionsaufrufobjekte, die das Modell im Array tool_calls
zurückgibt.
Boston
{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"} "id":"get_current_weather","type":"function"}
Neu-Delhi
{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}
Detailliertes Beispiel
In diesem Abschnitt wird das vorherige Beispiel fortgesetzt und die vollständige wechselseitige Unterhaltung gezeigt.
Nachdem Ihre Anwendung die Funktionen basierend auf dem tool_calls
des Modells ausgeführt hat, senden Sie eine weitere Anfrage an das Modell. Diese neue Anfrage muss den Verlauf der Unterhaltung und die Ergebnisse der Funktionsaufrufe enthalten. Die Ergebnisse werden in Nachrichten mit der Rolle tool
bereitgestellt.
Das folgende Beispiel zeigt die Anfragenutzlast, die die Tool-Ergebnisse enthält:
{
"model": "MODEL_NAME",
"messages": [
{
"role": "user",
"content": "Which city has a higher temperature, Boston or new Delhi and by how much in F?"
},
{
"role": "assistant",
"content": "I'll check the current temperatures for Boston and New Delhi in Fahrenheit and compare them. I'll call the weather function for both cities.",
"tool_calls": [{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"},{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}]
},
{
"role": "tool",
"content": "The temperature in Boston is 75 degrees Fahrenheit.",
"tool_call_id": "get_weather"
},
{
"role": "tool",
"content": "The temperature in New Delhi is 50 degrees Fahrenheit.",
"tool_call_id": "get_weather"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
}
],
"tool_choice": "auto"
}
Das Modell verwendet die Funktionsergebnisse, um Ihre ursprüngliche Frage zu beantworten. Hier ist ein Beispiel für die endgültige Antwort des Modells:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Based on the current weather data:\n\n- **Boston, MA**: 75°F
\n- **New Delhi, India**: 50°F \n\n**Comparison**:
\nBoston is **25°F warmer** than New Delhi. \n\n**Answer**:
\nBoston has a higher temperature than New Delhi by 25 degrees Fahrenheit.",
"role": "assistant"
}
}
],
"created": 1750450289,
"id": "2025-06-20|13:11:29.240295-07|6.230.75.101|-987540014",
"model": "MODEL_NAME",
"object": "chat.completion",
"system_fingerprint": "",
"usage": {
"completion_tokens": 66,
"prompt_tokens": 217,
"total_tokens": 283
}
}