Всем привет! Меня зовут Илья, я инженер-программист, но чаще пишу промпты вместо кода, что привело к некоторым артефактам, о которых ниже.
В данной статье я покажу, как интегрировать n8n с OpenWebUI, вайбкодить по делу и без, а также напомню о том, как найти идею, если кто не знал.
Некоторое время назад я оказался в не очень злачном месте, чтобы "развлекаться" околоинтеллигентными разговорами про экономику, международную политику и научно-технический прогресс. Чем еще было заниматься осенним субботним вечером в 2022 году?

Я остался слегка доволен встречей, не подозревая о том, что данная история стартовала именно тогда. Из сумбурных бесед запомнился термин «Теория Решения Изобретательских Задач» (ТРИЗ), который зацепил настолько, что я заказал бумажное издание «Найти идею» Генриха Сауловича Альтшуллера. После чего сотни дней её «не искал». Трудно начать читать интересную книгу, когда у тебя в очереди десятки ничуть не хуже. Почти как у Георгия Ивановича, на картинке выше. Притом что читать стабильно некогда, как бы ни старались учёные в своих разработках теории времени.
Карьера текла ламинарно, одна работа замещала другую, а «Найти идею» турбулентно лежала на книжной полке, ожидая своего часа. В очередной компании, помимо крутых инженеров, оказалась очень драйвовая корпоративная культура, включающая в себя внутренние митапы, где каждый желающий может рассказать что-то интересное. Поверхностно зная о применении ТРИЗ, я решил наконец-то открыть её для себя и коллег. И попутно обновить опыт выступления на публике, которого не было уже лет 10.

Освоить книгу Генриха Альтшуллера не составило труда, как и сделать презентацию с мемами. Лекторская деятельность — вещь полезная и интересная, если владеть темой. А быть ретранслятором текстов, подготовленных помощниками, — дело, как по мне, неприятное.

В голове отложилось достаточно, чтобы начать смотреть на некоторые проблемы через призму закономерностей развития технических систем и стандартных приемов ТРИЗ. Так, в одном организационно сложном проекте мне пригодился прием «усложни проблему в 2 раза», примененный к одному из тестовых кейсов. Легко решив его в крайне маловероятном сценарии, я попутно реализовал базовый, на который уже затратил много сил и нервов.
Читая «Найти идею», я вспомнил конференцию, где узнал о компании, ориентированной на исследователей и поставляющей услуги по анализу патентной информации. В этот момент на мою голову «упало яблоко», что к их продукту можно прикрутить алгоритм АРИЗ, что теоретически добавит ценности за счет уже имеющихся ресурсов. Цель — для любого запроса с технической проблемой с ходу получать колоду возможных решений и патентную информацию по ним. Наверное, кому-то будет нужен быстрый размен человекочасов на токены по выгодному курсу?
Руководство было открыто для конструктивных предложений, и я, пользуясь случаем, рассказал директору о своей гипотезе, получив зеленый свет на пресейл в случае реализации прототипа. К чему я и поплыл на волнах ночного энтузиазма. Сделал быстро, но благодаря итеративному переосмыслению еще два раза медленно переделывал. Что-то адекватное получилось только на этом этапе, но мыслей по усовершенствованию было еще на полгода-год плотной переработки или до окончательного выгорания.
Спасибо, что под рукой был ларец с ИИ-ассистентами, ускорившими написание кода. Приятно, когда можно дать текстовые вводные и вскоре уже тестировать работоспособность всей системы. И при необходимости поправить, порой с N+10 попытки.

Вся основная «логика» собралась в n8n-workflow, который взаимодействует с Qdrant, используя сервис-адаптер. В качестве интерфейса используется OpenWebUI. Проще этого только раздобыть Claude, Cursor или что-то покруче.

То, что я презентовал на пресейле, было сложнее, но суть та же. Идея понравилась контрагентам, но после нескольких недель раздумий, коммерческой ценности в ней не обнаружили. Несмотря на ожидаемую неудачу, я чувствовал себя бодро, обретя опыт выгула pet-проекта перед потенциальными заказчиками. Если продолжать в таком же духе, то рано или поздно получится заползти на новый уровень. В худшем случае можно интересно провести время, что, по сути, самое главное.
По инерции я еще тлел этим проектом, обдумывая, чего бы такого в него добавить для эволюционирования в полноценный продукт. Но поскольку похожие эксперименты давно ведутся, мне стало любопытнее развить ряд мыслей, которые появились по ходу текущей пьесы. Снова придется многое изучить и перепробовать, надеясь, что Cursor и Claude будут моими верными спутниками. Главное, чтобы не кумирами.

Эту реализацию решил выложить в открытый доступ, в надежде, что кому-нибудь она пригодится. Алгоритм Решения Изобретательских Задач модифицируем и известен во многих версиях, соответственно, каждый может доработать АРИЗ-агента под себя. Полагаю, что в текущем виде он может как минимум быть полезен при изучении ТРИЗ и агентных систем, а как максимум при решении реальных проблем. Ежели вдруг кто-то на этом заработает — переведите часть вырученных средств в любой благотворительный фонд, оплачивающий лечение детям (прописано в LICENSE).
В репозитории самая минималистичная версия из моих экспериментов, максимально близкая к тому, что на сайте Альтшуллера. Но и она, сделанная по большей части с помощью ИИ, дает интересные результаты.
Инструкция по настройке
Подготовка
Клонировать код:
git clone https://github.com/bazhil/ariz-agent.gitПерейти в директорию:
cd ariz-agentСоздать файл с переменными окружения
cp .env.example .envЗапустить контейнеры:
docker compose upПосле запуска контейнеров открыть три страницы для дальнейших настроек:
- n8n: http://localhost:5678/setup
- OpenWebUI: http://localhost:3000/
- patent-service: http://localhost:8000/docs
Настройка n8n
Ввести учетные данные

Перейти в настройки (Settings > Community Nodes) и установить расширение n8n-nodes-gigachat

Указать ключ GigaChat в Credentials

После ввода ключа должно быть успешно проверено подключение.

Копировать воркфлоу, устранить все замечания в нодах, активировать и сохранить.

Настройка OpenWebUI
В настройках отключить автогенерацию заголовка, продолжения и тегов чата. Если этого не сделать, то результат будет сильно хуже из-за использования лишних сущностей.

Перейти в панель администратора, создать функцию и вставить код, который будет звать n8n webhook trigger по соответствующей ссылке.

Важно убедиться, что в N8N_WEBHOOK_URL указан именно тот URL, который содержится в n8n webhook trigger. Также увеличить таймаут. Обратите внимание, что на в ссылке может присутствовать «webhook-test», который полезен при отладке, но после его следует исправить, оставив только «webhook». Так не придется запускать воркфлоу в интерфейсе n8n для каждого запроса.

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

Загрузка патентов в Qdrant
Открыть Google Patents (доступ с российским IP ограничен) и выкачать .csv по любым интересующим темам.

Когда я начинал делать данный проект, проблем с доступом не было, а сейчас уже нет времени дорабатывать под альтернативные источники патентов, поэтому You are welcome to Pull Request.
Открыть patent-service и загрузить данные патентов из .csv в Qdrant, учитывая упомянутые выше ограничения.

В ответе получаем статус с task_id, по которому можно отслеживать прогресс загрузки патентов.

После того, как нужные данные будут в хранилище (проверяется в /load_status/{task_id}), можно приступать к работе.

После настройки перейти в чат с функцией ariz в OpenWebUI и ввести свой вопрос, подкрепленный контекстом проблемы. Чем больше информации о проблеме будет на входе, тем релевантнее будет ответ. Но и с голым вопросом агенту есть что рассказать. Процесс занимает некоторое время, но по сравнению с "ручным трудом" это мгновение.
В ответе выводятся идеи по степени новаторства, от прорывных (рисуют фантастическое завтра) до обычных (трудовое сегодня) и наиболее близкие патенты под них. Такой пасьянс потенциальных решений с большей вероятностью предоставит пользователю полезную информацию, снизив степень неопределенности. И если повезет, то даже позволит спрогнозировать пути дальнейшего развития целевой системы. А кто предупрежден — тот вооружен.

При разработке я использовал патентные данные по беспилотникам. Тема настолько «веселая», что, не особо погружаясь в неё, можно бегло оценивать не только отчеты агента, но и уровень компетенции как отдельных энтузиастов, так и «полноценных разработчиков и производителей». Например, если подружить дрон с перцовым баллончиком и громкоговорителем — задача тривиальная, то научить БПЛА эвакуировать субсидии из бюджета на дальние расстояния — «высший пилотаж» от НИОКР.
Выводы:
Если почитывать Хабр и книжки, праздно шататься по лекциям и конференциям, то дельная мысль может «прилететь в гнездо» даже там, где лучше вообще не появляться.
В открытом доступе много топлива для генерирования идей и инструментов для их реализации.
Различные «методологии» целесообразно «перекладывать» на ИИ-агентов, что теоретически облегчит работу как отдельным специалистам, так и коллективам.
Продуманная и человечная корпоративная культура может подтолкнуть сотрудников к саморазвитию и творчеству, что, в свою очередь, способно привлечь энергию денег.
ИИ значительно облегчает разработку и меняет мир, что наводит на мысли об изменении роли человеческого труда. Интересно смотреть на это сквозь призму гипотезы техно-гуманитарного баланса.
Согласно докладу ВЭФ 2026 года, любознательность и эффективное использование ИИ крайне важны для карьеры. А про высокие баллы ЕГЭ нет ни слова.
ТРИЗ не теряет актуальности, скорее наоборот. Косвенно это подтверждает доклад ВЭФ 2023 года, где среди наиболее востребованных навыков будущего выделена креативность.
Вроде получилось сделать вклад в OpenSource. Теперь можно мечтать о чем-нибудь великом.


