Получение данных и вызов функций
Получение данных
Параметр 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"]