Введение в вызов функций с помощью Gemini API

Пользовательские функции могут быть определены и предоставлены моделям Gemini с помощью функции вызова функций. Модели не вызывают эти функции напрямую, а вместо этого генерируют структурированные выходные данные, в которых указывается имя функции и предлагаемые аргументы. Эти выходные данные позволяют вам писать приложения, которые получают структурированные выходные данные и вызывают внешние API, а полученные выходные данные API можно затем включить в дальнейшее приглашение модели, что позволяет получать более полные ответы на запросы. Вызов функций дает пользователям возможность взаимодействовать с информацией в реальном времени и различными услугами, такими как базы данных, системы управления взаимоотношениями с клиентами и хранилища документов, расширяя их возможности предоставлять релевантные и контекстуальные ответы.

Как работает вызов функций

Вы используете функцию вызова функций, добавляя в приглашение модели данные структурированного запроса, описывающие программные интерфейсы, называемые объявлениями функций . В объявлениях функций указывается имя функции API, поясняется ее назначение, все поддерживаемые ею параметры и описания этих параметров. После того как вы передадите список объявлений функций в запросе к модели, она анализирует объявления функций и остальную часть запроса, чтобы определить, как использовать объявленный API в ответ на запрос.

Затем модель возвращает объект в схеме, совместимой с OpenAPI , определяющей, как вызвать одну или несколько объявленных функций, чтобы ответить на вопрос пользователя. Затем вы можете взять рекомендуемые параметры вызова функции, вызвать фактический API, получить ответ и предоставить этот ответ пользователю или предпринять дальнейшие действия. Обратите внимание, что модель фактически не вызывает объявленные функции. Вместо этого вы используете возвращенные параметры объекта схемы для вызова функции. Gemini API также поддерживает параллельный вызов функций, где модель рекомендует несколько вызовов функций API на основе одного запроса.

Поддерживаемые модели

Следующие модели поддерживают функцию вызова функций:

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

Объявления функций

Когда вы реализуете вызов функции в командной строке, вы создаете объект tools , который содержит одно или несколько function declarations . Вы определяете функции с помощью JSON, в частности, с выбранным подмножеством формата схемы OpenAPI . Одно объявление функции может включать следующие параметры:

  • name (строка): уникальный идентификатор функции в вызове API.
  • description (строка): подробное объяснение назначения и возможностей функции.
  • parameters (объект): определяют входные данные, необходимые функции.
    • type (строка): указывает общий тип данных, например object .
    • properties (объект): список отдельных параметров, каждый из которых имеет:
      • type (строка): тип данных параметра, например string , integer , boolean .
      • description (строка): четкое объяснение назначения параметра и ожидаемого формата.
    • required (массив): массив строк, в котором перечислены имена параметров, которые являются обязательными для работы функции.

Примеры кода объявления функции с использованием команд cURL см. в разделе Примеры вызова функций . Примеры и информацию о создании объявлений функций для других платформ см. в руководстве по платформам вызова функций .

Рекомендации по объявлению функций

Точное определение функций имеет важное значение при их интеграции в ваши запросы. Каждая функция опирается на определенные параметры, которые определяют ее поведение и взаимодействие с моделью. В следующем листинге представлены рекомендации по определению параметров отдельной функции в массиве functions_declarations .

  • name : используйте понятные, описательные имена без пробелов, точек ( . ) и тире ( - ). Вместо этого используйте символы подчеркивания ( _ ) или верблюжий регистр.

  • description : Предоставьте подробное, четкое и конкретное описание функций, при необходимости приведя примеры. Например, вместо find theaters используйте find theaters based on location and optionally movie title that is currently playing in theaters. Избегайте слишком широких или двусмысленных описаний.

  • properties > type : используйте строго типизированные параметры, чтобы уменьшить галлюцинации модели. Например, если значения параметров взяты из конечного набора, используйте поле enum вместо перечисления значений в описании (например, "type": "enum", "values": ["now_playing", "upcoming"] ). . Если значение параметра всегда является целым числом, установите тип integer , а не number .

  • properties > description : предоставьте конкретные примеры и ограничения. Например, вместо the location to search используйте The city and state, eg San Francisco, CA or a zip code eg 95616 .

Дополнительные рекомендации по использованию вызова функций см. в разделе «Рекомендации» .

Режим вызова функций

Вы можете использовать параметр mode вызова функции, чтобы изменить поведение выполнения функции. Доступны три режима:

  • AUTO : поведение модели по умолчанию. Модель решает предсказать либо вызов функции, либо ответ на естественном языке.
  • ANY : модель ограничена тем, что всегда прогнозирует вызов функции. Если allowed_function_names не указаны, модель выбирает из всех доступных объявлений функций. Если указано allowed_function_names , модель выбирает из набора разрешенных функций.
  • NONE : модель не будет прогнозировать вызов функции. В этом случае поведение модели такое же, как если бы вы не передавали никаких объявлений функций.

Вы также можете передать набор allowed_function_names , которые, если они предоставлены, ограничивают функции, которые будет вызывать модель. Вам следует включать allowed_function_names только в том случае, если выбран режим ANY . Имена функций должны соответствовать именам объявлений функций. Если для режима установлено ANY и заданы allowed_function_names , модель будет прогнозировать вызов функции на основе предоставленного набора имен функций. В следующем фрагменте кода из примера запроса показано, как установить mode ANY и указан список разрешенных функций:

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

Примеры вызова функций

В этом разделе приведены примеры приглашений для вызова функций с помощью команд cURL. Примеры включают однооборотные и многооборотные сценарии, а также включение различных режимов вызова функций.

При использовании команд cURL с этой функцией информация о функциях и параметрах включается в элемент tools . Каждое объявление функции в элементе tools содержит имя функции. Вы указываете параметры, используя схему, совместимую с OpenAPI , и описание функции.

Однооборотный пример

Однооборотный — это когда вы вызываете языковую модель один раз. При вызове функции однооборотным вариантом использования может быть предоставление модели запроса на естественном языке и списка функций. В этом случае модель использует объявление функции, которое включает имя функции, параметры и описание, чтобы предсказать, какую функцию вызывать и с какими аргументами ее вызывать.

Следующий пример Curl представляет собой пример передачи описания функции, которая возвращает информацию о том, где воспроизводится фильм. В запрос включены несколько объявлений функций, например find_movies и find_theaters .

Пример запроса вызова однооборотной функции

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"
            ]
          }
        }
      ]
    }
  ]
}'
    

Ответ на этот пример с завитками может быть примерно таким.

Однооборотная функция, вызывающая пример ответа Curl

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

Пример однооборотного режима с использованием режима ЛЮБОЙ

Следующий пример скручивания аналогичен примеру с одним витком , но в нем устанавливается режим ANY :

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

Однооборотный вызов функции в режиме ЛЮБОЙ (запрос)

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"
    },
  }
}'
    

Ответ может быть примерно следующим:

Однооборотный вызов функции в режиме ЛЮБОЙ (ответ)

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

Пример однооборотного режима с использованием ЛЮБОГО режима и разрешенных функций

Следующий пример скручивания аналогичен примеру с одним оборотом , но в нем устанавливается режим ANY и включается список разрешенных функций:

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

Однооборотный вызов функции в режиме ЛЮБОЙ и разрешенные функции (запрос)

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"]
    },
  }
}'
    

Модель не может предсказать функцию find_movies , поскольку ее нет в списке разрешенных функций, поэтому вместо этого она прогнозирует другую функцию. Ответ может быть примерно следующим:

Однооборотный вызов функции в режиме ЛЮБОЙ и разрешенные функции (ответ)

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

Многооборотные примеры

Вы можете реализовать сценарий многооборотного вызова функции, выполнив следующие действия:

  1. Получите ответ на вызов функции, вызвав языковую модель. Это первый поворот.
  2. Вызовите языковую модель, используя ответ на вызов функции с первого поворота и ответ функции, который вы получаете от вызова этой функции. Это второй поворот.

Ответ второго этапа либо суммирует результаты для ответа на ваш запрос в первом раунде, либо содержит второй вызов функции, который вы можете использовать для получения дополнительной информации для вашего запроса.

Этот раздел включает в себя два примера многооборотных завихрений:

Используйте ответ из предыдущего хода

Следующий пример Curl вызывает функцию и аргументы, возвращенные предыдущим примером с одним поворотом, чтобы получить ответ. Метод и параметры, возвращаемые примером с одним оборотом, находятся в этом JSON.

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

Многооборотная функция, вызывающая запрос примера Curl

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"]
      }
    }]
  }]
}'
    

Ответ на этот пример скручивания включает результат вызова метода find_theaters . Ответ может быть примерно следующим:

Многооборотная функция, вызывающая пример ответа Curl

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

Позвоните модели несколько раз

В следующем примере cURL генеративная модель искусственного интеллекта вызывается несколько раз для вызова функции. Каждый раз, когда модель вызывает функцию, она может использовать другую функцию для ответа на другой запрос пользователя в запросе.

Многооборотная функция, вызывающая запрос примера Curl

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

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

Лучшие практики

Следуйте этим рекомендациям, чтобы повысить точность и надежность вызовов функций.

Подсказка пользователя

Для достижения наилучших результатов добавьте к пользовательскому запросу следующую информацию:

  • Дополнительный контекст для модели. Например, You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • Подробности или инструкции о том, как и когда использовать функции. Например, Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Инструкция задавать уточняющие вопросы, если запросы пользователей неоднозначны. Например, Ask clarifying questions if not enough information is available to complete the request.

Параметры выборки

Для параметра температуры используйте 0 или другое низкое значение. Это дает модели возможность генерировать более уверенные результаты и уменьшает галлюцинации.

вызов API

Если модель предлагает вызов функции, которая отправит заказ, обновит базу данных или иным образом повлечет за собой серьезные последствия, проверьте вызов функции у пользователя перед ее выполнением.