Вызов функции с помощью Gemma

При использовании модели генеративного искусственного интеллекта (ИИ), такой как Gemma, вы можете использовать эту модель для управления программными интерфейсами для выполнения задач или ответа на вопросы. Инструктирование модели путем определения программного интерфейса и последующего выполнения запроса, использующего этот интерфейс, называется вызовом функции .

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

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

  • Создайте интерфейс на естественном языке для API программирования, чтобы позволить непрограммистам работать с программным интерфейсом без написания кода.
  • Генерация вызовов программирования как часть рабочего процесса агента ИИ.

Вызов функций поддерживается в Gemma 3, но технику вызова функций можно использовать и в предыдущих версиях Gemma. В этом руководстве представлены инструкции по созданию подсказок Gemma, использующих вызов функций. Мы рекомендуем Gemma3 27B для наилучшей производительности и Gemma3 12B для сбалансированной производительности и задержки.

Вызов функций программирования

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

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

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

You have access to functions. If you decide to invoke any of the function(s),
 you MUST put it in the format of
[func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)]

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

Это приглашение должно привести к следующему ответу:

[get_product_name_by_PID(PID="807ZPKBL9V")]

В этом примере используется вывод вызова функции в стиле Python. Альтернативно вы можете указать формат вывода в стиле JSON, как показано в следующем примере:

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function
[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]
While browsing the product catalog, I came across a product that piqued my
interest. The product ID is 807ZPKBL9V. Can you help me find the name of this
product?

Это приглашение должно привести к следующему ответу:

{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}

Компоненты приглашения вызова функции

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

  1. Настройка вызова функции
  2. Определения функций

В следующих разделах представлена ​​более подробная информация о каждом из этих компонентов подсказок.

Настройка вызова функции

Раздел настройки приглашения к вызову функции устанавливает общее ожидаемое поведение модели. В этом разделе вы можете добавить дополнительные общие инструкции для поведения модели, например указать, что выходные данные должны отображаться с помощью функции print или console.log . Используйте одинарные обратные кавычки в стиле Markdown ( func_name ), чтобы указать синтаксис кода.

You have access to functions. If you decide to invoke any of the function(s),
you MUST put it in the format of
{"name": function name, "parameters": dictionary of argument name and its value}

You SHOULD NOT include any other text in the response if you call a function

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

Определение функции

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

[
  {
    "name": "get_product_name_by_PID",
    "description": "Finds the name of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  },
  {
    "name": "get_product_price_by_PID",
    "description": "Finds the price of a product by its Product ID",
    "parameters": {
      "type": "object",
      "properties": {
        "PID": {
          "type": "string"
        }
      },
      "required": [
        "PID"
      ]
    }
  }
]

Следующие шаги

Ознакомьтесь со способами развертывания и запуска моделей Gemma: