Получение данных и вызов функций
Получение данных
Параметр requiredData принимает массив с данными, которые агент должен узнать у пользователя.
Пример:
requiredData =
[
{
"name":"userAge",
"type":"number",
"description":"Возраст пользователя",
"reasonForQuestion":"Оформить карту могут только совершеннолетние"
},
{
"name":"userCity",
"type":"string",
"description":"Город пользователя",
"condition":"Только если пользователю уже есть 18 лет",
"dependsOn":"userAge"
}
]
Агент узнает у пользователя данные в том порядке, в котором они указаны в requiredData.
Для каждой переменной укажите:
name— название. Агент узнает значение и запишет в$session.llmContext.userData.<name>.type— тип. Укажитеstring,numberилиboolean.description— описание.isRequired— обязательно ли нужно получить данные. Еслиfalse, агент сам принимает решение, нужно ли узнавать данные. По умолчанию:true.condition— условие, когда нужно запрашивать данные. Необязательное поле.dependsOn— название другой переменной. Указывает, что вопрос по этой переменной нужно задавать после того, как будет заполнена другая переменная. Необязательное поле.reasonForQuestion— причина, по которой агент должен узнать данные. Агент может сообщить причину пользователю. Необязательное поле.
Функции
Параметр functions принимает массив с названиями функций.
Агент сможет вызывать эти функции в сценарии.
Мы рекомендуем добавлять в одного агента не более 3 функций. Так вы сможете получать более предсказуемые и стабильные результаты.
Чтобы добавить функцию:
-
Напишите код функции в любом JS-файле. Например:
/src/scripts/custom-functions.jsexport default {
getEmail: ({city}) => {
const emails = {"Москва":"moscow@example.com", "Волгоград": "volgograd@example.com"};
return emails[city]
}
}предупреждениеАгент поддерживает только функции, которые написаны в среде ECMAScript 6.
-
Создайте файл
/src/function-specs.js. Опишите функцию в этом файле:/src/function-specs.jsimport customFunctions from './scripts/custom-functions.js'
export default {
getEmail: {
description: "Получить email банка в городе пользователя",
parameters: {
type: "object",
properties: {
city: {
type: "string",
description: "Город. Например, Москва."
}
},
required: ["city"]
},
function: customFunctions.getEmail,
confirmation: {
confirmationPhrase: "Вы хотите узнать email для города {city}?",
yesPattern: "* $yes *",
noPattern: "* $no *"
}
}
};Здесь:
-
getEmail— название функции. -
description— описание функции. -
parameters— укажите параметры функции в формате JSON Schema.предупреждениеПеред вызовом функции:
-
Агент ищет переменные в
contextиrequiredData, чтобы передать их в указанные параметры функции. -
Агент сам выбирает, какие переменные нужно передать в параметры:
-
Например, агент может учитывать текстовые описания в
parametersиrequiredDataдля принятия решения. -
Названия переменных в
contextиrequiredDataнеобязательно должны совпадать с названиями параметров функции.
-
-
Если агент не нашел, какую переменную можно передать в параметр, агент не будет дополнительно запрашивать данные у пользователя и не сможет вызвать функцию.
-
-
function— укажите функцию из файла/src/scripts/custom-functions.js. -
confirmation— настройки подтверждения. Необязательное поле. Агент будет спрашивать подтверждение у пользователя перед тем, как выполнить функцию:-
confirmationPhrase— текст вопроса. Может содержать названия полей изcontextилиrequiredData. Указывайте названия полей внутри фигурных скобок{}. -
yesPatternиnoPattern— паттерны, по которым проверяется ответ пользователя. Если ответ совпал сyesPattern, агент считает, что пользователь подтвердил выполнение функции.подсказкаВ этих полях вы можете указать любые паттерны, которые доступны в сценарии.
-
-
-
Укажите функцию в теге:
AIAgent:
…
functions = ["getEmail"]