Nodul LogoNodul
Инструменты кода

Использование ИИ для генерации кода (AI Node)

ИИ-ассистент доступен внутри узла JavaScript. Он помогает генерировать, модифицировать и отлаживать код прямо внутри вашего сценария — просто описывая, что вы хотите, на естественном языке.

Ассистент работает контекстно: он понимает текущий узел, доступные данные и даже подключения к другим блокам. Вы можете попросить его построить логику, создать входные параметры, работать с глобальными переменными, интегрироваться с API и многое другое.

Где доступен ИИ-ассистент

Вы можете запустить ИИ-ассистент двумя способами:

1. Через кнопку "AI Node" внизу редактора. Это открывает отдельное окно чата с ассистентом.

AI Node кнопка

2. Внутри любого узла JavaScript. Откройте узел и введите сообщение, чтобы начать разговор.

JavaScript AI

Содержание: Что умеет ассистент

  1. Создавать пользовательские входные параметры
  2. Обрабатывать данные из других узлов
  3. Работать с глобальными переменными
  4. Интегрироваться с сервисами типа Telegram (пример создания пользовательских API-вызовов)
  5. Отлаживать и объяснять существующий код
  • И многое другое — просто опишите вашу задачу!

1. Пользовательские параметры

Ассистент может автоматически создавать пользовательские входные параметры для ваших узлов.

Пользовательские параметры

Вместо жёсткого кодирования значения:

const message = "Hello world";

Copilot перепишет это так:

const message = input.text_input;

И автоматически добавит поле text_input в UI узла — как показано на скриншоте выше.

Подробнее: Пользовательские JS-параметры

2. Обработка данных из других узлов

Ассистент может помочь вам извлечь и обработать данные из предыдущих узлов. Например:

Извлеки Name и Count из данных webhook и сгенерируй приветственное сообщение с текущим месяцем

Ассистент предоставит ответ:

export default async function run({execution_id, input, data, store}) {
    // Извлечение Name и Count из данных webhook
    const name = data["{{4.`body`.`Name`}}"];
    const count = data["{{4.`body`.`Count`}}"];

    // Получение текущего месяца как названия
    const monthNames = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
    const currentMonthName = monthNames[new Date().getMonth()];

    // Генерация сообщения
    const message = `Привет, ${name}! ${count} ваших сценариев было выполнено в ${currentMonthName} на платформе Nodul!`;

    // Возврат сгенерированного сообщения
    return {
        message
    };
}

3. Запрос на обработку глобальных переменных

Предполагается, что глобальные переменные GlobalVar_number1 и GlobalVar_number2 существуют в аккаунте.

Сгенерируй код, который складывает значения двух глобальных переменных GlobalVar_number1 и GlobalVar_number2 и возвращает массив значений: сумма переменных, GlobalVar_number1, GlobalVar_number2. Получай глобальные переменные с помощью store.getGlobalVariable

Ассистент предоставит ответ:

export default async function run({execution_id, input, data, store}) {
    // Получение значений глобальных переменных
    const number1 = await store.getGlobalVariable('GlobalVar_number1');
    const number2 = await store.getGlobalVariable('GlobalVar_number2');
    
    // Преобразование полученных значений в числа, если они ещё не числа
    const num1 = parseFloat(number1);
    const num2 = parseFloat(number2);

    // Вычисление суммы двух чисел
    const sum = num1 + num2;

    // Возврат массива с суммой, GlobalVar_number1 и GlobalVar_number2
    return {
        result: [sum, num1, num2]
    };
}

4. Запрос на подключение к Telegram для отправки сообщений

Сгенерируй код с подключением к Telegram для отправки сообщения в нужный чат с заданным ID

Ассистент предоставит ответ:

import axios from 'axios';

export default async function run({execution_id, input, data, store}) {
    // Токен вашего Telegram-бота
    const botToken = 'YOUR_BOT_TOKEN_HERE';
    
    // ID чата, в который вы хотите отправить сообщение
    const chatId = 'YOUR_CHAT_ID_HERE';
    
    // Сообщение, которое вы хотите отправить
    const message = 'Привет, это сообщение от моего бота!';
    
    // URL API Telegram для отправки сообщений
    const apiUrl = `https://api.telegram.org/bot${botToken}/sendMessage`;
    
    try {
        // Выполнение POST-запроса к API Telegram для отправки сообщения
        const response = await axios.post(apiUrl, {
            chat_id: chatId,
            text: message,
        });
        
        // Возврат ответа от API Telegram
        return {
            success: true,
            response: response.data,
        };
    } catch (error) {
        // Возврат ошибки, если запрос не удался
        return {
            success: false,
            error: error.message,
        };
    }
}

Важные замечания:

  • Убедитесь, что ваш бот добавлен в чат, в который вы хотите отправить сообщение.
  • ID чата может быть ID пользователя, ID группы или username канала (с префиксом @ для каналов).

5. Отладка и исправление ошибок

Если ассистент сгенерировал код, который работает не так, как ожидалось — не проблема. Просто отправьте сообщение об ошибке или неработающий код обратно ассистенту, и он:

  • Проанализирует, что пошло не так
  • Предложит и сгенерирует исправленную версию
  • Объяснит, что было исправлено (при необходимости)

Вам не нужно отлаживать вручную — просто скажите что-то вроде:

"Этот код выдаёт ошибку: Cannot read property 'xyz' of undefined — исправь"

Или:

"Это возвращает undefined, но я ожидаю, что сообщение отобразится — в чём проблема?"

Ассистент разработан для итеративного улучшения результата, так что не стесняйтесь общаться с ним. Это часть рабочего процесса.


Советы и заметки

  • Ассистент понимает ваш контекст и конфигурацию узла.
  • Вы можете задавать сложные многоступенчатые запросы (например, "получи данные из webhook, отфильтруй их и отправь в Telegram").
  • Если что-то идёт не так, попробуйте перефразировать запрос — ассистент адаптируется.
  • Ответы включают объяснения — отлично подходит для обучения и отладки.