Функции

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

Функции - это часть инструкций, подробнее об инструкциях читайте на странице Инструкции.

Функция имеет следующие настройки:

Название

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

URL

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

Описание

Что делает эта функция? Описание только для вас - ни на что не влияет.

Метод отправки запроса

Доступны методы GET и POST. Это — два метода HTTP-запросов, которые используются для обмена данными между клиентом и сервером.

Данные в JSON

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

Пример JSON-структуры функции, которая должна быть в этом поле:

{
  "name": "get_summer_weather",
  "description": "Determine weather in my location",
  "strict": true,
  "type": "function",
  "parameters": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string",
        "description": "The city and state e.g. San Francisco, CA"
      },
      "unit": {
        "type": "string",
        "enum": [
          "c",
          "f"
        ]
      }
    },
    "additionalProperties": false,
    "required": [
      "location",
      "unit"
    ]
  }
}

Что значит каждое поле

  • type: "function"
    Говорим модели: «это инструмент-функция, её можно вызывать».

    Примечание: В запросе к API обычно функция лежит внутри объекта инструмента вида
    { "type": "function", "function": { ... } }. Если у вас плоская форма (как в примере) — значит, ваш код потом упаковывает это в нужный формат перед отправкой. Главное, чтобы до API дошло именно с вложенным function.

  • name: "get_summer_weather"
    Короткое машинное имя функции. На него модель будет ссылаться при вызове.
    Советы: латиница, без пробелов, лучше snake_case, имя должно быть уникальным среди всех ваших функций.

  • description: "Determine weather in my location"
    Пояснение «когда и зачем» вызывать функцию. Это читается моделью! Чем яснее и конкретнее (ограничения, условия, примеры) — тем реже ложные вызовы.

  • strict: true
    «Жёсткий режим» структурированных аргументов: модель обязана следовать схеме параметров (см. parameters) — не придумывать лишние поля и заполнять обязательные. Работает вместе с additionalProperties:false.

  • parameters: { … }
    Это JSON-схема аргументов функции — по ней модель формирует arguments при вызове. Внутри:

    • type: "object"
      Аргументы — объект (набор полей).

    • properties: { … }
      Список допустимых полей и требований к каждому:

      • location

        • type: "string" — строка с городом/штатом.

        • description — подсказка модели, как это поле заполнять.

      • unit

        • type: "string" — строка.

        • enum: ["c","f"]строго одно из перечисленных значений (цельсий/фаренгейт).

    • required: ["location","unit"]
      Поля, которые обязаны присутствовать при вызове функции. Если их нет — модель должна их добавить (или не вызывать функцию).

    • additionalProperties: false
      Запрещает «лишние» поля. В связке со strict:true это заставляет модель не выдумывать ничего вне объявленного списка.