Функции
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
это заставляет модель не выдумывать ничего вне объявленного списка.
-