Вопрос по передаче JSON, веб-поиску и архитектуре сценариев в Make

Q&AРубрика: Курс по АгентамВопрос по передаче JSON, веб-поиску и архитектуре сценариев в Make
+1 0 -1
Toomas asked 5 дней ago

Алексей, приветствую!

Дисклеймер: я не являюсь техническим специалистом и подхожу к этому курсу с гуманитарным бэкграундом. Поэтому прошу прощения, если какие-то мои формулировки кажутся неточными или наивными — я искренне стараюсь разобраться и применить материал курса на практике.

Суть вопроса

У меня возникла следующая проблема при работе с Make: модуль OpenAI возвращает JSON-массив как строку, а Make не умеет правильно сериализовать его при передаче в HTTP-запрос — сервер получает либо пустой req.body (переменная на стороне сервера, в которую должны попасть переданные данные), либо undefined (данных либо вовсе не пришло, либо они пришли в нераспознаваемом формате). Я пробовал решить это через встроенный модуль преобразования JSON (Parse JSON), но он либо не принимал строку как допустимый вход, либо завершал сценарий с ошибкой. После этого я пытался передавать данные через внешний сервер на Replit, где обрабатывал JSON вручную, однако и там возникали проблемы с форматированием и типами данных. Это ломает всю цепочку обработки. Хочу обсудить, как архитектурно решать подобные задачи в агентах. 

Контекст и ход реализации

Чтобы лучше понять материал курса, я параллельно применяю всё на практике и для этого построил реальный проект, где пробую реализовать полноценного рекомендательного агента на базе Make и OpenAI. Я создал Telegram-бота под названием “Your Perfect Jogging Shoes”, который собирает информацию о предпочтениях пользователя, его уровне подготовки, особенностях стопы, стилях бега и цели — например, «для марафона», «для трейлов» и пр.

Анкета гибко настраивается через Airtable. После прохождения опроса я хочу, чтобы пользователь получил список актуальных моделей беговых кроссовок (на 2025 год), которые соответствуют его профилю — с краткими описаниями, ссылками и аргументацией.

Однако при реализации рекомендательной системы через Make я столкнулся с рядом ограничений, которые пока не удаётся преодолеть.

Почему Make не справляется с задачей подбора кроссовок

Ограничения GPT-4 (OpenAI)

  • GPT-4 обучен на данных до 2023 года и не знает актуальных моделей 2024–2025 годов.
  • Даже при строгом промпте (only current, real shoes) он выдаёт либо устаревшие, либо вымышленные модели.
  • Проверить эти модели автоматически — крайне важно, иначе рекомендации не имеют ценности.

Попытка валидации через Make + Replit

Я создал внешний сервер на Replit. Идея: получить JSON-массив моделей от OpenAI → отправить его на Replit (/parse) → перебрать каждую модель → отправить GET/POST-запросы (/search) → вернуть проверенные результаты.

Make должен был быть "транспортом", связывающим OpenAI, Replit и Telegram.

Критическая проблема передачи JSON

  • Модуль OpenAI в Make возвращает JSON-массив в виде строки, а не объекта.
  • При передаче этого JSON-текста в HTTP-модуль на Replit:

    • Make не сериализует строку в валидный JSON.
    • На сервер приходит либо пустой req.body = {}, либо undefined.
    • Это вызывает ошибку на этапе JSON.parse().

Модуль Parse JSON в Make нестабилен

  • Стандартный парсер не поддерживает строки с JSON-массивами — требует полноценный объект.
  • Любая ошибка (например, unexpected token) приводит к полной остановке сценария без логов или fallback.
  • В результате приходится полностью обходить встроенный парсер и использовать внешний.

Iterator Make требует "чистый массив" (запускает сценарий отдельно для каждой модели кроссовок, чтобы отправить её на проверку и сформировать результат индивидуально):

  • Даже если Replit возвращает массив, он должен быть точно отформатирован: [{...}, {...}] без markdown, кавычек и лишнего текста.
  • Несоответствие форматов ломает итерацию, что блокирует дальнейшую обработку.

Make не умеет искать в интернете:

  • Модуль HTTP может отправлять GET/POST-запросы, но сам Make не умеет парсить HTML или производить реальный поиск информации — он просто получает необработанный ответ от сайта.
  • Чтобы реализовать поиск по модели (например, найти обзор или цену), я использовал внешний сервер на Replit (как прослойка между Make и интернетом: Make отправлял название модели в HTTP-запросе на маршрут /search, Replit выполнял веб-поиск, собирал краткое описание и возвращал результат.

Вопрос

Как в подобных задачах (подбор актуальных моделей товаров по параметрам пользователя) правильно выстраивать архитектуру, если:

  • Нужно использовать OpenAI для генерации на основе предпочтений;
  • Нужно обязательно проверять актуальность моделей в интернете;
  • Требуется надёжный обмен JSON между модулями;

Уверен, что подобные задачи решаются намного проще и решение уже давно есть. Какие подходы/архитектуры вы можете порекомендовать для решения таких задач?

Заранее благодарю за советы или направление, в котором стоит подумать.

С уважением,

Тоомас

5 ответ
+1 0 -1
Алексей Крол Админ. answered 5 дней ago

Добрый день. Давайте есть слона по частям. Один вопрос за другим. Сформулируйте главный вопрос, я попробую ответить. Потом второй и т.д. Пока я увидел у вас одну проблему:

"У меня возникла следующая проблема при работе с Make: модуль OpenAI возвращает JSON-массив как строку, а Make не умеет правильно сериализовать его при передаче в HTTP-запрос " Правильно. Потому что скорее всего вам нужно передать не JSON, а фрагмень и тогда надо его извлечь с помощью Text Parser. OpenAI может отдавать не только в JSON, но и в многих форматах. Я не уверен, что вам нужен JSON, но не зная проекта - сложно советовать.

Сам Make ничего не обрабатывает, он лишь выполняет модули, т.е. передает управление от одного модуля к другому на базе сценария. Любая попытка типа "сериализовать" это обработка данных и вам надо найти соответствующую операцию.

Напоминаю, что мой фокус - построение Агентов с помощью Make, я конечно могу что-то помощь, но если у вас вопросы именно по Make - стоит искать там.

+1 0 -1
Алексей Крол Админ. answered 5 дней ago
  1. "GPT-4 обучен на данных до 2023 года и не знает актуальных моделей 2024–2025 годов" - чтобы ИИ отвечал вы должны снабдить его актуальными данными, т.е. найти сайт, выйти на него, спарсить информацию в нужной структуре и предоставить ее ИИ, как часть контекста. Если инфы очень много, тогда стоит строить RAG, мы это будем рассматривать дальше, но вы можете сами поискать, не ждать.
  2. Разбейте проект на несколько простых независимых частей и производите отладку отдельно. На мой взгяд вы пока усложняете и возможно ошибки в разных фрагментах. Отлаживайте фрагменты последовательно.
+1 0 -1
Алексей Крол Админ. answered 4 дня ago

У вас очень хороший и важный кейс - разберем его сегодня на QA сессии.

+1 0 -1
Алексей Крол Админ. answered 3 дня ago

Обсудили в стриме.

+1 0 -1
Toomas answered 4 дня ago

Попробую переформулировать главный вопрос иначе. Как правильно архитектурно выстраивать цепочку генерации и валидации данных (например, актуальных моделей товаров) по заданным характеристикам пользователя, если основная цель — предоставить пользователю актуальную информацию на момент запроса. Пока, как следствие моей безграмотности в данной области (пытаюсь почесать левое ухо правой рукой), вероятнее всего, это изобретённые мною проблемы, так как есть испробованные алгоритмы решения подобных задач. Хочу понять, какие есть варианты решения (конечно, в рамках нашего курса). Насчет построения RAG-системы, спасибо за наводку, попробую разобраться.

Прокрутить вверх