Редактор кода
Редактор функций -- это специализированная среда разработки, встроенная в платформу. Она состоит из двух панелей: слева -- редактор кода, справа -- панель тестирования.
Интерфейс редактора
Верхняя панель
В верхней панели расположены:
- Кнопка назад -- возврат к списку функций
- Имя функции -- редактируемое поле (кликните, чтобы изменить)
- Категория -- автодополняемое поле; можно выбрать существующую категорию или ввести новую
- Вкладки «Код» и «Параметры» -- переключение между редактором кода и JSON Schema параметров
- Таймаут (сек) -- максимальное время выполнения (от 1 до 60 секунд)
- Кнопка «Сохранить» -- сохраняет все изменения
- Cmd+S (Mac) / Ctrl+S (Windows) -- сохранить функцию
- Cmd+Enter / Ctrl+Enter -- отправить AI-промпт для генерации
AI-генерация
Под верхней панелью находится поле для AI-генерации. Опишите, что должна делать функция, и нажмите Генерировать. AI сгенерирует:
- Код функции (на вкладке «Код»)
- Имя и описание функции
- JSON Schema параметров (на вкладке «Параметры»)
Если вы находитесь на вкладке Параметры, AI сгенерирует только JSON Schema на основе текущего кода функции и вашего описания.
Примеры промптов:
- «Получить лид из Bitrix24 по ID»
- «Добавить фильтр по статусу и дате»
- «Отправить сообщение в Telegram через Bot API»
Нажмите кнопку Стоп, чтобы отменить генерацию.
Форматирование кода
Кнопка с иконкой кисти (справа от кнопки «Генерировать») автоматически форматирует код или JSON с помощью Prettier.
Структура кода функции
Каждая функция оборачивается в асинхронную функцию execute со следующей сигнатурой:
async function execute(context, axios, moment, console) {
// Ваш код здесь
return result;
}
Вам не нужно писать обертку вручную -- редактор добавляет ее автоматически.
Доступные объекты
context -- контекст выполнения
| Свойство | Описание |
|---|---|
context.input | Входные параметры функции (из предыдущей ноды или тестовой панели) |
context.lastOutput | Результат предыдущей ноды в рабочем процессе |
context.state | Все переменные рабочего процесса |
context.nodeOutputs | Результаты всех выполненных нод, доступные по ID ноды |
context.user_id | ID текущего пользователя |
context.project_id | ID текущего проекта |
context.thread_id | ID текущего потока (сессии) |
context.execution_id | ID текущего выполнения |
context.memory -- чтение памяти
Доступ к данным памяти по областям видимости. Подробнее см. в разделе Память агента:
const userName = context.memory.user["name"];
const projectSettings = context.memory.project["settings"];
const threadHistory = context.memory.thread["history"];
const orgConfig = context.memory.organization["config"];
context.memoryOps -- запись в память
Для записи и удаления данных из памяти используйте массив операций:
// Записать значение
context.memoryOps.push({
action: "set",
scope: "project", // user, project, thread, organization
key: "myKey",
value: "myValue"
});
context.set('memoryOps', context.memoryOps);
// Удалить значение
context.memoryOps.push({
action: "delete",
scope: "project",
key: "myKey"
});
context.set('memoryOps', context.memoryOps);
После добавления операций в context.memoryOps необходимо вызвать context.set('memoryOps', context.memoryOps), чтобы изменения были применены.
context.meta -- метаданные выполнения
| Свойство | Описание |
|---|---|
context.meta.currentNode | ID текущей ноды |
context.meta.executionCount | Количество выполнений |
axios -- HTTP-клиент
Встроенный HTTP-клиент для выполнения запросов к внешним API:
// GET-запрос
const response = await axios.get(url, {
headers: { 'Authorization': 'Bearer token' }
});
return response.data;
// POST-запрос
const response = await axios.post(url, {
key: 'value'
});
return response.data;
moment -- работа с датами
Библиотека Moment.js для работы с датами и временем:
const now = moment();
const formatted = now.format('YYYY-MM-DD HH:mm');
const tomorrow = moment().add(1, 'day');
console -- логирование
Стандартный объект для вывода логов:
console.log("Отладочное сообщение");
Логи отображаются в панели результатов при тестировании.
Автодополнение
Редактор поддерживает автодополнение. Начните вводить context, axios или moment, и появятся подсказки с описанием доступных свойств и методов.
Вкладка «Параметры»
На вкладке Параметры вы описываете входные параметры функции в формате JSON Schema. Это описание используется:
- Агентом для понимания, какие аргументы передать при вызове функции как инструмента
- Панелью тестирования для автогенерации примера входных данных
Пример JSON Schema:
{
"type": "object",
"properties": {
"phone": {
"type": "string",
"description": "Номер телефона клиента"
},
"name": {
"type": "string",
"description": "Имя клиента"
},
"amount": {
"type": "number",
"description": "Сумма заказа"
}
},
"required": ["phone"]
}
Перейдите на вкладку «Параметры», введите описание в поле AI-генерации и нажмите «Генерировать». AI проанализирует код функции и создаст JSON Schema автоматически. После этого можно протестировать функцию с автогенерированными примерами.
Возвращаемое значение
Функция должна вернуть результат через return. Результат будет доступен как lastOutput для следующей ноды в рабочем процессе или как ответ инструмента для агента.
async function execute(context, axios, moment, console) {
const { phone } = context.input;
const response = await axios.get(`https://api.example.com/clients?phone=${phone}`);
return {
client_id: response.data.id,
name: response.data.name,
status: "found"
};
}
Если функция не возвращает значение явно, результат будет undefined.