В прошлой статье я рассказал о своем жестком факапе на монтаже, где весь день пошел наперекосяк. Где я два предмета делал почти 13 часов и накосячил в куче мест. Мало того, я клиенту сделал существенную скидку в качестве компенсации тех недочетов, которые я все равно допустил.
Так сегодня получил еще один запоздалый “удар под дых» из прошлого. Штраф за парковку у своего дома за 5000 рублей.
В тот день я уехал на монтаж в 7.40, а припарковался у дома в 00.35. В силу дикой усталости не стал искать парковку во дворах, а просто бросил машину на улице.
В принципе, я часто и раньше так делал…
Но за месяц до этого в нашем замкадном Бутово сделали платную парковку на улицах и я еще не успел привыкнуть к этому замечательному факту. Соответственно, я просто бросил машину, не оплатил парковку, т.к. просто тупо забыл о том, что с недавних пор оставить машину у дома, эта опция у нас за деньги.
Спустя две недели это круто узнать, что твой самый дерьмовый день монтажа на самом деле был еще более дерьмовый, и что наш доблестный Московский паркинг получит 5000 рублей от меня за парковку в 100 метрах от своего дома на пустой парковочной зоне стоимостью 40 рублей/час.
Вообще, трудно стало автолюбителям в Москве. Это очень хороший способ получить свою порцию поборов, унижения и презрения.
Вместо предисловия
ИИ продолжает стремительно внедряться в бизнесе. После того, как крупняки заявили о значительной степени внедрения ИИ в свои процессы, начали активно шевелиться компании среднего размера. Автоматизация на базе ИИ приобрела массовый характер. Нависла беспокойная атмосфера ожидания сокращений и увольнений. Роботы отбирают рабочие места. Люди себя чувствуют неуютно.
Любопытная штука. Я много лет занимался автоматизацией именно с целью оптимизации в бизнесе.
Обычно это делают не просто так, а для того, чтобы:
-
производить или продавать что-то больше;
-
тратить на что-то меньше времени или средств;
Конечной целью внедрения автоматики всегда по хорошему должна быть прибыль. Конечно, я неоднократно видел, когда преследовались и другие цели. Может даже странные.
-
порадовать эго ТОП менеджера;
-
освоение бюджета;
-
демонстрация активной деятельности без четко выраженной цели;
-
интерес определенных людей к технологиям “на будущее”;
Автоматизация в продажах позволят переложить часть работы на робота или клиента. Типичный пример — повсеместное внедрение касс самообслуживания.
Однако, рентабельности внедрения решений на базе ИИ часто может и не быть. Затраты на разработку и поддержку сервисов могут оказаться значительно более высокими, чем на оплату труда живых работников.
С ростом возможностей моделей генерации текста, очень быстро растет стоимость их использования.
Это важно, ибо выход очередной топовой модели gpt, claude и некоторых других провайдеров, мне напоминают выход флагманов смартфонов.
При относительно небольшом приросте производительности, цены за его использование выше предшественников в разы.
Всплеск интереса к LLM моделям начался с выхода GPT 3, которая реально была прорывной с точки зрения решения задач по генерации текста.
Однако, самым слабым местом в ней было очень небольшое контекстное окно, которое состояло всего из 1..2 листов печатного текста. Это сильно ограничивало ее возможности. Генерировать маркетинговые тексты, статейки и контент планы, а также ваять несложные скрипты с ним можно было.
Подписка с самого начала на нее стоила около 20 долларов в месяц.
Сейчас, спустя всего 3 года, эту модель можно использовать бесплатно, а контекстное окно продвинутых моделей составляет сотни страниц контекста. Т.е. Для генерации ответа, можно снабдить модель очень подробными инструкциями и дать огромный контекст для ответа.
Но нужно понимать, что эти все фокусы требуют серьезных вычислений и энергозатрат и они по умолчанию не могут стоить дешево.
При этом с точки зрения удержания контекста человеку такие задачи даются куда проще, чем чат ботам. Не каждому человеку, конечно, но любому толковому без проблем. При росте количества инструкций LLM, растет рост вероятности их игнорирования.
С какими трудностями я столкнулся при проектировании интеллектуального ИИ ассистента — менеджера по работе с клиентами
Я целую неделю игрался с одним из флагманов Claude — Opus 4.5, на базе которого работает мой ИИ ассистент-разработчик. Я ему сделал довольно простую систему хранения контекста нашей беседы, которая позволяет ему не терять нить разговора глубиной примерно в 150-180 сообщений. Для моего проекта этого вполне хватает.
За прошлую неделю мы с ним написали довольно большое веб приложение на базе Laravel, которое имеет несколько сервисов:
1. Сервис работы с сообщениями из Авито.
С его помощью производится синхронизация диалогов и сообщений по каждому из объявлений в авито.
Приложение имеет визуальный интерфейс, позволяющий отображать список диалогов и сообщений в нем, а также отправлять сообщения клиенту в авито из этого интерфейса в любой диалог.

2. Сервис очистки и подготовки диалогов для создания векторного индекса.
Основная цель, это умный бот ассистент, который будет консультировать моих клиентов на шкафчики и экраны и многие диалоги нельзя использовать.
3. Сам сервис поиска по истории диалогов
Это потрясающая штука, которая позволяет производить смысловой поиск по истории диалогов очень быстро. Идея создания векторов состоит в том, что поиск можно осуществлять гораздо быстрее, чем полнотекстовый. При этом он может быть смысловым при разных вариантах написания текста, что в обычном полнотекстовом поиске недоступно.
4. Сервис подготовки контекста для бота.
Бот, чтобы написать нормальное сообщение в ответ на вопрос, должен обладать большим контекстом:
— историей диалога с клиентом и выделенным последним сообщением
— тестом объявления, по которому идет диалог
— базой faq, с ответом на часто задаваемые вопросы
— результатами поиска по очищенной векторной базе диалогов с живым менеджером.
— подробными инструкциями, включающими цель общения, ограничения и тп
Шок от впечатляющих возможностей Claude Opus 4.5
Самое мое яркое впечатление, это написанный в одном сообщении код по доработке сервиса, в котором в 6 файлах суммарно было более 500 строк кода, который должен был учитывать контекст проекта, и который запустился без ошибок(!) с первого раза…
От этого я, надо сказать, офигел реально.
Но при этом даже такая продвинутая модель до сих пор, даже при наличии подробных инструкций, не пишет код, который легко потом поддерживать.
Типичные ошибки:
— использование хардкода: урл и настройки задаются в коде, даже несмотря на то, что в контексте есть информация про .env файл и использование файлов конфигураций;
— дублирование кода, хотя если ты не джун, то очевидно, что его нужно убирать введением отдельного класса;
— чрезмерно сложное проектирование архитектуры для решения относительно простых задач;
Хорошей новостью, однако, является тот факт, что если отдельно обратить на эти вещи его внимание, он переписывает классы и убирает настройки в переменные окружения и конфиги, а также вводит новые классы для устранения дублирования.
Т.е. Написать рабочее приложение, а затем причесать его отдельно, он вполне в состоянии, если его правильно направлять.

Из всего этого я делаю вывод, что профессиональная разработка все еще останется за профессионалами.
Но эти 500 строк кода… Несколько классов, модели, миграции для базы в одном флаконе. При этом еще через несколько минут он выдал код для тестирования.
А это все реально вполне нормальная работа опытного разработчика и тестировщика за рабочий день без ИИ помощника.
Круто все это… Однако код, который пишет ИИ, все еще должен проходить ревью, как и от любого другого автора. Кроме того, бот может изначально заложить в модели слишком сложную структуру, в которой вы потеряете половину полей, если сами сразу не будете понимать, для чего и как именно они используются…
Если возвращаться к примеру с кодом на 500 строк, то у меня ушло около 2 часов, чтобы точно разобраться, что там за изменения в таблицах, что за методы, а также причесать с ботом код к виду, который потом можно будет относительно легко поддерживать.
Проблема 1 — поиск по диалогам «в лоб» обладал плохой релевантностью

Векторную базу и поиск по ней мне удалось за два дня реализовать, но качеством поиска первой версии я был сильно разочарован. Прежде всего потому, что при загрузке всех диалогов целиком, наиболее короткие диалоги без продолжения часто признавались более релевантными. Длинные даже не попадали в выдачу, хотя ответы из них чаще наиболее интересны.
Я поделился своей бедой с ботом, и тот, как хороший психотерапевт, сообщил, что я столкнулся с типовой проблемой при решении этой задачи. И по хорошему, при создании индекса, надо использовать не диалоги целиком, а делить диалоги на чанки в 3..5 сообщений с перехлестом.
И поиск при этом должен вестись по сообщениям клиента, а в качестве результата выдаваться та часть диалога, где менеджер дает ответ.
Вот конкретно, что я запросил
есть контекст:
предыдущая история диалога с клиентом;
информация с текстом объявления, по которому обратился клиент;
база типовых ответов на вопросы клиента;
результаты поиска по векторной базе с реальными диалогами (5..10 релевантных результатов полных диалогов)
—-
мне не очень нравится качество ответов. Я в качестве результатов поиска по векторной базе с реальными диалогами выдаю 7 диалогов. И часто они не очень релевантны, это раз, второе… в индексе у меня диалоги целиком: и 2 и 70 сообщений за раз. И чаще всего в поиске вылезают именно короткие диалоги, а длинные и не имеют шанса. Как правильно вообще построить эту систему: индексирование и поиск?
И что мне ответил Opus 4.5
## Проблема с индексированием диалогов
Ты столкнулся с классической проблемой **bias к коротким текстам** при векторном поиске. Вот правильные подходы:### 1. Chunking диалогов (рекомендуемый подход)
Разбивай длинные диалоги на chunks по 3-5 сообщений с перекрытием:
### 2. Новая структура в Qdrant
[код]
### 3. Двухуровневый поиск
[код]
### 4. Улучшение качества embedding
Вместо всего текста создавай embedding от **вопроса клиента + краткого контекста**:
А полный текст храни в `payload.full_text` для контекста LLM.
### 5. Миграция для новой таблицы чанков
[код]
Хочешь полную реализацию команды для chunked индексации?
Далее в течение 2..3 часов мы дорабатывали сервис. И это сильно улучшило контекст.
Проблема 2 — faq и инструкции для ответов содержат большое число разных нюансов, которые теряются в огромном контексте.
Человек спрашивает про что-то, бот отвечает, но только консультирует. Основные цели — среди которых получение информации, бот не выполняет, а просто консультирует “ради консультации”. В таком диалоге если клиент не будет проявлять инициативу, то и клиент сам не поймет, что ему надо предоставить те или иные данные.
Эту задачу удалось решить улучшением промта с целями в виде чек листа, которые бот должен сообщить, а какую информацию не забыть запросить.
Проблема 3 — кроме того, что бот должен говорить, сложнее всего оказалось с тем, что он говорить НЕ должен.
Качество ответов после решения проблемы 2 меня уже начинало радовать, как приемлемое. И уже было четкое понимание, что в каком-то виде бота использовать можно. И самой бесячей проблемой осталось дублирование информации от бота. Он может в каждом сообщении пихать цену работы, но одновременно упорно не говорит, например, о выезде или о необходимости все же предоставить размеры места, куда монтируем шкафчик.

Чтобы решить эту проблему, я придумал обновление чек листа с тем, что уже по диалогу реализовано, а что предстоит еще расспросить.
Это я сделал в виде двух списков, которые задают ограничения, что делать НЕ следует, так как уже сделано, а чего еще не хватает. И оказалось, что задать такую инструкцию в явном виде, гораздо эффективнее, чем просто текстом упомянуть в общих инструкциях.
При этом пришлось отправлять отдельный запрос к LLM модели с историей диалога, чтобы та подвела итог, что на текущий момент получено и какие ограничения существуют. Он формирует резюме, которое прикрепляется к контексту диалога.
В общем, сейчас те ответы, которые он дает, меня вполне устраивают. Да, это не живой толковый человек, но ответы релевантные, в нормальном человеческом стиле и они явно смогут заменить меня в начале общения и получать нужные данные для работы по этому заказу.
Пример диалога от бота в тестовом режиме (читать снизу вверх)

Дальнейшие планы.
Сейчас после тестирования попробую повесить для обработки диалогов себя, как монтажника.
Подниму цену услуги за счет включения отдельного тарифицирования выезда (1500 рублей).
Продолжу улучшать боту. Предполагаю внедрить систему оценки качества ответов. Ну то есть, чтоб я при желании мог открыть ответы и пометить удачные, чтобы использовать их для обучения и использования в поиске ответов.
Система оценки будет ручной, плюс показатели качества по достигнутым целям: “получены размеры”, “фото”, “согласован материал”, “проведена консультация по схеме работы” или “подобрана релевантная корзина материалов”. Да, это для стандартных запросов я тоже могу реализовать, но ручное подтверждение обязательно
Возвращение в IT
Планы примерно такие же, как и в случае входа в ручного труда фриланс:
-
потренить на кошках — это мой ИИ бот для Авито
-
взять пару клиентов за смешные деньги и наработать кейсы в этой области
-
возвращаться с предложением делать это для бизнеса
Прикол в том, что разработчиков, которые в бОльшей или мЕньшей степени владеют технологиями использования построения ИИ агентов, не так мало.
Но людей, которые умеют в это, но еще и умеют в создание продукта и при этом еще умеют думать как продавец и владелец бизнеса — таких точно немного. А у меня это есть. Я могу соотнести рентабельность внедрения автоматизации на конкретном участке и не забыть посмотреть, как это повлияет на бизнес в целом. Могу ясно сформулировать задачи и цели. Могу создать ИИ помощников или привлечь команду профи там, где самому разбираться долго или нерентабельно.
В общем, это реальная ниша, с которой можно начать предлагать заказы.
Сейчас у меня идут переговоры с “парой клиентов”, чтобы решить их кейсы с чат ботом и голосовым чат ботом для уменьшения операционных затрат бизнеса.
И если я эти задачи решу, то это уже даст некоторый трамплин, чтобы можно было контактировать с предпринимателями и решать крупные комплексные задачи по автоматизации и цифровизации.
Собственно, это даже прикольно, нырнуть на дно, поработать курьером, затем монтажником и снова вынырнуть наверх в виде подрядчика или наемника, решающего задачи по цифровой трансформации среднего и крупного бизнеса.
