Алексей, приветствую!
Дисклеймер: я не являюсь техническим специалистом и подхожу к этому курсу с гуманитарным бэкграундом. Поэтому прошу прощения, если какие-то мои формулировки кажутся неточными или наивными — я искренне стараюсь разобраться и применить материал курса на практике.
Суть вопроса
У меня возникла следующая проблема при работе с 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 между модулями;
Уверен, что подобные задачи решаются намного проще и решение уже давно есть. Какие подходы/архитектуры вы можете порекомендовать для решения таких задач?
Заранее благодарю за советы или направление, в котором стоит подумать.
С уважением,
Тоомас
Добрый день. Давайте есть слона по частям. Один вопрос за другим. Сформулируйте главный вопрос, я попробую ответить. Потом второй и т.д. Пока я увидел у вас одну проблему:
"У меня возникла следующая проблема при работе с Make: модуль OpenAI возвращает JSON-массив как строку, а Make не умеет правильно сериализовать его при передаче в HTTP-запрос " Правильно. Потому что скорее всего вам нужно передать не JSON, а фрагмень и тогда надо его извлечь с помощью Text Parser. OpenAI может отдавать не только в JSON, но и в многих форматах. Я не уверен, что вам нужен JSON, но не зная проекта - сложно советовать.
Сам Make ничего не обрабатывает, он лишь выполняет модули, т.е. передает управление от одного модуля к другому на базе сценария. Любая попытка типа "сериализовать" это обработка данных и вам надо найти соответствующую операцию.
Напоминаю, что мой фокус - построение Агентов с помощью Make, я конечно могу что-то помощь, но если у вас вопросы именно по Make - стоит искать там.
- "GPT-4 обучен на данных до 2023 года и не знает актуальных моделей 2024–2025 годов" - чтобы ИИ отвечал вы должны снабдить его актуальными данными, т.е. найти сайт, выйти на него, спарсить информацию в нужной структуре и предоставить ее ИИ, как часть контекста. Если инфы очень много, тогда стоит строить RAG, мы это будем рассматривать дальше, но вы можете сами поискать, не ждать.
- Разбейте проект на несколько простых независимых частей и производите отладку отдельно. На мой взгяд вы пока усложняете и возможно ошибки в разных фрагментах. Отлаживайте фрагменты последовательно.
Попробую переформулировать главный вопрос иначе. Как правильно архитектурно выстраивать цепочку генерации и валидации данных (например, актуальных моделей товаров) по заданным характеристикам пользователя, если основная цель — предоставить пользователю актуальную информацию на момент запроса. Пока, как следствие моей безграмотности в данной области (пытаюсь почесать левое ухо правой рукой), вероятнее всего, это изобретённые мною проблемы, так как есть испробованные алгоритмы решения подобных задач. Хочу понять, какие есть варианты решения (конечно, в рамках нашего курса). Насчет построения RAG-системы, спасибо за наводку, попробую разобраться.
Please login or Register to submit your answer