Einführung in Funktionsaufrufe mit der Gemini API

Benutzerdefinierte Funktionen können mithilfe der Funktion „Functional“ definiert und Gemini-Modellen zur Verfügung gestellt werden. Anruffunktion. Die Modelle rufen diese Funktionen nicht direkt auf, sondern eine strukturierte Datenausgabe zu generieren, die den Funktionsnamen angibt und Argumente. Mit dieser Ausgabe können Sie Anwendungen schreiben, externe APIs ausgeben und aufrufen. Die resultierende API-Ausgabe kann dann in einen weiteren Modell-Prompt integriert, sodass eine umfassendere Abfrage Antworten. Funktionsaufrufe ermöglichen Nutzern, in Echtzeit zu interagieren Informationen und verschiedene Dienstleistungen wie Datenbanken, Kundenbeziehungen und Dokumentenspeicher, um deren Fähigkeit, relevante und kontextabhängige Antworten liefern.

Funktionsweise von Funktionsaufrufen

Sie verwenden die Funktion „Funktionsaufruf“, indem Sie strukturierte Abfragedaten hinzufügen, Funktionsdeklarationen zu einem Modell-Prompt hinzu. Die Funktionsdeklarationen liefern den Namen der API-Funktion, erklären ihren Zweck, alle unterstützten Parameter und Beschreibungen dieser Parameter. Nach bestandener Prüfung einer Liste von Funktionsdeklarationen in einer Abfrage an das Modell, und der restlichen Abfrage, um zu bestimmen, wie die deklarierten die API als Antwort auf die Anfrage verwendet.

Das Modell gibt dann ein Objekt OpenAPI-kompatibles Schema Gibt an, wie eine oder mehrere der deklarierten Funktionen aufgerufen werden, um eine Antwort zu erhalten auf die Frage der Nutzenden. Sie können dann den empfohlenen Funktionsaufruf Parameter verwenden, die eigentliche API aufrufen, eine Antwort erhalten und diese Antwort an oder weitere Maßnahmen ergreifen. Beachten Sie, dass das Modell die Methode deklarierten Funktionen. Stattdessen verwenden Sie die zurückgegebenen Schemaobjektparameter, die Funktion aufrufen. Die Gemini API unterstützt auch parallele Funktionsaufrufe, bei denen empfiehlt das Modell mehrere API-Funktionsaufrufe.

Unterstützte Modelle

Die folgenden Modelle unterstützen die Funktion „Funktionsaufrufe“:

  • gemini-1.0-pro
  • gemini-1.0-pro-001
  • gemini-1.5-flash-latest
  • gemini-1.5-pro-latest

Funktionsdeklarationen

Wenn Sie Funktionsaufrufe in einer Eingabeaufforderung implementieren, erstellen Sie ein tools-Objekt. die ein oder mehrere function declarations enthält. Sie definieren Funktionen mit JSON, insbesondere mit einer Teilmenge auswählen der OpenAPI-Schema Format. Eine einzelne Funktionsdeklaration kann die folgenden Parameter enthalten:

  • name (String): Die eindeutige Kennung für die Funktion innerhalb der API aufrufen.
  • description (String): Eine umfassende Erläuterung der Zweck und Fähigkeiten.
  • parameters (Objekt): Definiert die Eingabedaten, die für die Funktion erforderlich sind.
    • type (String): Gibt den gesamten Datentyp an, z. B. object.
    • properties (Objekt): Listet einzelne Parameter auf, jeweils mit:
      • type (String): Der Datentyp des Parameters, z. B. string, integer, boolean.
      • description (String): Eine verständliche Erklärung der und dem erwarteten Format.
    • required (Array): Ein Array von Strings, die die Parameternamen auflisten. die obligatorisch sind, damit die Funktion funktioniert.

Codebeispiele für eine Funktionsdeklaration mit cURL-Befehlen finden Sie in der Beispiele für Funktionsaufrufe Beispiele Informationen zum Erstellen von Funktionsdeklarationen für andere Plattformen finden Sie in der Leitfaden zu Funktionsaufruf-Plattformen.

Best Practices für Funktionsdeklarationen

Funktionen genau zu definieren, wenn Sie sie in Ihre -Anfragen. Jede Funktion stützt sich auf bestimmte Parameter, die ihr Verhalten steuern. und Interaktion mit dem Modell. Der folgende Eintrag enthält Informationen zur Definition der Parameter einer einzelnen Funktion in einer functions_declarations Array.

  • name: Verwenden Sie eindeutige, aussagekräftige Namen ohne Leerzeichen, Punkte (.) oder Bindestriche (-). Verwenden Sie stattdessen Unterstriche (_) oder Camel-Case-Schreibweise.

  • description: Stellen Sie eine detaillierte, klare und spezifische Funktion bereit Beschreibungen und gegebenenfalls Beispiele. Anstatt beispielsweise find theaters, verwenden Sie find theaters based on location and optionally movie title that is currently playing in theaters.. Vermeiden Sie zu allgemein gehaltene oder mehrdeutige Aussagen. Beschreibungen.

  • properties > type: Verwenden Sie stark typisierte Parameter, um KI-Halluzinationen verwenden. Stammen die Parameterwerte z. B. aus einem endlichen festgelegt ist, verwenden Sie ein enum-Feld, anstatt die Werte in der Beschreibung aufzulisten (z.B. "type": "enum", "values": ["now_playing", "upcoming"]. Wenn die ist immer eine Ganzzahl, legen Sie als Typ integer fest, number

  • properties > description: Geben Sie konkrete Beispiele und Einschränkungen an. Verwenden Sie beispielsweise The city and state, e.g. San Francisco, CA or a zip code e.g. 95616 anstelle von the location to search.

Weitere Best Practices für die Verwendung von Funktionsaufrufen finden Sie in der Best Practices.

Modus für Funktionsaufrufe

Mit dem Parameter mode für Funktionsaufrufe können Sie die Ausführung ändern der Funktion ein. Es gibt drei Modi:

  • AUTO: Das Standardverhalten des Modells. Das Modell beschließt, entweder oder einer Antwort in natürlicher Sprache.
  • ANY: Das Modell ist darauf beschränkt, immer einen Funktionsaufruf vorherzusagen. Wenn allowed_function_names nicht angegeben ist, wählt das Modell aus allen verfügbaren Funktionsdeklarationen. Wenn allowed_function_names vorhanden ist, gilt Folgendes: das Modell aus der Gruppe zulässiger Funktionen auswählt.
  • NONE: Das Modell sagt keinen Funktionsaufruf vorher. In diesem Fall hat das Modell wie wenn keine Funktionsdeklarationen übergeben werden.

Sie können auch eine Reihe von allowed_function_names übergeben, die, sofern angegeben, begrenzt Funktionen, die das Modell aufruft. Sie sollten nur allowed_function_names, wenn der Modus ANY ist. Funktionsnamen müssen übereinstimmen Funktionsdeklarationen. Wenn der Modus auf ANY eingestellt ist und die allowed_function_names festgelegt ist, sagt das Modell einen Funktionsaufruf aus der Funktionsnamen bereitgestellt werden. Das folgende Code-Snippet aus einer Beispielanfrage zeigt, wie Sie legt mode auf ANY fest und gibt eine Liste der zulässigen Funktionen an:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Beispiele für Funktionsaufrufe

Dieser Abschnitt enthält Beispiel-Prompts für Funktionsaufrufe mit cURL-Befehlen. Die Beispiele umfassen Szenarien mit einem und mehreren Runden sowie die Möglichkeit, Modi für Funktionsaufrufe.

Bei Verwendung von cURL-Befehlen mit dieser Funktion werden die Funktion und der Parameter Informationen sind im tools-Element enthalten. Jede Funktionsdeklaration in der Das tools-Element enthält den Funktionsnamen und Sie geben die Parameter mit ein OpenAPI-kompatibles Schema, und eine Funktionsbeschreibung.

Beispiel für eine einzelne Runde

Im Single-Turn rufst du das Sprachmodell einmal auf. Beim Funktionsaufruf kann ein Einzelrunden-Anwendungsfall sein, wenn Sie dem Modell eine Natural Language-Abfrage und eine Liste von Funktionen zur Verfügung stellen. In diesem Fall verwendet das Modell die Funktion -Deklaration, die den Funktionsnamen, die Parameter und die Beschreibung enthält, sagen, welche Funktion aufgerufen und welche Argumente dafür verwendet werden sollen.

Im folgenden curl-Beispiel wird ein Beispiel für die Übergabe einer Beschreibung einer Funktion, das Informationen darüber zurückgibt, wo ein Film abgespielt wird. Mehrere In der Anfrage sind Funktionsdeklarationen enthalten, z. B. find_movies und find_theaters.

Single-Turn-Funktion zum Aufrufen einer Beispielanfrage

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "Which theaters in Mountain View show 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 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 auf dieses curl-Beispiel könnte in etwa so aussehen.

curl-Beispielantwort für Einzelrunden-Funktionsaufruf

[{
  "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
  }
}]
    

Beispiel für eine Abzweigung mit ANY-Modus

Das folgende curl-Beispiel ähnelt dem Beispiel mit einer einzigen Antwort, legt jedoch Folgendes fest: den mode auf ANY:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY"
  },
}

Funktionsaufruf mit ANY-Modus (Anfrage)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "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 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"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY"
    },
  }
}'
    

Die Antwort sieht etwa so aus:

Funktionsaufruf im ANY-Modus (Antwort)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "",
                "location": "North Seattle, WA"
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Beispiel für einen Schritt in ANY-Modus und zulässige Funktionen

Das folgende curl-Beispiel ähnelt dem Beispiel mit einer einzigen Antwort, legt jedoch Folgendes fest: den Modus auf ANY und enthält eine Liste der zulässigen Funktionen:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Funktionsaufruf mit ANY-Modus und zulässigen Funktionen (Anfrage)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "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 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"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY",
      "allowed_function_names": ["find_theaters", "get_showtimes"]
    },
  }
}'
    

Das Modell kann die find_movies-Funktion nicht vorhersagen, da sie nicht in der Liste steht und sagt stattdessen eine andere Funktion voraus. Die Antwort könnte etwa so aussehen:

Funktionsaufruf mit ANY-Modus und zulässigen Funktionen (Antwort)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "location": "North Seattle, WA",
                "movie": null
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Beispiele mit mehreren Schritten

So implementieren Sie ein Szenario für den Funktionsaufruf in mehreren Schritten:

  1. Rufen Sie eine Antwort auf einen Funktionsaufruf ab, indem Sie das Sprachmodell aufrufen. Dies ist die erste Drehen.
  2. Rufen Sie das Sprachmodell mit der Antwort des Funktionsaufrufs aus der ersten Runde auf. und die Funktionsantwort, die Sie durch den Aufruf dieser Funktion erhalten. Dies ist die bei der zweiten Runde.

Die Antwort in der zweiten Runde fasst entweder die Ergebnisse zusammen, um Ihre Abfrage in der ersten Runde zu beantworten, oder enthält einen zweiten Funktionsaufruf, mit dem Sie weitere Informationen zu Ihrer Abfrage abrufen können.

Dieses Thema enthält zwei curl-Beispiele mit mehreren Schritten:

Eine Antwort aus einer früheren Runde verwenden

Im folgenden curl-Beispiel werden die Funktion und die Argumente aufgerufen, die vom aus dem vorherigen Beispiel mit einer einzigen Antwort, um eine Antwort zu erhalten. Die Methode und die Parameter die im Beispiel mit einer Antwort zurückgegeben werden, sind in dieser JSON-Datei enthalten.

"functionCall": {
  "name": "find_theaters",
  "args": {
    "movie": "Barbie",
    "location": "Mountain View, CA"
  }
}

curl-Beispielanfrage für Funktionsaufruf in mehreren Runden

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "function",
    "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 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 auf dieses curl-Beispiel enthält das Ergebnis des Aufrufs der find_theaters-Methode. Die Antwort sieht etwa so aus:

curl-Beispielantwort für Funktionsaufruf in mehreren Runden

{
  "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
  }
}
    

Modell mehrmals aufrufen

Im folgenden cURL-Beispiel wird das Generative-AI-Modell mehrmals aufgerufen, eine Funktion. Jedes Mal, wenn das Modell die Funktion aufruft, kann es ein anderes verwenden, um eine andere Nutzeranfrage in der Anfrage zu beantworten.

curl-Beispielanfrage für Funktionsaufruf in mehreren Runden

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "function",
    "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"
            }]
          }
        }
      }
    }]
  },
  {
    "role": "model",
    "parts": [{
      "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
    }]
  },{
    "role": "user",
    "parts": [{
      "text": "Can we recommend some comedy movies on show in Mountain View?"
    }]
  }],
  "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 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"]
      }
    }]
  }]
}'
    

curl-Beispielantwort für Funktionsaufruf in mehreren Runden

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "comedy",
                "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": 48,
    "totalTokenCount": 48
  }
}
]
    

Best Practices

Befolgen Sie diese Best Practices, um die Genauigkeit und Zuverlässigkeit Ihrer Funktionsaufrufe.

Nutzer-Prompt

Die besten Ergebnisse erzielen Sie, wenn Sie der Nutzeranfrage die folgenden Details voranstellen:

  • Zusätzlicher Kontext für das Modell. Beispiel: You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • Details oder Anleitungen zur Verwendung der Funktionen Beispiel: Don't make assumptions on showtimes. Always use a future date for showtimes..
  • Anweisungen, um klärende Fragen zu stellen, wenn die Anfragen von Nutzenden mehrdeutig sind. Für Beispiel: Ask clarifying questions if not enough information is available to complete the request.

Stichprobenparameter

Verwenden Sie für den Temperaturparameter 0 oder einen anderen niedrigen Wert. Damit weisen Sie um zuverlässigere Ergebnisse zu liefern und KI-Halluzinationen zu vermeiden.

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.