AI

Как настроить GPT-4o с помощью API веб-скрепера, используя n8n

Узнайте, как точно настроить GPT-4o с помощью n8n и API веб-скребка для оптимизации результатов LLM, основанных на данных.
5 мин. чтения
Fine-tune GPT-4o with Web Scraper using N8N

В этом руководстве вы увидите:

  • Что такое тонкая настройка.
  • Как тонко настроить GPT-4o с помощью API веб-скрепера через n8n.
  • Сравнение подходов к тонкой настройке.
  • Почему высококачественные данные – основа любого процесса тонкой настройки.

Давайте погрузимся!

Что такое тонкая настройка?

Тонкая настройка – также известная как контролируемая тонкая настройка (SFT)– это процедура улучшения определенных знаний или способностей в предварительно обученной LLM. В контексте LLM предварительное обучение означает обучение модели ИИ с нуля.

Тонкая настройка важна, поскольку модели имитируют данные обучения. Это означает, что когда вы тестируете LLM после обучения, ее результаты будут каким-то образом соответствовать данным обучения. Поскольку LLM являются обобщенными моделями, если вы хотите, чтобы они получали конкретные знания, вы должны точно настроить их на конкретные данные.

Если вы хотите узнать больше о SFT, прочитайте наше руководство по контролируемой тонкой настройке в LLM.

Как настроить GPT-4o с помощью интеграции Bright Data n8n

Как мы уже рассказывали в недавнем руководстве, теперь вы знаете, как точно настроить Llama 4 с помощью облака, используя данные, собранные с помощью API Web Scraper. В этом руководстве вы добьетесь того же результата, настроив GPT-4o с помощью n8n – популярной платформы автоматизации рабочих процессов.

В деталях мы обратимся к одной и той же целевой веб-странице, которая является страницей бестселлеров Amazon, посвященной офисным товарам:

Продукты-бестселлеры Amazon в категории "Офисные товары"

Цель этого проекта – доработать GPT-4o-mini для создания офисных описаний продуктов, задав некоторые характеристики в подсказке.

Следуйте приведенным ниже шагам, чтобы узнать, как точно настроить GPT-4o-mini с помощью n8n, используя обучающий набор данных, собранный с помощью решений Bright Data!

Требования

Чтобы воспроизвести этот процесс тонкой настройки, вам понадобится следующее:

Отлично! Вы готовы приступить к тонкой настройке GPT-4o.

Шаг № 1: Создайте новый рабочий процесс n8n и установите узел Bright Data Node

После входа в систему n8n приборная панель выглядит так, как показано на следующем изображении:

Приборная панель n8n

Чтобы создать новый рабочий процесс, нажмите на кнопку “Создать рабочий процесс”. Затем нажмите на кнопку “Открыть панель узлов”:

Открытая панель узлов n8n

На панели узлов найдите узел Bright Data. В n8n “узел” – это строительный блок автоматизированного рабочего процесса, представляющий собой отдельный шаг или действие в конвейере обработки данных.

Щелкните на узле Bright Data n8n, чтобы установить его:

Узел Bright Data в панели открытых узлов n8n

Для получения дополнительной информации обратитесь к странице официальной документации по настройке Bright Data в n8n.

Очень хорошо! Вы инициализировали свой первый рабочий процесс n8n.

Шаг № 2: Настройте узел Bright Data и соскребите данные

Нажмите на “Добавить первый шаг” в пользовательском интерфейсе и выберите “Запустить вручную”:

Узел для ручного запуска рабочего процесса

Этот узел позволяет вручную запустить весь рабочий процесс.

Нажмите на “+” справа от узла ручного триггера и выполните поиск Bright Data. В разделе “Действия веб-скрепера” щелкните на “синхронно соскребать данные по URL”:

Выбор узла Bright Data в рабочем процессе n8n

Ниже показано, как отображаются настройки узла при нажатии на него:

Настройки узла Bright Data

Установите их следующим образом:

  • “Учетная запись для подключения”: Нажмите на него и добавьте свой токен API Bright Data. Учетные данные будут сохранены.
  • “Операция”: Выберите опцию “Скрести по URL”. Это позволит вам передать список URL-адресов, которые Web Scraper API будет использовать в качестве целевых страниц для извлечения данных.
  • “Набор данных”: Выберите вариант “Продукты-бестселлеры Amazon”. Это оптимизировано для извлечения данных из самых продаваемых товаров Amazon.
  • “URLs”: Перейдите на страницу бестселлеров офисных товаров Amazon, чтобы скопировать и вставить список из не менее чем 10 URL-адресов. Вам нужно не менее 10 URL, потому что узлу чата OpenAI нужно не менее 10. Если вы передадите меньше 10, узел OpenAI вернет ошибку при точной настройке целевого LLM.
  • “Формат”: Выберите формат данных “JSON”, поскольку Web Scraper API поддерживает несколько форматов вывода.

Ниже показано, как выглядит ваш рабочий процесс до сих пор:

Процесс работы с n8n на данный момент

Если вы нажмете кнопку “Выполнить рабочий процесс”, отсканированные данные будут доступны в узле Bright Data в разделе вывода:

Полученные данные в формате JSON

Фантастика! Вы собрали нужные вам целевые данные с помощью API Web Scraper от Bright Data, не написав ни строчки кода.

Шаг № 3: Настройка узла кода

Подключите узел Code к узлу Bright Data и выберите JavaScript в поле “Язык”:

Узел кода

В поле “JavaScript” вставьте следующий код:

// get all incoming items
const allInputItems = $input.all(); 

let jsonlString = "";
// define the training prompt
const systemMessage = "You are an expert marketing assistant specializing in writing compelling and informative product descriptions.";

// loop through each item retrieved from the input
for (const item of allInputItems) {
  const product = item.json; 

  // validate if the product data exists and is an object
  if (!product || typeof product !== 'object') {
    console.warn('Skipping an item because product data is missing or not an object:', item);
    continue;
  }

  // extract product data
  const title = product.title || "N/A";
  const brand = product.brand || "N/A";
  let featuresString = "Not specified";
  if (product.features && Array.isArray(product.features) && product.features.length > 0) {
    featuresString = product.features.slice(0, 5).join(', '); 
  }
  // create a snippet of the original product description for training
  const originalDescSnippet = (product.description || "No original description available.").substring(0, 250) + "...";
  // create prompt with specific details about the product
  const userPrompt = `Generate a product description for the following item. Title: ${title}. Brand: ${brand}. Key Features: ${featuresString}. Original Description Snippet: ${originalDescSnippet}.`;

  // create template for the kind of description the AI should generate
  let idealDescription = `Discover the ${title} from ${brand}, a top-choice for discerning customers. `;
  idealDescription += `Key highlights include: ${featuresString}. `;
  if (product.rating) {
    idealDescription += `Boasting an impressive customer rating of ${product.rating} out of 5 stars! `;
  }
  idealDescription += `This product, originally described as "${originalDescSnippet}", is perfect for anyone seeking quality and reliability. `;
  idealDescription += `Don't miss out on the ${product.availability === "In Stock" ? "readily available" : "upcoming"} ${title} – enhance your collection today!`;

  // create a training example object in the format expected by OpenAI
  const trainingExample = {
    messages: [
      { role: "system", content: systemMessage },
      { role: "user", content: userPrompt },
      { role: "assistant", content: idealDescription }
    ]
  };
  jsonlString += JSON.stringify(trainingExample) + "\n";
}

// remove any leading or trailing whitespace
const fileContentString = jsonlString.trim();

// check if any product data was actually processed
if (fileContentString.length === 0) {
  console.warn("No product data was processed, outputting empty file content.");
  return [{ 
    json: { error: "No products processed", fileNameToUse: "data.jsonl" },
    binary: {} 
  }];
}

// convert the final JSONL string into a Buffer (raw binary data)
const buffer = Buffer.from(fileContentString, 'utf-8');
// define the filename that will be used when this data is sent to OpenAI
const actualFileNameForOpenAI = "data.jsonl";
// define the MIME type for the file
const mimeType = 'application/jsonl'; 

// prepare the binary data for output
const binaryData = await this.helpers.prepareBinaryData(buffer, actualFileNameForOpenAI, mimeType);

// return the processed data
return [{
  json: {
    processedFileName: actualFileNameForOpenAI 
  },
  binary: {
    // the "Input Data Field Name" in the OpenAI node
    "data.jsonl": binaryData 
  }
}];

На входе этого узла находится JSON-файл, содержащий данные, полученные из Bright Data. Однако узлу OpenAI нужен файл JSONL. Этот код JavaScript преобразует JSON в JSONL следующим образом:

  • С помощью метода $input.all() он извлекает все данные, поступившие из предыдущего узла.
  • Он итерирует и обрабатывает продукты. В частности, для каждого элемента продукта:
    • Извлекает такие сведения о продукте, как название, бренд, характеристики, описание, рейтинг и наличие. Он включает запасные значения, если некоторые данные отсутствуют.
    • Конструирует userPrompt, форматируя эти данные в запрос к LLM для создания описания продукта.
    • Генерирует идеальное описание (idealDescription ) по шаблону, включающему атрибуты продукта. Это служит в качестве желаемого ответа “помощника” в обучающих данных.
    • Объединяет системное сообщение, userPrompt и idealDescription в один объект trainingExample, отформатированный для разговорного обучения LLM.
    • Сериализует этот trainingExample в строку JSON и добавляет ее в растущую строку, причем каждый объект JSON располагается на новой строке (формат JSONL).
  • После обработки всех элементов он преобразует накопленную строку JSONL в буфер двоичных данных.
  • Он возвращает файл с именем data.jsonl.

Если вы нажмете на “Выполнить шаг” в узле Code, JSONL будет доступен в разделе вывода:

Файл data.jsonl в узле Code

Ниже показано, как выглядит ваш рабочий процесс до сих пор:

Рабочий процесс n8n до настоящего времени

Зеленые линии и галочки показывают, что каждый шаг был успешно выполнен.

Ура! Вы извлекли данные с помощью Bright Data и сохранили их в формате JSONL. Теперь вы готовы ввести их в LLM.

Шаг № 4: Внесите данные для тонкой настройки в узел чата OpenAI

JSONL-файл тонкой настройки готов к загрузке на платформу OpenAI для тонкой настройки. Для этого добавьте узел OpenAI. Выберите “Загрузить файл” в разделе “Действия с файлами”:

Добавление узла OpenAI в рабочий процесс

Ниже приведены параметры, которые необходимо настроить:

Настройки узла OpenAI

Указанный узел является входом для процесса тонкой настройки. Установите следующие параметры:

  • “Учетные данные для подключения”: Добавьте свой токен API OpenAI. Как только вы его зададите, учетные данные будут сохранены.
  • “Ресурс”: Выберите “Файл”. Это необходимо потому, что вы будете загружать JSONL-файл на платформу.
  • “Операция”: Выберите “Загрузить файл”.
  • “Имя поля входных данных”: Имя файла тонкой настройки – data.jsonl.
  • В разделе “Параметры” добавьте “Цель” и выберите “Тонкая настройка”.

После выполнения этого шага вывод будет выглядеть следующим образом:

Выход узла загрузки файла OpenAI

Теперь ваш рабочий процесс будет выглядеть следующим образом:

Рабочий процесс до настоящего времени

Потрясающе! Вы подготовили все для процесса тонкой настройки. Пора приступать к самому процессу.

Шаг №5: Тонкая настройка LLM

Для выполнения фактической тонкой настройки подключите узел HTTP Request к узлу OpenAI:

Настройки узла HTTP-запроса

Настройки должны быть следующими:

  • Метод” должен быть “POST”, так как вы загружаете файл с обучающими данными.
  • В поле “URL” должно быть указано https://api.openai.com/v1/fine_tuning/jobs endpoint. Это стандартный URL для заданий тонкой настройки на платформе OpenAI.
  • В поле “Аутентификация” выберите “Predefined Credential Type”, чтобы использовать ваш токен API OpenAI.
  • Для параметра “Credential Type” выберите “OpenAi”, чтобы узел подключился к OpenAI.
  • В поле “OpenAI” выберите имя вашей учетной записи OpenAI.
  • Тумблер “Отправить тело” должен быть включен. Выберите “JSON” и “Using JSON” соответственно для полей “Тип содержимого тела” и “Указать тело”.

Поле JSON должно содержать следующее:

{
  "training_file": "{{ $json.id }}",
  "model": "gpt-4o-mini-2024-07-18"
} 

Этот JSON:

  • Укажите имя обучающих данных с помощью $json.id.
  • Определяет модель, которая будет использоваться для тонкой настройки. В данном случае вы будете использовать GPT-4o-mini согласно версии, выпущенной 2024-07-18.

Ниже приведен вывод, который вы получите:

Выход узла HTTP-запроса

Когда срабатывает узел HTTP Request, начинается процесс тонкой настройки. Вы можете наблюдать за его ходом в разделе тонкой настройки платформы OpenAI. Когда процесс тонкой настройки будет успешно завершен, OpenAI предоставит вам тонко настроенную модель, которую вы будете использовать на шаге № 7:

Успешно завершенный процесс тонкой настройки в платформе OpenAI

Теперь рабочий процесс n8n должен выглядеть следующим образом:

Рабочий процесс до настоящего времени

Поздравляем! Вы обучили свою первую GPT-модель, используя данные, полученные с помощью Bright Data’s Scraper API через n8n.

Это заключительный узел первой половины всего рабочего процесса.

Шаг #6: Добавьте узел чата

Вторая половина всего рабочего процесса должна начинаться с узла Chat Trigger. Там вы вставите подсказку для проверки настроенного LLM:

Узел триггера чата

Ниже приведена подсказка, которую можно вставить в чат:

You are an expert marketing assistant specializing in writing compelling and informative product descriptions. Generate a product description for the following office item:

Title: ErgoComfort Pro Executive Chair.

Brand: OfficeSolutions.

Key Features: Adjustable lumbar support, Breathable mesh back, Memory foam seat cushion, 360-degree swivel, Smooth-rolling casters.

Как видите, это подсказка:

  • Сообщите ту же фразу о том, как стать экспертом по маркетингу, которая использовалась на этапе обучения.
  • Просит создать описание продукта, учитывая информацию о необходимом офисном предмете, заданную:
    • Название.
    • Бренд.
    • Ключевые особенности офисного продукта.

Важно, чтобы структура подсказки была именно такой. Это связано с тем, что на этом этапе модель имитирует данные обучения. Поэтому вы должны дать ей подсказку и данные, похожие на те, что вы использовали на этапе обучения. Затем отточенная LLM напишет описание продукта, основываясь на этих факторах.

Вы можете вставить подсказку в раздел чата в нижней части пользовательского интерфейса:

Подсказка в чате

Это ваш текущий рабочий процесс n8n:

Две ветви рабочего процесса на данный момент

Потрясающе! Вы определили подсказку для проверки модели тонкой настройки.

Шаг #7: Добавьте узлы агента искусственного интеллекта и чата OpenAI

Теперь вам нужно подключить узел AI Agent к Chat Trigger:

Настройки узла AI Agent

Настройки должны быть такими:

  • “Агент”: Выберите “Разговорный агент”. Это позволит вам изменять все, что вы хотите, с помощью узла Chat Trigger, как и в случае с любым другим разговорным агентом.
  • Установите для параметра “Источник подсказки (пользовательское сообщение)” значение “Подключенный узел триггера чата”, чтобы он мог получать подсказки непосредственно из чата.

Подключите узел OpenAI Chat Model к узлу AI Agent через опцию подключения “Chat Model”:

Модель чата OpenAI и узлы агента искусственного интеллекта соединены

На изображении ниже показаны настройки узла OpenAI Chat Model:

Настройки узла модели чата OpenAI

Настройте узел следующим образом:

Вернитесь в узел AI Agent и нажмите на кнопку “Выполнить шаг”. Вы увидите полученное описание продукта:

Результирующее описание офисного предмета

Ниже приведено полученное описание в виде обычного текста:

Introducing the remarkable ErgoComfort Pro Executive Chair by OfficeSolutions, a standout solution designed to meet your office needs. This chair shines with key features including Adjustable lumbar support, Breathable mesh back, Memory foam seat cushion, 360-degree swivel, Smooth-rolling casters, and offers exceptional comfort and durability. Crafted for long-lasting performance, the ErgoComfort Pro Executive Chair offers great value and is built to withstand the demands of daily use. Whether you're looking to enhance your productivity or upgrade your current setup, the readily available ErgoComfort Pro Executive Chair is an excellent choice. Experience the difference today!

Как видите, описание использует название объекта (“Кресло для руководителя ErgoComfort Pro”), его бренд (“OfficeSolutions”) и все его характеристики для создания описания продукта. В частности, описание не просто перечисляет исходные данные, а использует их для создания увлекательного описания. Последние фразы являются ключевыми:

  • “Кресло для руководителя ErgoComfort Pro, созданное для длительной работы, предлагает отличную цену и выдерживает требования ежедневного использования”.
  • “Если вы хотите повысить свою производительность или обновить существующую систему, то доступное кресло для руководителя ErgoComfort Pro – отличный выбор. Оцените разницу уже сегодня!”

И вуаля! Вы протестировали свою отлаженную модель GPT-4o-mini, которая сгенерировала описание продукта для ответа на заданный запрос (определенный в Шаге № 6).

Шаг № 8: Соберите все вместе

Теперь окончательный рабочий процесс тонкой настройки GTP-4o n8n выглядит следующим образом:

Весь рабочий процесс по тонкой настройке и тестированию GPT-4o-mini с помощью n8n

Теперь, когда рабочий процесс полностью настроен, если вы нажмете кнопку “Выполнить рабочий процесс”, он будет выполнен с самого начала. Однако обратите внимание, что результаты сохраняются на каждом шаге. Это означает, что если вы хотите попробовать разные подсказки для проверки точно настроенной модели, вам нужно только записать их в узел “Триггер чата” и выполнить этот узел и узел агента ИИ.

Сравнение подходов к тонкой настройке: Облачная инфраструктура против автоматизации рабочих процессов

Это руководство было создано по двум причинам:

  1. Научит вас тонко настраивать LLM с помощью средств автоматизации рабочего процесса, таких как n8n
  2. Сравнивая этот способ тонкой настройки LLM с тем, который использовался в нашей статье “Тонкая настройка Llama 4 с помощью свежих веб-данных для получения лучших результатов

Пора сравнить два подхода!

Сравнение методов точной настройки

Для тонкой настройки Llama 4 требуется подход, которого мы придерживались в нашей предыдущей статье:

  • Использование облачной инфраструктуры, на создание которой требуется время и расходы.
  • Написание кода для получения данных с помощью API Bright Data’s Scraper.
  • Устанавливаем обнимающееся лицо.
  • Необходимость разработки блокнота с кодом на Python для тонкой настройки, что требует времени и технических навыков.

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

  • Время: около целого рабочего дня.
  • Деньги: 25 долларов. После того как вы потратите 25 долларов на облачный сервис, расход будет почасовым. При этом перед началом работы необходимо заплатить 25 долларов. Таким образом, это минимальная цена за использование облака.

Подход, который вы изучили в этом руководстве, требует:

  • n8n, который является бесплатным и не требует особых технических знаний.
  • Токен OpenAI API для доступа к GPT-4o или другим моделям.
  • Базовые навыки кодирования, в частности, написание фрагмента JavaScript для узла Code.

В этом случае технических возможностей требуется гораздо меньше. Сниппет JavaScript может легко создать любой LLM – если вы не можете написать его самостоятельно. Кроме того, вам не нужно писать другие фрагменты кода во всем рабочем процессе.

В этом случае время, необходимое для создания инфраструктуры, и деньги можно оценить следующим образом:

  • Время: около половины рабочего дня.
  • Деньги: 10 долларов за токен API OpenAI. Даже в этом случае вы будете платить за каждый запрос к API. Тем не менее, вы можете начать всего с 10 долларов. Лицензия на n8n в настоящее время стоит 25 долларов в месяц за базовый тарифный план или совершенно бесплатно, если вы решили использовать версию для самостоятельного хостинга. Таким образом, для начала вам понадобится около 10 долларов.

Какой подход выбрать?

Аспект Подход к созданию облачной инфраструктуры Подход к автоматизации рабочих процессов
Технические навыки Высокий уровень (требуются навыки кодирования на Python, облачных технологиях и поиске данных) Низкий уровень (базовый JavaScript)
Время на установку Около полного рабочего дня Около половины рабочего дня
Первоначальная стоимость Минимум ~25 долларов за облачный сервис + почасовая оплата ~ $10 за токен API OpenAI + $24/месяц за лицензию n8n или бесплатный самостоятельный хостинг
Гибкость Высокий (подходит для расширенной настройки и различных вариантов использования) Умеренный (хорошо подходит для автоматизации рабочих процессов и настройки с небольшим количеством кода)
Лучшее для Команды с высокими техническими навыками, нуждающиеся в мощной и гибкой инфраструктуре Команды, которым требуется быстрая настройка, или команды с ограниченным опытом кодирования
Дополнительные преимущества Полный контроль над точной настройкой среды и процесса Готовые шаблоны, низкий начальный барьер, интеграция с другими рабочими процессами

Эти два подхода требуют одинаковых первоначальных инвестиций – как временных, так и денежных. Как же выбрать один из них? Вот несколько рекомендаций:

  • n8n: Выберите n8n – или любой другой аналогичный инструмент автоматизации рабочих процессов – для тонкой настройки LLM, если вам нужно автоматизировать другие рабочие процессы и если ваша команда не обладает высокой технической квалификацией. Этот подход с низким содержанием кода поможет вам автоматизировать любые другие рабочие процессы. Он требует написания кода только в том случае, если вам нужна настройка. Кроме того, он предоставляет готовые шаблоны, которые можно использовать бесплатно, что снижает начальный барьер для использования этого инструмента.
  • Облачные сервисы: Выбирайте облачные сервисы для тонкой настройки LLM, если они нужны для разных целей и у вас есть высококвалифицированная команда. Настройка облачной среды и разработка ноутбука для тонкой настройки требуют глубоких технических знаний.

Сердце процесса тонкой настройки: Высококачественные данные

Независимо от того, какой подход вы выберете, Bright Data остается ключевым посредником в обоих случаях. Причина проста: высококачественные данные – основа процесса тонкой настройки!

Bright Data предлагает вам инфраструктуру искусственного интеллекта для данных, предлагая ряд услуг и решений для поддержки ваших приложений искусственного интеллекта:

  • MCP-сервер: MCP-сервер с открытым исходным кодом Node.js, который предоставляет более 20 инструментов для поиска данных в агентах ИИ.
  • API для веб-скреперов: Предварительно настроенные API для извлечения структурированных данных из 100+ основных доменов.
  • Web Unlocker: Универсальный API, позволяющий разблокировать сайты с защитой от ботов.
  • SERP API: Специализированный API, который открывает результаты поисковых систем и извлекает полные данные SERP.
  • Базовые модели: Доступ к совместимым наборам данных веб-масштаба для предварительного обучения, оценки и точной настройки LLM.
  • Поставщики данных: Подключайтесь к надежным поставщикам, чтобы получать высококачественные, готовые к искусственному интеллекту наборы данных в масштабе.
  • Пакеты данных: Получите готовые к использованию наборы данных – структурированные, обогащенные и аннотированные.

Хотя в этом руководстве вы узнали, как точно настроить GPT-4o-mini, используя API Web Scraper, вы можете выбрать другой подход, воспользовавшись одним из наших сервисов.

Заключение

В этой статье вы узнали, как точно настроить GPT-4o-mini с помощью данных, взятых с Amazon, используя n8n для автоматизации всего рабочего процесса. Вы прошли через весь процесс, который состоит из двух ветвей:

  1. Выполняет тонкую настройку после удаления данных.
  2. Проверьте тонкую настройку модели, вставив подсказку через триггер чата.

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

Независимо от того, какой подход лучше всего подходит для вашей команды, помните, что в основе процесса по-прежнему лежат высококачественные данные. В этом отношении Bright Data предлагает вам несколько услуг по обработке данных для ИИ.

Создайте бесплатную учетную запись Bright Data и протестируйте нашу инфраструктуру данных с поддержкой искусственного интеллекта!

Вас также может заинтересовать