Встроенные функции
Agent Platform предоставляет встроенные функции, которые позволяют управлять диалогом, взаимодействовать с базами данных и интеграциями, отправлять HTTP-запросы и многое другое.
Подробнее о работе с функциями читайте в разделе Использование функций в процессе.
Встроенные коллекции
| Коллекция | Назначение |
|---|---|
AgentContext | Управлять общим контекстом и отдельными контекстами агентов |
Asr и Tts | Распознавать и синтезировать речь |
Context | Получать метаданные, подробную информацию о запросе пользователя, отслеживать состояние процесса |
Credentials | Получать учетные данные для интеграций |
Db и SessionDb | Работать с базами данных |
Dialer | Управлять входящими звонками |
Email | Отправлять email-сообщения |
Http | Выполнять HTTP-запросы |
Llm | Взаимодействовать с языковыми моделями |
Log | Записывать сообщения в журнал |
ProjectRouter | Взаимодействовать с другими проектами Agent Platform и JAICP |
Rag | Работать с базами знаний RAG |
Reactions | Отправлять ответы клиенту в подключенном канале |
Telegram | Отправлять сообщения в Telegram без подключения канала |
AgentContext
Функции для работы с контекстом. Подробнее смотрите в статье Управление контекстом агента.
addNote(text, [agentId])— добавляет текстовую заметку в контекст указанного агента, а если агент не указан — в общий контекст. Заметка должна быть непустой: если она состоит только из пробельных символов, то добавлена не будет.getNotes([agentId])— возвращает все заметки из общего контекста и контекста агента (если указан), объединенные в одну строку, в порядке добавления.deleteNotes([agentId])— удаляет все заметки из контекста указанного агента, если указаноall— из всех контекстов, а если параметр не указан — из общего контекста.putValue(key, value, [agentIds])— сохраняет значение по ключу в контекст каждого из указанных агентов, а если агенты не указаны — в общий контекст.getValue(key, [agentId])— получает значение по ключу. Если указан агент, сначала ищет в его контексте, затем в общем.deleteValue(key, [agentId])— удаляет значение по ключу из контекста указанного агента, если указаноall— из всех контекстов, а если параметр не указан — из общего контекста.clear([agentId])— удаляет контекст (все ключи и заметки) указанного агента, если указаноall— все контексты, а если параметр не указан — общий контекст.
Asr и Tts
Для работы этих функций нужно подключить интеграции: Модель ASR и Голос TTS.
Asr.recognize— получает файл по URL и распознает речь в нем.Tts.synthesize— синтезирует речь из текста и возвращает URL, по которому можно скачать аудиофайл.
Подробнее о работе с этими функциями читайте в статье ASR и TTS в текстовых каналах.
Context
-
Получайте различные метаданные процесса:
JavaScript Python Описание getAccountIdget_account_idID вашего аккаунта Agent Platform. getProjectShortNameget_project_short_nameКороткое имя проекта. getBotIdgetChannelTypeisAsyncChannelisTestChannelget_bot_idget_channel_typeis_async_channelis_test_channelID и тип канала. getChatIDget_chat_idИдентификатор диалога. getSessionIDget_session_idИдентификатор текущей сессии. getClientInfoget_client_infoИнформация о пользователе, который взаимодействует с процессом. -
Получайте подробную информацию о запросе пользователя:
JavaScript Python Описание getRequestIdget_request_idID запроса. getMessageContentget_message_contentКонтент сообщения. getRawRequestget_raw_requestПолные данные запроса. getEmailContentget_email_contentДанные письма при использовании триггера IMAP Email. -
Отслеживайте состояние диалога:
JavaScript Python Описание getChatHistoryget_chat_historyИстория сообщений в диалоге. getLastFunctionResultget_last_function_resultРезультат последнего вызова функции в процессе. -
Сохраняйте и получайте значения по ключу (не поддерживаются для движка версии 1):
JavaScript Python Описание setsetСохраняет значение по ключу. Ключ можно затем использовать в подстановках. getgetВозвращает сохраненное значение по ключу.
В пользовательских Python-функциях и блоке Код доступны встроенные функции sdk.context.*.
Названия функций соответствуют используемым в JavaScript с переводом в snake_case.
Пример: sdk.context.get_channel_type().
Credentials
Получайте учетные данные для интеграций из хранилища с помощью функции get вместо непосредственной вставки в код.
Db и SessionDb
С помощью Db вы можете работать с базами данных, которые вы добавили в разделе Интеграции или Базы данных.
Функции из коллекции SessionDb работают аналогично, но не требуют настройки интеграции с БД и обрабатывают данные только в рамках текущей сессии.
-
Получайте данные:
get— получить запись по ключу.findByFilters— найти одну или несколько записей по заданным фильтрам.countByFilters— получить количество записей, которые соответствуют фильтрам.
-
Добавляйте и изменяйте данные:
put— добавить новую запись в базу.updateByFilters— обновить поля в записях, которые соответствуют фильтрам.
-
Удаляйте данные:
delete— удалить запись по ключу.deleteByFilters— удалить все записи, которые соответствуют фильтрам.
Dialer
Функции для входящих звонков:
-
Получение данных:
getCaller— получить номер телефона клиента.getSipHeaders— получить SIP-заголовки звонка.
-
Управление звонком:
hangUp— завершить вызов. Если ассистент общается в текстовом канале, вы можете отправить клиенту сообщение через необязательный параметрtext.setNoInputTimeout— задать время ожидания ответа от клиента.
Остальные функции Dialer предназначены для исходящих звонков и сейчас не поддерживаются.
Email
Отправляйте email-сообщения с помощью функции send.
Http
-
Функции для вызова HTTP-методов:
getpostputdeletepatch
-
execute— функция, в которой вы можете выбрать HTTP-метод сами.
Llm
getChatHistory— получайте историю сообщений в специальном формате для LLM.sendRequest— настраивайте все параметры запроса вручную.sendText— отправляйте простые текстовые запросы к LLM.summarizeText— сокращайте длинные тексты до заданного размера с сохранением ключевой информации. Поддерживаются тексты до 200 000 символов.
Log
Используйте функции Log, чтобы выводить промежуточные значения переменных или оставлять заметки. Это поможет быстрее найти ошибку в сложном процессе.
Вы можете добавлять в журнал сообщения разных уровней. Смотрите результаты на вкладке Выполнение.
ProjectRouter
ProjectRouter предоставляет инструменты для создания сложных систем, в которых отдельные проекты реализуют разные части бизнес-логики.
callProject— вызов другого проекта и JAICP. Ответ другого проекта не отправляется клиенту, а обрабатывается в исходном проекте. Подробнее смотрите в разделе Вызов другого проекта.switchTo— передача управления в другой проект и JAICP. Позволяет другому боту вести диалог с клиентом. Новый бот может вернуть диалог исходному боту с помощьюbackToOriginalProject. Подробнее смотрите в разделе Передача управления в другой проект.backToOriginalProject— вернуть управление в исходный проект.getCustomData— извлечь данные, полученные при передаче или возврате управления.
JAICP (Just AI Conversational Platform) — платформа для разработки диалоговых решений любой сложности. Подробнее о JAICP можно узнать на нашем сайте или в документации.
Rag
Используйте интеграцию с базой знаний RAG:
retrieveChunks— получить фрагменты документов, релевантные запросу пользователя.generateAnswer— сгенерировать ответ на вопрос пользователя с помощью RAG.
Reactions
Отправляйте сообщения клиентам в подключенных каналах:
| JavaScript | Python | Описание |
|---|---|---|
sendText | send_text | Текстовое сообщение. |
sendHtml | send_html | Сообщение в разметке HTML. |
sendAudio | send_audio | Аудио. |
sendImage | send_image | Изображение. |
sendVideo | send_video | Видео. |
sendFile | send_file | Файл. |
sendLocation | send_location | Геолокация. |
sendRawRequest | send_raw_request | Данные для ответа в формате, который поддерживает канал. |
В пользовательских Python-функциях и блоке Код доступны встроенные функции sdk.reactions.*.
Названия функций соответствуют используемым в JavaScript с переводом в snake_case.
Параметры передаются в виде Python-словаря, ключи указываются в кавычках.
Пример: await sdk.reactions.send_text({"text": "Привет!"}).
Telegram
Отправляйте сообщения в Telegram без подключения канала.
В каждой функции укажите API-токен вашего Telegram-бота.
Эти функции можно использовать вместо Reactions, например, в следующих случаях:
- Вы в процессе динамически определяете, какой Telegram-бот должен написать пользователю.
- Вы получили запрос от пользователя в одном Telegram-боте, но хотите отправить ответ из другого бота.
Функции:
sendText— отправить текстовое сообщение.sendImage,sendAudio,sendVoice— отправить изображение, аудио или голосовое сообщение.sendButtons— отправить сообщение с кнопками.
Синхронность функций
- JavaScript
- Python
Синхронность или асинхронность встроенных функций зависит от версии движка в проекте.
- Версия 2
- Все встроенные функции являются синхронными.
- Версия 1
Большинство встроенных функций являются асинхронными. Вы можете вызывать их с помощью
await.Синхронными являются только следующие функции:
-
Context:getAccountIdgetProjectShortNamegetBotIdgetChannelTypeisAsyncChannelisTestChannelgetChatIDgetSessionIDgetClientInfogetRequestIdgetMessageContentgetRawRequestgetEmailContentgetLastFunctionResult
-
Dialer:getCallergetSipHeadershangUpsetNoInputTimeout
-
- Функции
sdk.context.*, кромеget_chat_history(), являются синхронными. - Функции
sdk.reactions.*иsdk.context.get_chat_history()являются асинхронными. Вы можете вызывать их с помощьюawait.