Агенты
Настройте поведение бота
Общая информация
Агенты умеет вести полноценный диалог с пользователем с поддержкой истории сообщений, ищет данные по базе знаний, Первой линии и задаёт дополнительные вопросы пользователю.
При получении запроса от пользователя агент в первую очередь проверяет наличие ответа в Первой линии.
Стоимость обработки сообщений агентом не фиксирована, а варьируется от количества действий, совершенных агентом для ответа. За каждое действие агента, требующее обращение к ИИ, взымается 1 кредит.
Если у вашего бота нет первой линии, то агент не будет искать ответы в ней. Соответственно это может снизить стоимость обработки отдельного сообщения на 1 кредит
Настройка инструкции
Используйте настройку инструкции, чтобы ознакомить агента с вашей предметной областью, задать стиль общения и сценарии его работы. Для хорошего описания инструкции следуйте общим правилам написания инструкций к ЛЛМ:
- Четкая инструкция: Убедитесь, что инструкция устанавливает четкую роль для агента. Это должно хорошо объяснять, что от бота ожидают пользователи.
- Структурированные инструкции: Ваши инструкции должны включать четкие, корректные и последовательные правила для агента, чтобы улучшить его реакцию на разные запросы.
Если пользователь обращается с просьбой найти тур, то следуй сценарию “Поиск тура”
Сценарий “Поиск тура”:
- Уточни город вылета и желаемое направление
- Для поиска тура используй запрос формата: Поиск тура “Город вылета” / “Город или страна прилета” *
- При первом поиске тура не уточняй дополнительные детали
- Предоставляй туры в виде структурированного списка:
- Город вылета
- Город прилета
- Дата вылета и кол-во ночей
- Цена
- Ссылка на тур
- Если пользователь выбирает тур, то собери данные о туристах: ФИО, номер телефона, кол-во туристов
- Когда все данные собраны, то переведи диалог на оператора
В данном примере задается формат, в котором агент будет искать туры по Базе знаний. “Поиск тура” позволяет агенту выбрать документ с заголовком “Поиск тура”, который должен содержать информацию о доступных турах.
- Предусмотрение направлений разговора: Важно предусмотреть потенциальные направления диалога и сценарии ошибок. Если вы пишите агенту какое-то условие, то важно описать оба варианта действий: когда условие выполняется и когда не выполняется.
Если тур не найден, не говори что нет подходящих туров. Переведи на оператора и скажи, что оператор обязательно поможет найти.
- Гибкость в ответах: Хорошая инструкция допускает гибкость в ответах агента, чтобы обеспечить более естественное взаимодействие с пользователем.
- Используйте специфические примеры: Предоставляйте конкретные примеры ожидаемого поведения в ваших инструкциях, чтобы убедиться, что агент понимает, как должен выглядеть его ответ.
Пример диалога: - тур - Добрый день, подскажите из какого города планируется вылет и какое направление Вас интересует? - Турция из Москвы - примеры туров… - Спасибо, я выберу первый - Отлично, скажите Ваши ФИО и номер телефона, чтобы я мог забронировать тур для вас - …
Навыки
На данный момент для настройки доступны два навыка - Фильтрация
и Выбор исполнителя
. Вы можете в любое время включать\выключать данные навыки, а также дописывать необходимые правила для них.
Фильтрация
Навык фильтрации позволяет пропускать сообщения, которые предположительно содержат спам или не должны обрабатываться вообще. Необходимо описать правила - какие сообщения относятся к спаму. После чего бот будет игнорировать все подходящие под условия сообщения. Остальные сообщения проходят на дальнейшую обработку.
Стоимость успешной фильтрации одного спам-сообщения 0.1 кредита. Вы можете настроить и включить данный навык на вкладке Фильтрация на странице Агенты.
Пример настройки навыка:
Правила "Спам":
- Если это рекламный пост, рассылка - спам.
- Если сообщение состоит только из эмодзи - спам.
Все остальные сообщения, не подходящие под правила - не спам.
Выбор исполнителя
Навык выбора исполнителя позволяет настроить правила для перевода на оператора, т.е. ограничить темы, по которым бот будет отвечать. Настройка работает по аналогии с навыком фильтрации.
Стоимость успешного срабатывания данного навыка в случае перевода на оператора - 0.2 кредита.
Пример настройки навыка:
Если вопрос касается оплаты, переводи на оператора.
Все остальные вопросы переводи на бота.
Вызов функций внешних API
Агент может вызывать пользовательские функции с помощью http-запросов. Например, агент может уточнить у пользователя номер заказа, вызвать http-метод
https://endpoint/api/get_order=1
и предоставить пользователю информацию о его заказе.
Агент поддерживает GET и POST запросы. Для POST запросов тело запроса должно быть application/json
. Поддерживается передача заголовков, в том числе и Authorization
.
На странице Агенты -> Ответ нажмите Добавить функцию
, откроется окно для создания функции.
Основная структура JSON-описания
На вкладке Описание необходимо добавить JSON, который должен следовать строгому формату.
name
(строка)
Описание: Уникальное имя функции, отражающее её цель.
Пример:
"name": "validate_user_email"
description
(строка)
Описание: Краткое описание назначения функции.
Пример:
"description": "Проверяет, зарегистрирован ли адрес электронной почты в системе."
parameters
(объект)
Описание: Определяет входные параметры, которые принимает функция.
Состав:
- type (объект): Указывает, что параметры являются объектом.
- properties (объект): Описывает все ожидаемые свойства (поля).
- required (массив): Указывает обязательные для передачи поля.
Пример:
"parameters": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Адрес электронной почты пользователя."
}
},
"required": ["email"]
}
Типы данных
string
Описание: Простой текст.
Поля:
- description (строка): Объясняет, что представляет собой строка.
- pattern (строка): Регулярное выражение для проверки формата.
Пример:
"phone": {
"type": "string",
"pattern": "^\\+7\\d{10}$",
"description": "Номер телефона, начинающийся с +7 и 10 последующими цифрами."
}
number
Описание: Числовое значение, может быть как целым, так и дробным.
Поля:
- description (строка): Объясняет, что означает число.
Пример:
"age": {
"type": "number",
"description": "Возраст пользователя в годах."
}
object
Описание: Сложная структура, содержащая взаимосвязанные поля.
Поля:
- properties (объект): Описывает составные части объекта.
- required (массив): Определяет обязательные поля внутри объекта.
Пример:
"user": {
"type": "object",
"properties": {
"id": { "type": "number" },
"name": { "type": "string" }
},
"required": ["id", "name"]
}
array
Описание: Коллекция данных, может содержать как простые, так и сложные типы.
Поля:
- items (объект): Описывает тип данных, содержащийся в массиве.
- description (строка): Объясняет, что представляет собой массив.
Пример:
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Список тегов, связанных с элементом."
}
Пример полной функции
{
"name": "check_user_subscriptions",
"description": "Проверяет, есть ли у указанных пользователей активные подписки.",
"parameters": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Уникальный идентификатор пользователя"
},
"name": {
"type": "string",
"description": "Имя пользователя"
}
},
"required": ["id", "name"],
"description": "Объект информации о пользователе"
},
"description": "Массив объектов пользователей, содержащих id и имя"
},
"include_inactive": {
"type": "boolean",
"description": "Флаг, указывающий включать или нет неактивные подписки в результаты"
}
},
"required": ["users"]
}
}
Действие
На вкладке Действия настраивается вызов вебхука. Если вы верно указали описание функции, то автоматически появятся кнопки с доступными аргументами.
В примере по умолчанию это location
и unit
.
Данные кнопки позволяет вставить переменные, с которыми агент вызывает функцию, в шаблоны Вебхук URL и тела запроса.
Настройки агента
Тестирование
На странице Агенты также доступен функционал по клонированию и удалению агентов. Данная функция позволяет улучшать и тестировать инструкцию и навыки, не влияя на текущих клиентов.
Как лучше всего тестировать агента:
- Клонируйте текущего агента;
- Внесите изменения в навыки, инструкцию или настройки;
- Перейдите на вкладку тестирование, выберите нового агента и оцените результаты исправлений;
- Если все отлично, вы можете включить нового агента в работу, старый агент будет выключен автоматически.
Полезные приёмы
- Если необходимо, чтобы бот отвечал по какой-то теме на основе своих общих знаний, то можно использовать инструкцию вида:
Если пользователь спрашивает про <ваша тема>, то ты можешь использовать свои общие знания, для таких вопросов не ищи в первой линии или в базе знаний, сразу отвечай, то, что ты знаешь.
Ограничения
- На данный момент агент получает около 10 последних сообщений с пользователем, значение может изменяться как в меньшую так и в большую сторону.
- Для ответа на вопрос агенту доступны данные из базы знаний, которые он искал в последний раз, данные из предыдущих поисков он “забывает”.
- Агент не умеет считывать информацию с каких-либо сайтов (переходить по URL), кроме той, что добавлена в Базу знаний.