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

Редактор кода

Редактор функций -- это специализированная среда разработки, встроенная в платформу. Она состоит из двух панелей: слева -- редактор кода, справа -- панель тестирования.

Интерфейс редактора

Верхняя панель

В верхней панели расположены:

  • Кнопка назад -- возврат к списку функций
  • Имя функции -- редактируемое поле (кликните, чтобы изменить)
  • Категория -- автодополняемое поле; можно выбрать существующую категорию или ввести новую
  • Вкладки «Код» и «Параметры» -- переключение между редактором кода и 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_idID текущего пользователя
context.project_idID текущего проекта
context.thread_idID текущего потока (сессии)
context.execution_idID текущего выполнения

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.currentNodeID текущей ноды
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.