Перейти к основному содержимому

Получение данных и вызов функций

Получение данных

function calling

Параметр 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 — причина, по которой агент должен узнать данные. Агент может сообщить причину пользователю. Необязательное поле.

Функции

function calling

Параметр functions принимает массив с названиями функций. Агент сможет вызывать эти функции в сценарии.

подсказка

Мы рекомендуем добавлять в одного агента не более 3 функций. Так вы сможете получать более предсказуемые и стабильные результаты.

Чтобы добавить функцию:

  1. Напишите код функции в любом JS-файле. Например:

    /src/scripts/custom-functions.js
    export default {
    getEmail: ({city}) => {
    const emails = {"Москва":"moscow@example.com", "Волгоград": "volgograd@example.com"};
    return emails[city]
    }
    }
    предупреждение

    Агент поддерживает только функции, которые написаны в среде ECMAScript 6.

  2. Создайте файл /src/function-specs.js. Опишите функцию в этом файле:

    /src/function-specs.js
    import 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.

      предупреждение

      Перед вызовом функции:

      1. Агент ищет переменные в context и requiredData, чтобы передать их в указанные параметры функции.

      2. Агент сам выбирает, какие переменные нужно передать в параметры:

        • Например, агент может учитывать текстовые описания в parameters и requiredData для принятия решения.

        • Названия переменных в context и requiredData необязательно должны совпадать с названиями параметров функции.

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

    • function — укажите функцию из файла /src/scripts/custom-functions.js.

    • confirmation — настройки подтверждения. Необязательное поле. Агент будет спрашивать подтверждение у пользователя перед тем, как выполнить функцию:

      • confirmationPhrase — текст вопроса. Может содержать названия полей из context или requiredData. Указывайте названия полей внутри фигурных скобок {}.

      • yesPattern и noPattern — паттерны, по которым проверяется ответ пользователя. Если ответ совпал с yesPattern, агент считает, что пользователь подтвердил выполнение функции.

        подсказка

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

  3. Укажите функцию в теге:

    AIAgent:

    functions = ["getEmail"]