обновленный Coding Plan GLM-4.5
уже несколько человек спросили меня – А что там с codex, правда мощный?
a я и не знаю ¯\_(ツ)_/¯
Невозможно в дополнение к основной работе и прочим делам успевать перепробовать все новые инструменты.
очень уж все сейчас быстро развивается.
но касаемо codex интерес понятен. Слышно как тут и там как раздаются восхищенные вздохи🪨
Я попытался спросить у плотно вайб-кодящих коллег - а пробовали ли они "новый" codex (в смысле на GPT-5) и средний ответ по палате звучал как-то так:
и это еще понятнее – если инструмент удовлетворяет большую часть потребностей, то смотреть куда-то еще просто не возникает желания.
Я писал про GLM-4.5 и Coding Plan ровно неделю назад, а потом, практически все семь дней я пользовался этой LLM для разработки и проектирования разных бэкенд проектов.
Модели антропика за этот же отрезок времени я использовал для генерации кода раза два.
И знаете что? Некоторая разница есть, но она мало неощутима, если придерживаться канонов вайб-проектирования.
Заходя на арку бурного развития добавлю, что еще успел поменяться и Coding Plan:
во-первых, теперь поддерживается не только Anthropic совместимый API, но и OpenAI, а значит вы можете воткнуть GLM модели почти куда угодно.
во-вторых, z.ai увидели ажиотаж и пошли еще дальше – они представили еще один уровень в Coding Plan – GLM Coding Max в котором вообще никаких лимитов нет.
На секунду хочу напомнить, тот самый lite план за 3/6 баксов (первый месяц скидка 50%) – уже дает лимитов больше чем Claude Max.(Max, НЕ Pro!)
Обновились и периоды для возможной покупки. Все тарифы можно взять на месяц, квартал или год.
Я не устоял и взял средний план – GLM Coding Pro на год на 180 баксов. В него входят лимиты x5 от базового lite, роутинг запросов на серваки с чуть более быстрым инференсом (обещают быстре lite на 40-60%, и не врут),
и два дополнительных бесплатных API (доступны через mcp с тем же токеном) – один для GLM-4.5 Vision, второй для какого-то web поиска от z.ai.
Я попробовал оба – vision работает вполне ок.
Поиск – пока совсем непонятный.
***
Причина по которой я так подсел на GLM прозаична – мне не хватает лимитов от Claude Pro, потому что у меня много-много проектов в Claude Desktop, и 3-4 из них я использую на регулярной основе для концептуального рефакторинга проектов и прочих иных, практически бытовых нужд.
И deep research на Антропик мне до сих пор нравится больше прочих. Уж извините ¯\_(ツ)_/¯
короче говоря – мне надоело одним или вторым инструментом упираться в лимиты и ждать несколько часов, мои проекты/app'ки в claude должны быть доступны всегда, когда они мне потребовались. Ровно как и агент для генерации кода.
***
В прошлый раз пост про GLM Coding Plan следовал сразу за постом про Zed. Сегодня скажу про оба :)
До вчерашнего дня я использовал GLM в основном только в opencode.
Ровно до тех пор пока не увидел про поддержку OpenAI совместимых интерфейсов.
2+2=4, бегом в доку Zed, и... GLM тут настраивается очень просто, заходите в
Авторизационнй токен надо передавать в переменной окружения, для примера настройки выше она должна называться
Поздравляю, вы в шоколаде – у вас красивый, быстрый редакторна расте 🦍 в котором можно follow-up следить за изменениями агента, ревьювить их поблочно как в Курсоре, и все это на базе модели практически ничем не хуже Sonnet 4, с отличными лимитами за 360$ в год (начиная со следующего!)
Такие дела.
Ах да, кстати! На скриншоте отвечает GLM-4.5 в Zed панельке (Я это железобетонно проверил)
В исходном коде редактора нет ни одного промпта с "Ты Claude Code!".
Вот и думайте.
@neuralstack
уже несколько человек спросили меня – А что там с codex, правда мощный?
a я и не знаю ¯\_(ツ)_/¯
Невозможно в дополнение к основной работе и прочим делам успевать перепробовать все новые инструменты.
очень уж все сейчас быстро развивается.
но касаемо codex интерес понятен. Слышно как тут и там как раздаются восхищенные вздохи
Я попытался спросить у плотно вайб-кодящих коллег - а пробовали ли они "новый" codex (в смысле на GPT-5) и средний ответ по палате звучал как-то так:
Да мне ващет на Claude Code нормально, всем меня устраивает, все хорошо.
и это еще понятнее – если инструмент удовлетворяет большую часть потребностей, то смотреть куда-то еще просто не возникает желания.
Я писал про GLM-4.5 и Coding Plan ровно неделю назад, а потом, практически все семь дней я пользовался этой LLM для разработки и проектирования разных бэкенд проектов.
Модели антропика за этот же отрезок времени я использовал для генерации кода раза два.
И знаете что? Некоторая разница есть, но она мало неощутима, если придерживаться канонов вайб-проектирования.
Заходя на арку бурного развития добавлю, что еще успел поменяться и Coding Plan:
во-первых, теперь поддерживается не только Anthropic совместимый API, но и OpenAI, а значит вы можете воткнуть GLM модели почти куда угодно.
во-вторых, z.ai увидели ажиотаж и пошли еще дальше – они представили еще один уровень в Coding Plan – GLM Coding Max в котором вообще никаких лимитов нет.
На секунду хочу напомнить, тот самый lite план за 3/6 баксов (первый месяц скидка 50%) – уже дает лимитов больше чем Claude Max.
Обновились и периоды для возможной покупки. Все тарифы можно взять на месяц, квартал или год.
Я не устоял и взял средний план – GLM Coding Pro на год на 180 баксов. В него входят лимиты x5 от базового lite, роутинг запросов на серваки с чуть более быстрым инференсом (обещают быстре lite на 40-60%, и не врут),
и два дополнительных бесплатных API (доступны через mcp с тем же токеном) – один для GLM-4.5 Vision, второй для какого-то web поиска от z.ai.
Я попробовал оба – vision работает вполне ок.
Поиск – пока совсем непонятный.
***
Причина по которой я так подсел на GLM прозаична – мне не хватает лимитов от Claude Pro, потому что у меня много-много проектов в Claude Desktop, и 3-4 из них я использую на регулярной основе для концептуального рефакторинга проектов и прочих иных, практически бытовых нужд.
И deep research на Антропик мне до сих пор нравится больше прочих. Уж извините ¯\_(ツ)_/¯
короче говоря – мне надоело одним или вторым инструментом упираться в лимиты и ждать несколько часов, мои проекты/app'ки в claude должны быть доступны всегда, когда они мне потребовались. Ровно как и агент для генерации кода.
***
В прошлый раз пост про GLM Coding Plan следовал сразу за постом про Zed. Сегодня скажу про оба :)
До вчерашнего дня я использовал GLM в основном только в opencode.
Ровно до тех пор пока не увидел про поддержку OpenAI совместимых интерфейсов.
2+2=4, бегом в доку Zed, и... GLM тут настраивается очень просто, заходите в
settings.json и добавляете что-то вроде:***
"language_models": {
"openai_compatible": {
"ZAI": {
"api_url": "https://api.z.ai/api/coding/paas/v4",
"available_models": [
{
"name": "glm-4.5",
"display_name": "GLM-4.5",
"max_tokens": 128000
}
]
}
}
},
***Авторизационнй токен надо передавать в переменной окружения, для примера настройки выше она должна называться
ZAI_API_KEY.Поздравляю, вы в шоколаде – у вас красивый, быстрый редактор
Такие дела.
Ах да, кстати! На скриншоте отвечает GLM-4.5 в Zed панельке (Я это железобетонно проверил)
В исходном коде редактора нет ни одного промпта с "Ты Claude Code!".
Вот и думайте.
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
crush агента.
Вчера у меня резко перестал работать opencode, и я наконец нашел причину попробовать crush
Проблема, кстати, была смешная – один из mcp серверов в докере не поднялся, и opencode просто перестал работать не объясняя в интерфейсе никаких ошибки. Это плохо.
Crush хорош. Я уже упоминал его, указывая что не поддерживаются серые методы использования подписок Claude Code (как в opencode, например ;) и работает только с API моделей.
Crush написан на Go, умеет в lsp и mcp, и выглядит получше.
Как минимум crush удобен своей легковестностью для внедрения AI в unix стиле (пайплайны и вот это все) во всякие DevOps и DevEx процессы. Мне не хочется тащить без острой надобности рантайм ноды чтобы запускать opencode или СС на маленьких раннерах, например.
Но если рассматривать его с прикладной vibe-code стороны есть несколько серьезных минусов.
В данный момент в crush нет возможности создавать пресеты своих агентов. В исходном коде зашито несколько промптов для основного агента и под-агента выполняющего мелкие задачи по плану. Да, это неплохие промпты, но все же.
В opencode же функциональные возможности позволяют создавать практически неограниченное число агентов, под-агентов и здавать правила взаимодействий между друг другом. Легко адоптируются штуки вроде AgentOS
LSP, и разумеется - MCP в opencode тоже поддерживаются. Даже больше – там можно делать свои команды, есть возможность запускать opencode как сервер, sdk для кастомных клиентов, и плагины которые открывают возможность слушать события opencode'а и расширять функционал (с доступом к контексту сессии). Базовый пример из документации – слать уведомления когда агент закончил работу.
Все это ценой чуть(или не чуть) большей тяжеловесности, чем crush.
Лично мне crush с точки зрения UI и DX нравится больше – он отображает оставшийся контекст, хорошо компанует его, есть индикаторы подключенных LSP и MCP серверов (часто их надо выключать), и единственное чего не хватает, это пусть даже не под-агенты, но просто возможность преднастраивать агентов "сверху".
В общем идеал лежит где то между. А может идеал это все еще claude code?✏️
@neuralstack
Вчера у меня резко перестал работать opencode, и я наконец нашел причину попробовать crush
Crush хорош. Я уже упоминал его, указывая что не поддерживаются серые методы использования подписок Claude Code (как в opencode, например ;) и работает только с API моделей.
Crush написан на Go, умеет в lsp и mcp, и выглядит получше.
Как минимум crush удобен своей легковестностью для внедрения AI в unix стиле (пайплайны и вот это все) во всякие DevOps и DevEx процессы. Мне не хочется тащить без острой надобности рантайм ноды чтобы запускать opencode или СС на маленьких раннерах, например.
Но если рассматривать его с прикладной vibe-code стороны есть несколько серьезных минусов.
В данный момент в crush нет возможности создавать пресеты своих агентов. В исходном коде зашито несколько промптов для основного агента и под-агента выполняющего мелкие задачи по плану. Да, это неплохие промпты, но все же.
В opencode же функциональные возможности позволяют создавать практически неограниченное число агентов, под-агентов и здавать правила взаимодействий между друг другом. Легко адоптируются штуки вроде AgentOS
LSP, и разумеется - MCP в opencode тоже поддерживаются. Даже больше – там можно делать свои команды, есть возможность запускать opencode как сервер, sdk для кастомных клиентов, и плагины которые открывают возможность слушать события opencode'а и расширять функционал (с доступом к контексту сессии). Базовый пример из документации – слать уведомления когда агент закончил работу.
Все это ценой чуть
Кстати, раньше core разработчики обоих проектов работали над одним агентом вместе, потом разругались и разошлись. Там все очень мутно, грустно и не хочется в это вникать, но изначальный автор старого opencode (Kujtim Hoxha) пошел в Charm получатькрышуфинансирование и развивать переписанного агента под именем Crush, а двум другим (Dax и Adam) оставили название opencode.
Лично мне crush с точки зрения UI и DX нравится больше – он отображает оставшийся контекст, хорошо компанует его, есть индикаторы подключенных LSP и MCP серверов (часто их надо выключать), и единственное чего не хватает, это пусть даже не под-агенты, но просто возможность преднастраивать агентов "сверху".
В общем идеал лежит где то между. А может идеал это все еще claude code?
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
evaluation тесты.
Eval тесты можно ненавидеть, eval тесты можно любить.
Eval тесты можно не понимать. Eval тестов можно боятся как дополнительный источник затрат на токены🤵
Но их нельзя не писать для любой AI системы которая хотя бы на один порядок сложнее и нужнее weather api агента.
Точнее как… не писать их конечно можно, но вот не делать их вовсе – невозможно.
Если вы говорите что у вас совсем нет eval’ов, то вы просто обманываете сами себя.
Вы ведь запускаете систему хотя бы для мануального тестирования, чтобы проверить работает ли оно вообще?
Ну вот! Медленный, крайне неэффективный, мануальный – но это eval тест.
Для меня разработка eval тестов это неотъемлемая часть внедрения AI на любой бэкенд, который обслуживает живых людей и бизнес.
***
Под сложностью системы я тут подразумеваю прямую отвественность, которая налагается на нее в смысле функциональности.
Под нужностью, я имею в виду непосредственно "продуктовость."
Часто получается так, что чем "нужность" больше, тем больше требуется точности в смысле отсутствия галлюцинаций, предсказуемости работы.
В старом software 1.0 мире программные системы которые живут без покрытия юнит и интеграционными тестами – это база :)
Представить успешный AI продукт, действительно бизнес продукт, без набора e2e/eval тестов я просто не могу.
Зато я могу представить стартап в котором появились и инвестиции, и даже клиенты, а потом спешно нанимался штат из десятков специалистов, работой которых являлось высматривание «продукта» глазами и исправление косяков руками.
С несколькими такими стартапами я общался в формате микро-консультаций.
Знаете чего у них не было?
Правильно – тестов. Вообще. Никаких.
Знаете где они? Либо уже, либо вот-вот – нигде.
Справедливости ради, наверное есть два случая, когда можно обойтись условно меньшим числом строгих eval'ов.
Помимо чрезвычайной простоты кейса, второй случай это когда у нас команда с абсолютной экспертизой в домене и фактически религиозным dogfooding'ом.
Но давайте будем честны с собой... Насколько часто такое встречается?
***
Самое коварное в системе-хорадрическом кубике без eval тестов и других страховочных механизмов то что она может ждать долго, выдавать вполне нормальные результаты пока, например, формат или язык входных данных не изменится.
А самое опасное сейчас – это анти-eval пропаганда в комьюнити. Не ведитесь на нее.
Пишите тесты чем раньше тем лучше. А лучше – сразу. Фиксируйте свои ожидания в коде.
На картинке плашка из документации pydantic-ai со страницы про pydantic-evals.
@neuralstack
Eval тесты можно ненавидеть, eval тесты можно любить.
Eval тесты можно не понимать. Eval тестов можно боятся как дополнительный источник затрат на токены
Но их нельзя не писать для любой AI системы которая хотя бы на один порядок сложнее и нужнее weather api агента.
Точнее как… не писать их конечно можно, но вот не делать их вовсе – невозможно.
Если вы говорите что у вас совсем нет eval’ов, то вы просто обманываете сами себя.
Вы ведь запускаете систему хотя бы для мануального тестирования, чтобы проверить работает ли оно вообще?
Ну вот! Медленный, крайне неэффективный, мануальный – но это eval тест.
Для меня разработка eval тестов это неотъемлемая часть внедрения AI на любой бэкенд, который обслуживает живых людей и бизнес.
***
Под сложностью системы я тут подразумеваю прямую отвественность, которая налагается на нее в смысле функциональности.
Под нужностью, я имею в виду непосредственно "продуктовость."
Часто получается так, что чем "нужность" больше, тем больше требуется точности в смысле отсутствия галлюцинаций, предсказуемости работы.
В старом software 1.0 мире программные системы которые живут без покрытия юнит и интеграционными тестами – это база :)
Представить успешный AI продукт, действительно бизнес продукт, без набора e2e/eval тестов я просто не могу.
Зато я могу представить стартап в котором появились и инвестиции, и даже клиенты, а потом спешно нанимался штат из десятков специалистов, работой которых являлось высматривание «продукта» глазами и исправление косяков руками.
С несколькими такими стартапами я общался в формате микро-консультаций.
Знаете чего у них не было?
Правильно – тестов. Вообще. Никаких.
Знаете где они? Либо уже, либо вот-вот – нигде.
Справедливости ради, наверное есть два случая, когда можно обойтись условно меньшим числом строгих eval'ов.
Помимо чрезвычайной простоты кейса, второй случай это когда у нас команда с абсолютной экспертизой в домене и фактически религиозным dogfooding'ом.
Но давайте будем честны с собой... Насколько часто такое встречается?
***
Самое коварное в системе-хорадрическом кубике без eval тестов и других страховочных механизмов то что она может ждать долго, выдавать вполне нормальные результаты пока, например, формат или язык входных данных не изменится.
А самое опасное сейчас – это анти-eval пропаганда в комьюнити. Не ведитесь на нее.
Пишите тесты чем раньше тем лучше. А лучше – сразу. Фиксируйте свои ожидания в коде.
На картинке плашка из документации pydantic-ai со страницы про pydantic-evals.
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
codex (cli и cloud).
Я обещал, а раз обещал – наконец начал пробовать "новый" codex.
При том в обоих форматах – cli и облачный асинхронный.
tldl; Ну... ничего особенного не замечено.
Не плохого, ни восхищенно хорошего сказать не могу.
Облачный codex был и до этого хорош, стал ли он лучше? Ну мое имхо такое – кардинально еще лучше он станет когда появится возможность:
- А) Собирать свои контейнеры в которых будет запускаться агенты
- B) Появится возможность добавить принудительный тул-хук который будет вызываться всегда перед тем как завершать задачу
Сейчас есть возможность указать скрипт/команды которые будут выполняться на старте, и на прогреве закешированного контейнера.
Конечно, можно приказать в AGENTS.md – "всегда всегда выполняй make check && make format && make type_check && make test!!!", но много лучше было бы тут добавить некоторого детерминизма :)
***
Ладно, позитивное – я не воткнулся в лимиты пока вот вообще (обычный ChatGPT Plus), хотя и мучал codex большую часть дня.
Поэтому будем считать это промежуточным фидбеком✋
Мое мнение тут конечно крайне субъективное, я не гоняю никаких своих или чужих бенчмарков вроде one-shot "Сделай мне 3D игру на Godot", как некоторые ребята на ютубе.
Скорее наоборот, чисто эмпирическое имхо в рабочих задачах, среди которых подавляющее большинство это или разработка бэкенда (с LLM и без), DevOps (yaml senior development), и ворочания проектными данными туда сюда для системного проектирования и концептуального рефакторинга.
и это мое имхо пока такое, что особой разницы я с sonnet 4.5 или GLM 4.6 не вижу вообще.(ну с sonnet уж точно)
А то что GPT-5-codex очень уж имеет сильный биас к тому чтобы вместо unix тулов все делать на Питоне я отношусь пока со смутными сомнениями.
p.s. А вы помните как прикольно работалось с sonnet 3.5? Не помните? Может потому что мега-кардинально ничего не поменялось, и сейчас ассистенты круче просто потому что тулинг вырос вокруг и тд? :)
@neuralstack
Я обещал, а раз обещал – наконец начал пробовать "новый" codex.
При том в обоих форматах – cli и облачный асинхронный.
tldl; Ну... ничего особенного не замечено.
Не плохого, ни восхищенно хорошего сказать не могу.
Облачный codex был и до этого хорош, стал ли он лучше? Ну мое имхо такое – кардинально еще лучше он станет когда появится возможность:
- А) Собирать свои контейнеры в которых будет запускаться агенты
- B) Появится возможность добавить принудительный тул-хук который будет вызываться всегда перед тем как завершать задачу
Сейчас есть возможность указать скрипт/команды которые будут выполняться на старте, и на прогреве закешированного контейнера.
Конечно, можно приказать в AGENTS.md – "всегда всегда выполняй make check && make format && make type_check && make test!!!", но много лучше было бы тут добавить некоторого детерминизма :)
***
Ладно, позитивное – я не воткнулся в лимиты пока вот вообще (обычный ChatGPT Plus), хотя и мучал codex большую часть дня.
Поэтому будем считать это промежуточным фидбеком
Мое мнение тут конечно крайне субъективное, я не гоняю никаких своих или чужих бенчмарков вроде one-shot "Сделай мне 3D игру на Godot", как некоторые ребята на ютубе.
Скорее наоборот, чисто эмпирическое имхо в рабочих задачах, среди которых подавляющее большинство это или разработка бэкенда (с LLM и без), DevOps (yaml senior development), и ворочания проектными данными туда сюда для системного проектирования и концептуального рефакторинга.
и это мое имхо пока такое, что особой разницы я с sonnet 4.5 или GLM 4.6 не вижу вообще.
А то что GPT-5-codex очень уж имеет сильный биас к тому чтобы вместо unix тулов все делать на Питоне я отношусь пока со смутными сомнениями.
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
ai workslop чать 1.
Начинаем безжалостный концептуальный рефакторинг "Внедрения AI".
"Как же меня
Я очень хочу чтобы вам это было не знакомо, даже чтобы вы вообще с этим не сталкивались, но к сожалению... об этой проблеме пишут все больше и больше.
Бессистемно закинуть в компанию корпоративные подписки на нейросетевые инструменты в надежде что это позитивно повлияет на продуктивность много хуже чем бессистемно вводить scrum/agile процессы.
Последнее менее разрушительно, потому что люди попросту найдут способ работать так же как раньше, и замедление новым бесполезным формализмом(бесполезным, потому что часто не подбит под прикладную область и оторван от реальности.) размажется по рабочему пайплайну равномерным слоем.
Бессистемно закинуть в рабочий процесс LLM всегда хуже. Ну, вы помните – хорадрический куб 🙂
Подходы системной инженерии в организации работ в принципе плохо распространены – мало кто разрабатывает, именно – разрабатывает, а не просто внедряет методы работы.
Из за этого мы часто встречаемся с двумя бедами:
1. Bottlenecks (замедления)
2. Rework (переработки, в смысле исправлений-переделываний)
Если bottleneck можно относительно просто найти и устранить, то постоянный rework - индикатор системной проблемы.
Так вот, когда мы закидываем в сотрудников LLM без каких либо минимальных формальных требований к работе с этим новым инструментом, мы часто получаем огромное количество и замедлений, и переработок.
Как это проявляется?
LLM сейчас способны порождать много разных штук в разных модальностях – тут тебе и картинки с текстом, и документы, и просто текст для всякхи отчетов, и таблицы, и код. Среднестатистический сотрудник, не имея формальных указаний (хотя бы ревьювить результаты работы ЛЛМ и помечать "продукт" явной меткой "Я это сгенерил!") естественным образом работает/генерирует спустя рукава.
А потом ты тратишь лишние, если не часы, то десятки минут на расшифровку раздутых и зачастую мало отражающих действительность документаций, комментов в пулл реквестах, изменений в кодовой базе и тд.
Это уже замедление.
Дальше ключевой момент - начинается психотеррор, например:
Джун пишет тех дизайн с помощью ChatGPT на 12 страниц.
Senior/Техлид тратит 1.5 часа на чтение, потом еще ~час на встречу в попытке выяснить "а что здесь важно?"
В итоге сам переписывает спеку на 2 страницы за 30 минут.
Потеряна куча продуктивного времени команды.
И что еще хуже, зачастую наносится моральный урон: джун не понимает что не так (ему просто не хватает пока компенции даже увидеть что ЛЛМ выдала ерунду), а техлид выгорает, потому что ничего с этим не может сделать (особенно если повестка компании – "AI во все процессы, полный вперде!", без методичек/ограничителей)
А теперь представим что ситуация повторяется несколько раз в неделю.😵
И все это снежный ком – не все такие блобы получится исправить. С некоторой частью придется жить дальше. Если это документация, то замедлятся будут все и много раз пытаясь вычитать суть. В конце концов в эту документацию просто перестанут заглядывать.
---
Эти проблемы не повод переходить на сторону LLM-луддитов, ну уж нет! Толково внедряемый AI чертовски полезен.
Это всего лишь повод порефлексировать, задуматься.
Проведите простой тест: попросите 3-5 коллег описать "как мы используем AI в работе?"
Если получите совсем разные ответы - у вас нет AI-стратегии, есть AI-хаос. Вам надо стремиться к ответам – "Ну так в Engineering Handbook лежат правила и чеклисты, вы ж сами их внедрили, вот мы по ним и работаем, забыли?"
@neuralstack
Начинаем безжалостный концептуальный рефакторинг "Внедрения AI".
"Как же меня
задолбало расшифровывать этот LLM-блоб, ну сколько можно?!"Я очень хочу чтобы вам это было не знакомо, даже чтобы вы вообще с этим не сталкивались, но к сожалению... об этой проблеме пишут все больше и больше.
Бессистемно закинуть в компанию корпоративные подписки на нейросетевые инструменты в надежде что это позитивно повлияет на продуктивность много хуже чем бессистемно вводить scrum/agile процессы.
Последнее менее разрушительно, потому что люди попросту найдут способ работать так же как раньше, и замедление новым бесполезным формализмом
Бессистемно закинуть в рабочий процесс LLM всегда хуже. Ну, вы помните – хорадрический куб 🙂
Подходы системной инженерии в организации работ в принципе плохо распространены – мало кто разрабатывает, именно – разрабатывает, а не просто внедряет методы работы.
Из за этого мы часто встречаемся с двумя бедами:
1. Bottlenecks (замедления)
2. Rework (переработки, в смысле исправлений-переделываний)
Если bottleneck можно относительно просто найти и устранить, то постоянный rework - индикатор системной проблемы.
Так вот, когда мы закидываем в сотрудников LLM без каких либо минимальных формальных требований к работе с этим новым инструментом, мы часто получаем огромное количество и замедлений, и переработок.
Как это проявляется?
LLM сейчас способны порождать много разных штук в разных модальностях – тут тебе и картинки с текстом, и документы, и просто текст для всякхи отчетов, и таблицы, и код. Среднестатистический сотрудник, не имея формальных указаний (хотя бы ревьювить результаты работы ЛЛМ и помечать "продукт" явной меткой "Я это сгенерил!") естественным образом работает/генерирует спустя рукава.
А потом ты тратишь лишние, если не часы, то десятки минут на расшифровку раздутых и зачастую мало отражающих действительность документаций, комментов в пулл реквестах, изменений в кодовой базе и тд.
Это уже замедление.
Дальше ключевой момент - начинается психотеррор, например:
Джун пишет тех дизайн с помощью ChatGPT на 12 страниц.
Senior/Техлид тратит 1.5 часа на чтение, потом еще ~час на встречу в попытке выяснить "а что здесь важно?"
В итоге сам переписывает спеку на 2 страницы за 30 минут.
Потеряна куча продуктивного времени команды.
И что еще хуже, зачастую наносится моральный урон: джун не понимает что не так (ему просто не хватает пока компенции даже увидеть что ЛЛМ выдала ерунду), а техлид выгорает, потому что ничего с этим не может сделать (особенно если повестка компании – "AI во все процессы, полный вперде!", без методичек/ограничителей)
А теперь представим что ситуация повторяется несколько раз в неделю.
И все это снежный ком – не все такие блобы получится исправить. С некоторой частью придется жить дальше. Если это документация, то замедлятся будут все и много раз пытаясь вычитать суть. В конце концов в эту документацию просто перестанут заглядывать.
---
Эти проблемы не повод переходить на сторону LLM-луддитов, ну уж нет! Толково внедряемый AI чертовски полезен.
Это всего лишь повод порефлексировать, задуматься.
Проведите простой тест: попросите 3-5 коллег описать "как мы используем AI в работе?"
Если получите совсем разные ответы - у вас нет AI-стратегии, есть AI-хаос. Вам надо стремиться к ответам – "Ну так в Engineering Handbook лежат правила и чеклисты, вы ж сами их внедрили, вот мы по ним и работаем, забыли?"
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
Harvard Business Review
AI-Generated “Workslop” Is Destroying Productivity
Despite a surge in generative AI use across workplaces, most companies are seeing little measurable ROI. One possible reason is because AI tools are being used to produce “workslop”—content that appears polished but lacks real substance, offloading cognitive…
🌭2 2 2
что там происходит у Гугла 🙂
Во-первых, похоже(хочется верить) что совсем вот-вот должна выйти Gemini 3.0.
Если не на этой, то на следующей неделе, ну или край – в этой месяце(пожалуйста 💧 )
На это как будто указывают триал доступы для всяких vibe-coding блоггеров, например вот видео.
Конечно же мое отношение скептическое, надо дождаться и пробовать самому. Но даже если все утечки бенчмарков окажутся уткой (на которых gemini 3.0 просто в пух и прах разбивает gpt-5), Jules сейчас приковал мое внимание.
Во-вторых, да – Jules, это очередной асинхнронный агент для запуска задач, похожий на codex cloud, но последний я все таки пока выкинул, буквально сегодня отменил подписку на chatgpt plus ¯\_(ツ)_/¯
Codex CLI мне вообще не зашел, а облачный агент хорош, но применять его пока словно не куда, просто нет подходящих проектов.
Что я имею в виду под подходящими? Ну, самое болезненное, это постоянный контекст-свитчинг. И уведомления тут не помогут.
Поэтому хотя запускать асинхронные задачи и прикольно, и может быть удобно, если работа ведется не над сайд проектом, а одним основным на котором мы полностью фокусируемся, например отдаем в codex задачи из изолированного модуля, пока работаем над другими.
Либо второй вариант – мы все таки работаем над двумя важными проектами, но один чуть менее важный и срочный, вот его и отдаем в асинхронное, и 2-3 раза в день полностью переключаемся на проверку и запуск новых задач (или задач на исправление).
В любом случае цикл – ревью, правка, ревью, правка и отсутствие удобного интерфейса чтобы быстро спулить ветку локально и мануально проверить изменения навевает тоску.
Jules от гугла в первую очередь решает это – есть cli "Jules tools" который позволяет спулить изменения в терминале, запустить новые задачу, посмотреть историю и все такое прочее. Круто? Помоему круто. Много круче чем переключаться на браузер, и там вошкаться)
Еще у Jules есть память про репы, и это хорошо. Любая память всегда (почти всегда) полезна, особенно когда надо внедрять AI на бэкенд.
И по этому поводу вот что еще круче – API. Пусть оно и сыровато, но самая идея мне нравится. Это не просто привычный LLM API, а именно API для Jules, на базе которого можно будет писать свои кастомные воркфлоу для ваших подключенных гитхаб реп. Оно пока в альфе, но я очень надеюсь на разработку и насыщение функционалом.
Так что тут уже не только про внедрение на бэк для бизнеса, но и про удобное внедрение в dev процессы. Нравится!
Я не бегу пока плотно тестить Jules, потому что пусть он и покруче выглядит, пока кажется что это все равно та же история про отвлечения и переключения контекста. Лучше все таки дождаться 3.0, и сразу попробовать ее везде. Но, честно – предвосхищаю круть :)
Если Gemini 3.0 войдет в Google AI Pro подписку за 20 баксов без повышения цены, то это будут, пожалуй, самые выгодные 20 баксов на AI.
Там тебе и в почте gemini, и Veo3, и Jules и еще больше Gemini CLI, и NotebookLM... Молодцы, ниче не скажешь❤️
Пожалуйста, расскажите в комментах, если вы уже пробовали работать с Jules и у вас сформировалось какое то представление.
@neuralstack
Во-первых, похоже
Если не на этой, то на следующей неделе, ну или край – в этой месяце
На это как будто указывают триал доступы для всяких vibe-coding блоггеров, например вот видео.
Конечно же мое отношение скептическое, надо дождаться и пробовать самому. Но даже если все утечки бенчмарков окажутся уткой (на которых gemini 3.0 просто в пух и прах разбивает gpt-5), Jules сейчас приковал мое внимание.
Во-вторых, да – Jules, это очередной асинхнронный агент для запуска задач, похожий на codex cloud, но последний я все таки пока выкинул, буквально сегодня отменил подписку на chatgpt plus ¯\_(ツ)_/¯
Codex CLI мне вообще не зашел, а облачный агент хорош, но применять его пока словно не куда, просто нет подходящих проектов.
Что я имею в виду под подходящими? Ну, самое болезненное, это постоянный контекст-свитчинг. И уведомления тут не помогут.
Поэтому хотя запускать асинхронные задачи и прикольно, и может быть удобно, если работа ведется не над сайд проектом, а одним основным на котором мы полностью фокусируемся, например отдаем в codex задачи из изолированного модуля, пока работаем над другими.
Либо второй вариант – мы все таки работаем над двумя важными проектами, но один чуть менее важный и срочный, вот его и отдаем в асинхронное, и 2-3 раза в день полностью переключаемся на проверку и запуск новых задач (или задач на исправление).
В любом случае цикл – ревью, правка, ревью, правка и отсутствие удобного интерфейса чтобы быстро спулить ветку локально и мануально проверить изменения навевает тоску.
Jules от гугла в первую очередь решает это – есть cli "Jules tools" который позволяет спулить изменения в терминале, запустить новые задачу, посмотреть историю и все такое прочее. Круто? Помоему круто. Много круче чем переключаться на браузер, и там вошкаться)
Еще у Jules есть память про репы, и это хорошо. Любая память всегда (почти всегда) полезна, особенно когда надо внедрять AI на бэкенд.
И по этому поводу вот что еще круче – API. Пусть оно и сыровато, но самая идея мне нравится. Это не просто привычный LLM API, а именно API для Jules, на базе которого можно будет писать свои кастомные воркфлоу для ваших подключенных гитхаб реп. Оно пока в альфе, но я очень надеюсь на разработку и насыщение функционалом.
Так что тут уже не только про внедрение на бэк для бизнеса, но и про удобное внедрение в dev процессы. Нравится!
Я не бегу пока плотно тестить Jules, потому что пусть он и покруче выглядит, пока кажется что это все равно та же история про отвлечения и переключения контекста. Лучше все таки дождаться 3.0, и сразу попробовать ее везде. Но, честно – предвосхищаю круть :)
Если Gemini 3.0 войдет в Google AI Pro подписку за 20 баксов без повышения цены, то это будут, пожалуй, самые выгодные 20 баксов на AI.
Там тебе и в почте gemini, и Veo3, и Jules и еще больше Gemini CLI, и NotebookLM... Молодцы, ниче не скажешь
Пожалуйста, расскажите в комментах, если вы уже пробовали работать с Jules и у вас сформировалось какое то представление.
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
🌭2 2
техническое поражение в AI кодинг битве засчитываю облачному codex 😠
Решил я, значит, устроить дуель между Jules и Codex Cloud.
Остороно – Юмористическое.
Дано:
- Простецкий проект на питоне, где есть молотилка векторов, chroma, sqlite и все это обернуто в mcp сервер (ну да да, типичная AI раг на бэкенде)
- Крайней разжованный implementation_plan.md в под-директории
Задача с одинаковым oneshot промптом, tldr – "вот те репа, вот те сабдир с планом, давай делай"
Идея была пойти спокойно поспать и утром посмотреть на результаты.
Я, все таки, ставил на codex, ну... ну хвалят же за работу с большими блобами!?
Но уснуть я не успел😁
Результат работы codex cloud вы видите на кринж-шоте поста. Пояснений не дает, ни в логах ни в ответах.
Jules, бедолага, бадается упорно, утром посмотрим что сделает)
@neuralstack
Решил я, значит, устроить дуель между Jules и Codex Cloud.
Остороно – Юмористическое.
Дано:
- Простецкий проект на питоне, где есть молотилка векторов, chroma, sqlite и все это обернуто в mcp сервер (ну да да, типичная AI раг на бэкенде)
- Крайней разжованный implementation_plan.md в под-директории
Задача с одинаковым oneshot промптом, tldr – "вот те репа, вот те сабдир с планом, давай делай"
Идея была пойти спокойно поспать и утром посмотреть на результаты.
Я, все таки, ставил на codex, ну... ну хвалят же за работу с большими блобами!?
Но уснуть я не успел
Результат работы codex cloud вы видите на кринж-шоте поста. Пояснений не дает, ни в логах ни в ответах.
Jules, бедолага, бадается упорно, утром посмотрим что сделает)
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
ai workslop часть 2.
Привет, часть 1 была тут.
А часть 2... Я начал писать ее на тему того что работает и не работает в AI ассистированном программировании. Все шло хорошо до тех пор, пока мне не попалась под руку очередная статья с откровенной брехней. А брехня это всегда золотой материал для концептуального рефакторинга :)
Разбирая эту брехню (без ссылок на источник, ибо делиться этим я не хочу; Вы итак подобное читали скорее всего уже несколько раз) и свой совсем свежий, насильно неадекватный экспримент, я написал маленький лонгрид (10к символов) который можно прочитать на моем сайте.
Милости прошу -≥ тыц.
TL;DR:
Кстати, на тему вайб кодинга и прочей разработки с LLM ассистентами сегодня будет онлайн конфа на которую вы можете попасть бесплатно:
https://www.ai-dev.live/
Первый доклад стартует в 14:00 GMT+3
Всех ребят я читаю, и имхо – все на правильной стороне луны.
За рекламу мне никто не платил, рекомендую присоединяться от чистого сердца💖
@neuralstack
Привет, часть 1 была тут.
А часть 2... Я начал писать ее на тему того что работает и не работает в AI ассистированном программировании. Все шло хорошо до тех пор, пока мне не попалась под руку очередная статья с откровенной брехней. А брехня это всегда золотой материал для концептуального рефакторинга :)
Разбирая эту брехню (без ссылок на источник, ибо делиться этим я не хочу; Вы итак подобное читали скорее всего уже несколько раз) и свой совсем свежий, насильно неадекватный экспримент, я написал маленький лонгрид (10к символов) который можно прочитать на моем сайте.
Милости прошу -≥ тыц.
TL;DR:
“10 PR в день” и “$12k на токены” - в ваккуме это красные флаги карго-культа, а не показатели продуктивности
Спецификации ≠ реальность. Код выражает инварианты системы, которые нужно понимать, а не просто генерировать
Мой эксперимент: переписывание 5k строк без просмотра кода заняло 3 дня вместо 1. На каждой задаче нужны были правки
Правильный подход: AI генерит → ты проверяешь. Human-in-the-loop это не опция а необходимость
Реальные метрики: не количество PR, а стабильность в проде, покрытие тестами и понимание кодовой базы командой
Кстати, на тему вайб кодинга и прочей разработки с LLM ассистентами сегодня будет онлайн конфа на которую вы можете попасть бесплатно:
https://www.ai-dev.live/
Первый доклад стартует в 14:00 GMT+3
Всех ребят я читаю, и имхо – все на правильной стороне луны.
За рекламу мне никто не платил, рекомендую присоединяться от чистого сердца
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
дешевый но хороший OCR документов.
Не так давно мне довелось иметь честь недолго участвовать в поддержке OCR проекта, ядром которого была такаякорявенькая библиотека-шаблонизатор промптов как BAML.
Вообще, типичное такое внедрение AI на бэк с наскока – модели в проекте использовались большие (openai, google), а разультаты... Ну скажем так – результаты были неплохие, но оставляли желать лучшего.
В проекте было достаточно популярных проблем (вроде отсутствия достаточного количества eval тестов), но главной технической проблемой, по моему мнению, являлся как раз таки BAML.
Почему? Ответ прозаичен – BAML не умеет в Structured Output моделей и не хочет в него уметь. Нет SO – нет SGR. Нет SGR – нет возможности без мучений моделировать и создавать надежные AI системы.
***
К сожалению, я не успел внедрить SGR в тот проект (хотя мои тесты и показали что SGR работал с теми же моделями лучше, а иногда даже быстрее – в проекте были другие приоритеты).
И вот меня не покидала идея попробовать сделать OCR на маленьких VLM моделях.
Благодаря Валерию, который сейчас хостит Qwen3 VL 8B Instruct и бесплатно дает ее попробовать, я наконец закрыл этот гештальт :)
Главная цель была набросать OCR фотографий чеков;
Результат... просто отличный!☀️
Наколеночный POC вы можете посмотреть в этом репозитории, забрать себе и попробовать запустить OCR сами.
Это очень ограниченная, простая реализация чтобы просто проверить модель. Продуктовая OCR система, разумеется, потребует некоторых важных доработок (подсказываю в
Но этого сниппета достаточно чтобы:
- посмотреть неплохой пример SGR
- набросать туда побольше файлов и тестов чтобы оценить качество этой или других VLM моделей предметно.
А квен этот мне очень нравится! Год-полтора назад мне сложно было представить что так дешево можно собрать вполне себе качественный и умный OCR.
@neuralstack
Не так давно мне довелось иметь честь недолго участвовать в поддержке OCR проекта, ядром которого была такая
Вообще, типичное такое внедрение AI на бэк с наскока – модели в проекте использовались большие (openai, google), а разультаты... Ну скажем так – результаты были неплохие, но оставляли желать лучшего.
В проекте было достаточно популярных проблем (вроде отсутствия достаточного количества eval тестов), но главной технической проблемой, по моему мнению, являлся как раз таки BAML.
Почему? Ответ прозаичен – BAML не умеет в Structured Output моделей и не хочет в него уметь. Нет SO – нет SGR. Нет SGR – нет возможности без мучений моделировать и создавать надежные AI системы.
***
К сожалению, я не успел внедрить SGR в тот проект (хотя мои тесты и показали что SGR работал с теми же моделями лучше, а иногда даже быстрее – в проекте были другие приоритеты).
И вот меня не покидала идея попробовать сделать OCR на маленьких VLM моделях.
Благодаря Валерию, который сейчас хостит Qwen3 VL 8B Instruct и бесплатно дает ее попробовать, я наконец закрыл этот гештальт :)
Главная цель была набросать OCR фотографий чеков;
Результат... просто отличный!
Наколеночный POC вы можете посмотреть в этом репозитории, забрать себе и попробовать запустить OCR сами.
Это очень ограниченная, простая реализация чтобы просто проверить модель. Продуктовая OCR система, разумеется, потребует некоторых важных доработок (подсказываю в
REAME.md).Но этого сниппета достаточно чтобы:
- посмотреть неплохой пример SGR
- набросать туда побольше файлов и тестов чтобы оценить качество этой или других VLM моделей предметно.
А квен этот мне очень нравится! Год-полтора назад мне сложно было представить что так дешево можно собрать вполне себе качественный и умный OCR.
@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
В вашей команде слышно такую фразу – "Если ChatGPT может, значит и мы сможем!"?
Разработчики борятся с непредсказуемостью AI систем, и в это же самое время с не-воодушевляющей частотой слышно именно эту фразу.
При том доносится она не только от менеджеров, но часто и от самих разработчиков которые пытаются внедрить AI на бекенд.
Конечно, выражение очень здорово звучит, в духе стартапа! Мы можем! Вперед! Ееее!🤟
Но одновременно с этим воодушевлением факт того что ChatGPT и OpenAI API с моделями это совершенно разные продукты опускается из внимания более чем полностью.
А заострять внимание на этой разнице важно с самого начала.
Разработчики рано или поздно это понимание обретают, когда начинают замечать разницу, в каком нибудь распознавании картинок плохого качества, например.
Только вот понимание это натурально выстрадано через стодесять переделок.
***
Когда то один веб-разработчик мне сказал – "Ну так там а чо там... Там же просто апишку open-ai дергать надо, не рокет-саенс."
Ну, конечно же не рокет-саенс. Но такое отношение недопустимо в разработке продуктовых AI решений.
ChatGPT — это система. С препроцессингом, fine-tuned промптами, какой нибудь fallback логикой, и так далее(никто не расскажет сколько там и каких примочек на самом деле :)
API — это голая модель + ваш промпт ¯\_(ツ)_/¯
Хотите результаты уровня работы ChatGPT или лучше?
Тогда проектируйте систему, а не просто дергайте API.
В каких то случаях надежное решение получается благодаря много более простым подходам. А в каких то придется и правда нагородить небольшую ракету.
Приходите на консультацию❤️
@m0n0x41d
Разработчики борятся с непредсказуемостью AI систем, и в это же самое время с не-воодушевляющей частотой слышно именно эту фразу.
При том доносится она не только от менеджеров, но часто и от самих разработчиков которые пытаются внедрить AI на бекенд.
Конечно, выражение очень здорово звучит, в духе стартапа! Мы можем! Вперед! Ееее!
Но одновременно с этим воодушевлением факт того что ChatGPT и OpenAI API с моделями это совершенно разные продукты опускается из внимания более чем полностью.
А заострять внимание на этой разнице важно с самого начала.
Разработчики рано или поздно это понимание обретают, когда начинают замечать разницу, в каком нибудь распознавании картинок плохого качества, например.
Только вот понимание это натурально выстрадано через стодесять переделок.
***
Когда то один веб-разработчик мне сказал – "Ну так там а чо там... Там же просто апишку open-ai дергать надо, не рокет-саенс."
Ну, конечно же не рокет-саенс. Но такое отношение недопустимо в разработке продуктовых AI решений.
ChatGPT — это система. С препроцессингом, fine-tuned промптами, какой нибудь fallback логикой, и так далее
API — это голая модель + ваш промпт ¯\_(ツ)_/¯
Хотите результаты уровня работы ChatGPT или лучше?
Тогда проектируйте систему, а не просто дергайте API.
В каких то случаях надежное решение получается благодаря много более простым подходам. А в каких то придется и правда нагородить небольшую ракету.
Приходите на консультацию
@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
Ваши AI агенты все еще застревает в циклах? Тогда я иду к вам! 💃
Меня вчера все таки выдернули на короткую консультацию(очень не хотелось работать в выходные.)
по проблеме стараой, доброй и прозаичной – "нам вообще не понятно почему оно периодически проваливается в бесконечный цикл tool-call вызовов."
При этом там одна *большая модель от гугла.*
В проекте использовался LlamaIndex с примерами прямо из документации :)
На удивление функциональности у агента мало, а в бесконечный цикл он провалился из-за противоречивого типа(ну точнее структуры) данных в ответах одной из функций (ну и промпт там был явно со странной структурой.)
Разобрались ровно за один часовой звонок. И вот буквально 10 минут назад мне отписались что "утром переписали, весь день тестируем и ни одного провала в циклы!"
Решили всё с помощьюсеребрянной-пули Schema Guided Reasoning – по каноничному примеру с выбором нужного тула (см тут.)
Никаких promp-издевательств.
Никаких бесконечных циклов.
¯\_(ツ)_/¯
В довесок приятно было услышать что ребята послушали мой "совет на закуску" и попробовали все таки модели подешевле – всё работает хо-ро-шо!
Вот она прелесть SGR - структурируешь и свое рассуждение и рассуждения LLM, решение работает если не одинаково, то как минимум предсказуемо на разных моделях.
Ну и денег можно сильно сэкономить :)
@m0n0x41d
Меня вчера все таки выдернули на короткую консультацию
по проблеме стараой, доброй и прозаичной – "нам вообще не понятно почему оно периодически проваливается в бесконечный цикл tool-call вызовов."
При этом там одна *большая модель от гугла.*
В проекте использовался LlamaIndex с примерами прямо из документации :)
На удивление функциональности у агента мало, а в бесконечный цикл он провалился из-за противоречивого типа
Разобрались ровно за один часовой звонок. И вот буквально 10 минут назад мне отписались что "утром переписали, весь день тестируем и ни одного провала в циклы!"
Решили всё с помощью
Никаких promp-издевательств.
Никаких бесконечных циклов.
¯\_(ツ)_/¯
В довесок приятно было услышать что ребята послушали мой "совет на закуску" и попробовали все таки модели подешевле – всё работает хо-ро-шо!
Вот она прелесть SGR - структурируешь и свое рассуждение и рассуждения LLM, решение работает если не одинаково, то как минимум предсказуемо на разных моделях.
Ну и денег можно сильно сэкономить :)
@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
Вы конечно можете закидать меня дизлайками, но правды это не поменяет:
AI не принес никаких кардинально новых проблем/задач в программную инженерию.
По крайней мере со стороны системного и программного дизайна.
***
Ну, посудите сами - разве раньше не было проблем с постоянным тушением пожаров, вечной войной с багами, медленными и разрушительными релизами? а?💣
Корни этих проблем всегда находятся где-то между:
- Проблем с тестированием; Либо тесты вообще не пишутся, либо они тестируют реализацию вместо интерфейсов;
- Высокой связности, при том не важно чего – псевдо-микросервисов в распределенном монолите, или модулей в монолите обыкновенном :)
- Серьезных затруднений в рассуждении о программных системах у наших разработчиков – мало кто реально осознает разницу между прикладным уровнем системы и уровнем ее дизайна;
- Низкой наблюдаемостью – не сразу понятно (или не понятно вообще), где что сломалось и как подступаться к дебагу;
- И так далее...
Какие же тут качественно новые вызовы со внедрением AI на бекенд?
Да существенно никаких.
Если мы не занимаемся машинным обучением, дата сатанизмом и прочим из "ядра" AI, а утилизируем готовые решения, пусть то модели по API или даже хостинг открытых моделей, не важно – все реальные боли упираются и легко вписываются в те самые "старые добрые".
Просто эти "старые" системы легче прощали ошибки, и спать ошибки тоже могли дольше.
Эти системы были много терпимее к плохой архитектуре, долго могли сохранять иллюзию надежности.
Так что для успешной разработки AI систем вам нужно не воображение и вера в чудеса, а инженерия ¯\_(ツ)_/¯
@m0n0x41d
AI не принес никаких кардинально новых проблем/задач в программную инженерию.
По крайней мере со стороны системного и программного дизайна.
***
Ну, посудите сами - разве раньше не было проблем с постоянным тушением пожаров, вечной войной с багами, медленными и разрушительными релизами? а?
Корни этих проблем всегда находятся где-то между:
- Проблем с тестированием; Либо тесты вообще не пишутся, либо они тестируют реализацию вместо интерфейсов;
- Высокой связности, при том не важно чего – псевдо-микросервисов в распределенном монолите, или модулей в монолите обыкновенном :)
- Серьезных затруднений в рассуждении о программных системах у наших разработчиков – мало кто реально осознает разницу между прикладным уровнем системы и уровнем ее дизайна;
- Низкой наблюдаемостью – не сразу понятно (или не понятно вообще), где что сломалось и как подступаться к дебагу;
- И так далее...
Какие же тут качественно новые вызовы со внедрением AI на бекенд?
Да существенно никаких.
Если мы не занимаемся машинным обучением, дата сатанизмом и прочим из "ядра" AI, а утилизируем готовые решения, пусть то модели по API или даже хостинг открытых моделей, не важно – все реальные боли упираются и легко вписываются в те самые "старые добрые".
Просто эти "старые" системы легче прощали ошибки, и спать ошибки тоже могли дольше.
Эти системы были много терпимее к плохой архитектуре, долго могли сохранять иллюзию надежности.
Так что для успешной разработки AI систем вам нужно не воображение и вера в чудеса, а инженерия ¯\_(ツ)_/¯
@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
#ai_on_backend
Кто-бы как не любил (или наоборот - бурно обожал Питон), но он пока остается, если не самым, то одним из самых удобных языков для быстрой разработки AI и не AI бэкенд систем.
Ну правда ведь одно удовольствие расписывать SGR на Pydantic моделях и красиво отдавать на запрос. А с Pydantic-AI еще красивее. А FastAPI, FastMCP... Ну сказка 100x разработчика!
Но по разным причинам у нас не всегда есть/оправдан Питон ¯\_(ツ)_/¯
***
Хорошо если AI компонент системы легко выделяется и можно просто "рядом" запустить его как сервис.
Плохо если AI либо уже как-то внедряли (и перевязали с бизнес логикой слишком туго), либо сам дизайн просится "по месту в модуле" в целях сохранения этой самой модульности или ее видимости.
>Например в бэкенд монолите плотно намешана работа, и надо туда нормально внедрить AI. Это просто тупо дешевле чем переписывать несколько кусков и выносить в отдельный сервис. Ну... просто ничем не оправданно.
***
Так что там с _хорошими библиотеками_ в других языках?
tl;dr – на фоне Пайдентиков Питона все не так лучезарно, но все еще неплохо. Если вы четко уверены что будете использовать OpenAI или OpenAI Compatible интерфейс, думать нечего – смотрите сразу на клиенты поддерживаемые OpenAI.
Возможно они не всегда так выразительны как хотелось бы – но Strctured Output вы там в том или ином виде найдете.
Просто потому что мейнтейнеры этих библиотек обязаны обеспечивать все API OpenAI.
Там даже коммиты на пулреквесты выглядят как-то так:
>* Add full support for Responses API
---
Чего не скажешь про чудесные и одичалые библиотеки – либо поддержка там просто отстает (ну некогда!), либо "исповедуются" безнадежно устаревшие странности-парсеры вроде baml.
И все таки... Должны же быть хорошие oss библиотеки не спонсируемые большими компаниями?
Есть! instructor на PHP!
Единственная его проблема – чрезмерная переизбыточность, как минимум в документации/примерах в гитхабе. Я чуть было не отказался от этой библиотеки пока разбирался как же все таки отправлять запросы на Strict SO :)
>instructor-php поддерживает и те самые парсеры, и подкапотные внедрения json'ов в промпты.
Но в итоге вы получаете опыт похожий на привычный brrrrr от Пайдентика в Питоне со вложенными классами/энумами и описателями полей :)
(openai-php/client не умеет в рефлексию схем из php классов, там вам придется рисовать JSON елки руками или сторонними штуками.)
@m0n0x41d
Кто-бы как не любил (или наоборот - бурно обожал Питон), но он пока остается, если не самым, то одним из самых удобных языков для быстрой разработки AI и не AI бэкенд систем.
Ну правда ведь одно удовольствие расписывать SGR на Pydantic моделях и красиво отдавать на запрос. А с Pydantic-AI еще красивее. А FastAPI, FastMCP... Ну сказка 100x разработчика!
Но по разным причинам у нас не всегда есть/оправдан Питон ¯\_(ツ)_/¯
***
Хорошо если AI компонент системы легко выделяется и можно просто "рядом" запустить его как сервис.
Плохо если AI либо уже как-то внедряли (и перевязали с бизнес логикой слишком туго), либо сам дизайн просится "по месту в модуле" в целях сохранения этой самой модульности или ее видимости.
>Например в бэкенд монолите плотно намешана работа, и надо туда нормально внедрить AI. Это просто тупо дешевле чем переписывать несколько кусков и выносить в отдельный сервис. Ну... просто ничем не оправданно.
***
Так что там с _хорошими библиотеками_ в других языках?
tl;dr – на фоне Пайдентиков Питона все не так лучезарно, но все еще неплохо. Если вы четко уверены что будете использовать OpenAI или OpenAI Compatible интерфейс, думать нечего – смотрите сразу на клиенты поддерживаемые OpenAI.
Возможно они не всегда так выразительны как хотелось бы – но Strctured Output вы там в том или ином виде найдете.
Просто потому что мейнтейнеры этих библиотек обязаны обеспечивать все API OpenAI.
Там даже коммиты на пулреквесты выглядят как-то так:
>* Add full support for Responses API
---
Чего не скажешь про чудесные и одичалые библиотеки – либо поддержка там просто отстает (ну некогда!), либо "исповедуются" безнадежно устаревшие странности-парсеры вроде baml.
И все таки... Должны же быть хорошие oss библиотеки не спонсируемые большими компаниями?
Есть! instructor на PHP!
Единственная его проблема – чрезмерная переизбыточность, как минимум в документации/примерах в гитхабе. Я чуть было не отказался от этой библиотеки пока разбирался как же все таки отправлять запросы на Strict SO :)
>instructor-php поддерживает и те самые парсеры, и подкапотные внедрения json'ов в промпты.
Но в итоге вы получаете опыт похожий на привычный brrrrr от Пайдентика в Питоне со вложенными классами/энумами и описателями полей :)
(openai-php/client не умеет в рефлексию схем из php классов, там вам придется рисовать JSON елки руками или сторонними штуками.)
@m0n0x41d
"Мы были очень осторожны и тщательно занимались контекст инженирингом, но агент все еще периодически выбирает не правильные тулы или галлюцинирует в числах или датах, хотя дату мы прямо в промп динамически пишем :("
Смотрим под капот – код вроде бы вполне чистый... но проморгавшись видим в сумме 32 тула от подключенных mcp серверов + разные эвристически добавляемые присадки в промпт, где некоторые размером почти с газетный лист.
– "А как вы подходили к контекст инженерингу? Чем руководствались?",
– "Ну, мы на выступлениях услышали, что надо давать модели как можно больше контекста для выполнения задачи!"
– "А как определяли, что агенту реально нужно?"
...
¯\_(ツ)_/¯
Контекстная инженерия - это не фаршировка утки яблоками.
Без четкого представления о структуре и ответственности агента, и об интересах его пользователей, контекст легко превращается в помойку.
А это прямой путь к галлюцинациям.
Контекстная инженерия - это в первую очередь про ограничение контекста. Определение главной роли/ответственностей агента. И уже только потом про компрессию, перекладывание файликов, выбора тулов или любые прочие прикладные реализации.
Когда проводите такое моделирование, ответы на вопрос "Что нужно в контексте на самом деле?" возникают почти сами собой.
И сделать это проще чем кажется: поставьте себя (или эксперта в домене) "на место агента" и ответьте: какие документы, инструменты, знания и иные ресурсы мне нужны для выполнения задач? Какие действия и в каком порядке я буду выполнять?
Многие AI-системы работали бы стабильнее и успешнее, если бы такой подход применяли с самого начала.
@m0n0x41d
Смотрим под капот – код вроде бы вполне чистый... но проморгавшись видим в сумме 32 тула от подключенных mcp серверов + разные эвристически добавляемые присадки в промпт, где некоторые размером почти с газетный лист.
– "А как вы подходили к контекст инженерингу? Чем руководствались?",
– "Ну, мы на выступлениях услышали, что надо давать модели как можно больше контекста для выполнения задачи!"
– "А как определяли, что агенту реально нужно?"
...
¯\_(ツ)_/¯
Контекстная инженерия - это не фаршировка утки яблоками.
Без четкого представления о структуре и ответственности агента, и об интересах его пользователей, контекст легко превращается в помойку.
А это прямой путь к галлюцинациям.
Контекстная инженерия - это в первую очередь про ограничение контекста. Определение главной роли/ответственностей агента. И уже только потом про компрессию, перекладывание файликов, выбора тулов или любые прочие прикладные реализации.
Когда проводите такое моделирование, ответы на вопрос "Что нужно в контексте на самом деле?" возникают почти сами собой.
И сделать это проще чем кажется: поставьте себя (или эксперта в домене) "на место агента" и ответьте: какие документы, инструменты, знания и иные ресурсы мне нужны для выполнения задач? Какие действия и в каком порядке я буду выполнять?
Многие AI-системы работали бы стабильнее и успешнее, если бы такой подход применяли с самого начала.
@m0n0x41d
Так-так-так... Топ-менеджмент все еще в восторге, а команды все так же в окопах.
Wharton School изучили последние ~три года внедрений AI в бэкенд системы энтерпрайза.
Пишут такие цифры – 56% VP думают что они впереди рынка (и всей планеты), но только 28% менеджеров среднего звена с этим согласны.
Еще хуже с ROI, точнее с его субъективными оценками – 81% топов "видят позитив", а овнеры, что ближе к земле, менее "ai счастливы" – уже на 69%.
16% менеджеров более скептично настроены и считают что пока просто "рано судить" (против 8% так же настроенных VP).
Проблема, конечно не столько(и вообще) в технологии - сколько в разрыве стратегии и реальности – топы до сих пор в плотной эхокамере hype составляющей.
Инженеры, и менеджеры уже тоже, продолжают мучаться с галлюцинациями, сложностью разработки и внедрения AI систем.
Самое интересное, что компании естестванным образом все чаще требуют AI-навыки при найме, но снизили инвестиции в обучение сотрудников на 8% по сравнению с прошлым годом.🤔
Вывод делается такой – эра "экспериментов" заканчивается, дальше начинается эра "измеряемого ускорения"(Репорт так и озаглавлен – ACCOUNTABLE ACCELERATION: GEN AI FAST-TRACKS INTO THE ENTERPRISE) где практика, метрики, и реально рабочие решения становятся главным предметом внимания.
И это хорошо. Много более адекватный и взрослый подход.
***
Что еще интересного в отчете?
- большая часть компаний все таки видят ROI от AI (75%)
- малые компании (<$250M) получают ROI быстрее гигантов
- 43% лидеров продолжают боятся что AI сделает команды тупее
- а маркетинг и менеджмент больше всех страдают с разработкой рабочих AI решений.
Но последний пункт... Почему? Ведь казалось что эта область быстрее всех получит выхлоп от AI – генерируй контент планы, стратегии... Но нет.
От себя скажу тоже самое что говорил ранее – в какой бы прикладной области не применялся AI для реальных, не игрушечных кейсов – всегда нужна сильная инженерная экспертиза.
***
Финальная мораль такова – уже до менеджеров докатывается боль. Все большая часть индустрии осознает что AI системы это не про "просто дернуть API", и что переизобрести с кондачка СhatGpt не так то и просто.
Приходит понимание ценности разработки архитектур, тестирования, целеориентированности на результат.
Открытым вопросом остается – где брать специалистов? 🤔
Если боль вам знакома, то приходите на консультацию 😌
@m0n0x41d
Источники:
- hackernoon
- Wharton School Report
Wharton School изучили последние ~три года внедрений AI в бэкенд системы энтерпрайза.
Пишут такие цифры – 56% VP думают что они впереди рынка (и всей планеты), но только 28% менеджеров среднего звена с этим согласны.
Еще хуже с ROI, точнее с его субъективными оценками – 81% топов "видят позитив", а овнеры, что ближе к земле, менее "ai счастливы" – уже на 69%.
16% менеджеров более скептично настроены и считают что пока просто "рано судить" (против 8% так же настроенных VP).
Проблема, конечно не столько
Инженеры, и менеджеры уже тоже, продолжают мучаться с галлюцинациями, сложностью разработки и внедрения AI систем.
Самое интересное, что компании естестванным образом все чаще требуют AI-навыки при найме, но снизили инвестиции в обучение сотрудников на 8% по сравнению с прошлым годом.
Вывод делается такой – эра "экспериментов" заканчивается, дальше начинается эра "измеряемого ускорения"
И это хорошо. Много более адекватный и взрослый подход.
***
Что еще интересного в отчете?
- большая часть компаний все таки видят ROI от AI (75%)
- малые компании (<$250M) получают ROI быстрее гигантов
- 43% лидеров продолжают боятся что AI сделает команды тупее
- а маркетинг и менеджмент больше всех страдают с разработкой рабочих AI решений.
Но последний пункт... Почему? Ведь казалось что эта область быстрее всех получит выхлоп от AI – генерируй контент планы, стратегии... Но нет.
От себя скажу тоже самое что говорил ранее – в какой бы прикладной области не применялся AI для реальных, не игрушечных кейсов – всегда нужна сильная инженерная экспертиза.
***
Финальная мораль такова – уже до менеджеров докатывается боль. Все большая часть индустрии осознает что AI системы это не про "просто дернуть API", и что переизобрести с кондачка СhatGpt не так то и просто.
Приходит понимание ценности разработки архитектур, тестирования, целеориентированности на результат.
Открытым вопросом остается – где брать специалистов? 🤔
Если боль вам знакома, то приходите на консультацию 😌
@m0n0x41d
Источники:
- hackernoon
- Wharton School Report
Please open Telegram to view this post
VIEW IN TELEGRAM
Чат-бот аптеки упорно палил бюджетКоллега из е-комм аутсорса делал AI-поисковик для португальской аптеки:
- "Какое лекарство от мигрени?"
- "Чем лечить кашель ребенка?"
- "Где купить антидепрессанты?"
Внутри был конвейер из регулярных выражений, которые собирают контекст из базы знаний и отправляют в gemini на каждый запрос
Пробовали обычный кеш - не работает, запросы всегда разные, память утекает будь здоров.
Было понимание что строят не то, и что нужно унифицированное решение.
А решение простое - по моему совету подружили pgvector в postgresql (которую и так почти у каждого клиента разворачивают):
1. Намолотили эмбединги через fastembed (из логов + часть нагенерили с LLM)
2. Входящий запрос → эмбеддинг → поиск похожих (cosine similarity)
3. Схожесть > 0.92 → возврат из кэша ¯\_(ツ)_/¯
4. В противном случае → LLM вызов + сохранение в кэш
Классика :)
Результаты приятные:
- ~7 из 10 вопросов попадают
- Траты на токены снизились больше чем в половину
- Задержка 800ms → 80-100ms
- Клиенты счастливы, ура!
Решение на эмбеддингах лучше чем регулярки. Но, к сожалению, не работает (или работают плохо) если ответы сильно зависят от контекста диалога, данные часто и сильно меняются, или работаем с высокой уникальностью входных данных.
Для FAQ, поиска по продуктам, документации - классно!
Ребята почему то боялись пробовать, хотя читали про RAG и семантический поиск.
Если у вас хотя бы отдаленно похожая проблема/задача – не бойтесь и приходите ко мне за консультаций
@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
#ai_on_backend
Проблема: векторные базы ищут по косинусной близости или гибридно – и то и другое связей между данными не понимает.
Запрос "найди все контракты с японскими поставщиками" возвращает случайные японские документы(Манга Берсерк?) , а не логические связи между поставщиками и контрактами.
Это достаточно легко может превратиться в черную коробку — система находит что-то похожее, но не то что нужно. Бизнес платит за галлюцинации, а разработчикам сложно отладить систему.😨
Почему так происходит? Ну "близость в векторном пространстве" это вообще не про смысловую связность, а про статистическую корреляцию в данных на которых обучалась эмбеддинг модель (паттерны совместной встречаемости токенов). Если проще, то документы могут быть семантически близки, но контекстуально далеки.
Возможное решение – Knowledge Graph RAG
Вместо тупого поиска по косинусной близости строим граф связей между сущностями в документах. Каждый узел в графе — это конкретная сущность (компания, контракт, персона), а ребра — установленная связь.
Как это работает на практике:
1. LLM анализирует документы и создает структурированный граф, формирует "долгосрочную память" (Да, вдохновлено белковыми мозгами)
2. Вместо косинусной близости делаем траверс по графу с учетом связей
3. В результате система "понимает" не только что искать, но и как связаны найденные данные
Главный профит тут это прозрачность и наблюдаемость. Становится возможным отслеживать весь путь решения и рассуждать о том как модель выбирала конкретные документы.
Большая прозрачность в проде означает:
- Более понятный дебаг – можно проследить путь обхода графа, в отличие от малопрозрачных векторных пространств (почему оно вообще сметчилось?!)
- Повышаем нашу способность наблюдать, понимать и объяснять логику решения
- Некоторое снижение рисков галлюцинаций – ведь данные такая система должна вытаскивать более релевантные
Но честно, сам процесс построения графа может вносить ошибки – LLM может неправильно извлечь сущности или связи между ними. Это просто смещает проблему с retrieval на extraction.
Microsoft уже показала в своем прошлогоднем GraphRAG исследовании, что такой подход улучшает точность в сложных кейсах с multi-hop reasoning.
Тут как всегда есть компромисы – построение графов знаний может требовать более емкой предварительной обработки данных и более сложной архитектуры чем обычный векторный поиск.
Как я уже писал вчера – для простых кейсов (FAQ, документация) обычный векторный поиск часто хорош и достаточен. GraphRAG имеет смысл для структурированных запросов с множественными связями между сущностями. А еще, если свернуть не туда то, переусложить граф, то наблюдаемость... будет не такой уж и хорошей :) Разбираться в запутанных графах то еще удовольствие.
Еще посмотреть по теме:
- mem0
- Cortex
- fast-graphrag
- Cognee
---
Если пред вами стоит задача построить внедрить на бекенд AI систему с памятью – приходите!
Я с удовольствием помогу вам в разработке @m0n0x41d💗
Проблема: векторные базы ищут по косинусной близости или гибридно – и то и другое связей между данными не понимает.
Запрос "найди все контракты с японскими поставщиками" возвращает случайные японские документы
Это достаточно легко может превратиться в черную коробку — система находит что-то похожее, но не то что нужно. Бизнес платит за галлюцинации, а разработчикам сложно отладить систему.
Почему так происходит? Ну "близость в векторном пространстве" это вообще не про смысловую связность, а про статистическую корреляцию в данных на которых обучалась эмбеддинг модель (паттерны совместной встречаемости токенов). Если проще, то документы могут быть семантически близки, но контекстуально далеки.
Возможное решение – Knowledge Graph RAG
Вместо тупого поиска по косинусной близости строим граф связей между сущностями в документах. Каждый узел в графе — это конкретная сущность (компания, контракт, персона), а ребра — установленная связь.
Как это работает на практике:
1. LLM анализирует документы и создает структурированный граф, формирует "долгосрочную память" (Да, вдохновлено белковыми мозгами)
2. Вместо косинусной близости делаем траверс по графу с учетом связей
3. В результате система "понимает" не только что искать, но и как связаны найденные данные
Главный профит тут это прозрачность и наблюдаемость. Становится возможным отслеживать весь путь решения и рассуждать о том как модель выбирала конкретные документы.
Большая прозрачность в проде означает:
- Более понятный дебаг – можно проследить путь обхода графа, в отличие от малопрозрачных векторных пространств (почему оно вообще сметчилось?!)
- Повышаем нашу способность наблюдать, понимать и объяснять логику решения
- Некоторое снижение рисков галлюцинаций – ведь данные такая система должна вытаскивать более релевантные
Но честно, сам процесс построения графа может вносить ошибки – LLM может неправильно извлечь сущности или связи между ними. Это просто смещает проблему с retrieval на extraction.
Microsoft уже показала в своем прошлогоднем GraphRAG исследовании, что такой подход улучшает точность в сложных кейсах с multi-hop reasoning.
Тут как всегда есть компромисы – построение графов знаний может требовать более емкой предварительной обработки данных и более сложной архитектуры чем обычный векторный поиск.
Как я уже писал вчера – для простых кейсов (FAQ, документация) обычный векторный поиск часто хорош и достаточен. GraphRAG имеет смысл для структурированных запросов с множественными связями между сущностями. А еще, если свернуть не туда то, переусложить граф, то наблюдаемость... будет не такой уж и хорошей :) Разбираться в запутанных графах то еще удовольствие.
Еще посмотреть по теме:
- mem0
- Cortex
- fast-graphrag
- Cognee
---
Если пред вами стоит задача построить внедрить на бекенд AI систему с памятью – приходите!
Я с удовольствием помогу вам в разработке @m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
Внедряя AI на бэкенд, или в бизнес/разработческие процессы довольно часто хочется использовать любимые и знакомые инструменты, и при этом... тоже часно - сэкономить немного на токенах :)
Поэтому я набросал небольшой прокси на расте для инструментов используюих API Антропик, который позволяет утилизировать OpenAI-like API – OpenRouter, или SelfHosted модели, или почти что угодно еще ¯\_(ツ)_/¯
https://github.com/m0n0x41d/anthropic-proxy-rs
В уже не только экспериментальных штуках некоторые открытые модели показывают себя вполне хорошо.
Настройка и запуск этого прокси простая какая пять копеек (.env файл в удобном для вас месте) и врубается простым демоном:
а с Claude Code дружить еще проще чем с Z.AI – всего одна переменная (модели и апстрим в конфигах прокси, очевидно):
Соберу нормальные бинари в релизы если хоть кому-то пригодится.
@m0n0x41d
Поэтому я набросал небольшой прокси на расте для инструментов используюих API Антропик, который позволяет утилизировать OpenAI-like API – OpenRouter, или SelfHosted модели, или почти что угодно еще ¯\_(ツ)_/¯
https://github.com/m0n0x41d/anthropic-proxy-rs
В уже не только экспериментальных штуках некоторые открытые модели показывают себя вполне хорошо.
Настройка и запуск этого прокси простая какая пять копеек (.env файл в удобном для вас месте) и врубается простым демоном:
anthropic-proxy --daemon а с Claude Code дружить еще проще чем с Z.AI – всего одна переменная (модели и апстрим в конфигах прокси, очевидно):
ANTHROPIC_BASE_URL=http://0.0.0.0:3000 claudeСоберу нормальные бинари в релизы если хоть кому-то пригодится.
@m0n0x41d
GitHub
GitHub - m0n0x41d/anthropic-proxy-rs: A proxy server that intercepts Anthropic API requests and converts them to OpenAI-compatible…
A proxy server that intercepts Anthropic API requests and converts them to OpenAI-compatible format, enabling integration with dozens of inference providers such as OpenRouter, Together.ai, Novita ...
Ваша новая AI-система на моднейшем no-code конструкторе (который вы выбрали калассического внедрения на бэкенд) обходится в несколько штук баксов, но не может получить данные из ERP 2010 года?
Бизнес очень хочет AI-ассистента, который знает историю заказов за последние 10 лет. Проблема: ERP нормально работает только на SOAP, база данных - Oracle 11g, а документация - уволившийся в 2019 году архитектор.
Команда бодро пытается построить "мосты" между старым и новым.
И каждый узелок в этих мостах - новая точка отказа. Каждый спринт (или может быть день?) - новый баг в интеграции🐛
(Если вы никогда не были в такой потогонке - вам чудестным образом продолжает везти.)
Через 3 месяца система кое как работает. Данные теряются, ответы неполные, бизнес недоволен. Колумбийские интеграторы-аутсорсеры выставляют счет за 200 часов потраченных на "адаптации legacy систем". И не придерешься...
Это уже не просто "технический долг", а практически полное отсутствие enterprise/legacy integration strategy.
Знакомый ужастик? Приходите на консультацию, разберем вашу архитектуру и найдем точки интеграции, меня ораклом не напугаешь
@m0n0x41d
Бизнес очень хочет AI-ассистента, который знает историю заказов за последние 10 лет. Проблема: ERP нормально работает только на SOAP, база данных - Oracle 11g, а документация - уволившийся в 2019 году архитектор.
Команда бодро пытается построить "мосты" между старым и новым.
И каждый узелок в этих мостах - новая точка отказа. Каждый спринт (или может быть день?) - новый баг в интеграции
(Если вы никогда не были в такой потогонке - вам чудестным образом продолжает везти.)
Через 3 месяца система кое как работает. Данные теряются, ответы неполные, бизнес недоволен. Колумбийские интеграторы-аутсорсеры выставляют счет за 200 часов потраченных на "адаптации legacy систем". И не придерешься...
Это уже не просто "технический долг", а практически полное отсутствие enterprise/legacy integration strategy.
Знакомый ужастик? Приходите на консультацию, разберем вашу архитектуру и найдем точки интеграции, меня ораклом не напугаешь
@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
#ai_on_backend
Хочется Schema Guided Reasoning но на компилируемом языке c сильными гарантиями системы типов?
Cкомпилироваться – я дам
сильные типы я не дам😏
(ну или отчасти)
Вот тут можно посмотреть порт SGR Demo Рината на go -> click me
***
Это просто демка, но самая полезная функция тут (в прикладном смысле конечно) с великолепной сигнатурой...
А вы думали? Это вам не на Колвиновском Пидантике в парке гулять 🙂
Не смотря на небольшую корявость – все равно хорошо. Приятно иметь компактные бинарники на бэкендне, да еще и с AI внутри. Go шустрый и в целом на нем можно успшено строить качественные AI платформы!
Хочется Schema Guided Reasoning но на компилируемом языке c сильными гарантиями системы типов?
Cкомпилироваться – я дам
сильные типы я не дам
Вот тут можно посмотреть порт SGR Demo Рината на go -> click me
***
Это просто демка, но самая полезная функция тут (в прикладном смысле конечно) с великолепной сигнатурой...
GenerateSchema[T any]() any А вы думали? Это вам не на Колвиновском Пидантике в парке гулять 🙂
Не смотря на небольшую корявость – все равно хорошо. Приятно иметь компактные бинарники на бэкендне, да еще и с AI внутри. Go шустрый и в целом на нем можно успшено строить качественные AI платформы!
Please open Telegram to view this post
VIEW IN TELEGRAM
Gist
schema-guided-reasoning.go
schema-guided-reasoning.go. GitHub Gist: instantly share code, notes, and snippets.
🌭3
#ai_on_backend
pgvector в туториалах (и часто в моих постах тоже) выглядит идеально: добавил расширение, создал индекс, поиск работает – считай вот и внедрили AI на бэкенд🥂
В большом проде всё иначе. Я смело использую pgvector когда знаю – тут есть, был и будет постгресс, датасет до ~100-200K векторов, и тут не будет резких пивотов и приростов трафика.
Потому что за этими границами резко начинается веселье.
Проблема №1: Бесконечный ад тюнинга индексов
IVFFlat деградирует со временем - у него падает точность поиска, и периодически надо пересобирать. HNSW на огромных датасетах может жрать 10+ гигов оперативки на билд. Для 1M векторов размерности 384 это дело займет минуты, а вот для 10M+ векторов, например, размерности 1536 – часы. При этом ваша база должна продолжать обслуживать запросы.
Решать это можно по всякому, например писать в отдельную таблицу, строить индекс "офлайн", делать свопы. Ну или держать два инекса одновременно ¯\_(ツ)_/¯
pgvector 0.7.0+ улучшил параллельную пересборку для HNSW, но проблема масштаба все равно остается. Настраивать
Проблема №2: Планировщик запросов не понимает векторы
Хорошо оптимизированный запрос: ~50ms. Плохо оптимизированный: ~5 секунд. Пу-пу-пу. Разница в 100 раз на одних и тех же данных, потому что планировщик постгресса вообще не понимает кост модели для векторных операций.
Фильтруете после поиска – получаете неполные результаты. Фильтруете до поиска – перебираете миллионы векторов. Золотой середины нет, приходится тюнить каждый запрос руками со всеми вытекающими из остальных пунктов.
Проблема №3: Добавление данных в реальном времени
IVFFlat: быстрые вставки, но без пересборки новые вектора попадают в неоптимальные кластеры – точность поиска деградирует. HNSW: каждая вставка обновляет граф, вызывает блокировки, всплеск записей в базе и снова выжирает память. Ни один из индексов не любит высокую нагрузку на запись, векторные не исключение.
Что в итоге:
Либо раздувается буфер базы в разы (настраивать
Нужен комбинированный поиск (векторный + полнотекстовый)? Придётся реализовывать самим – взвешивать оценки от разных алгоритмов, нормализовать их, комбинировать результаты (RRF – Reciprocal Rank Fusion один из подходов, но это всё равно код, который надо писать и поддерживать).
Про альтернативы
Специализированные векторные БД (Qdrant, Weaviate, Milvus, Chroma и тд) решают часть проблем, но естественным образом добавляют свой оверхед на поддержку – ещё одна БД в стеке, синхронизация данных, мониторинг и пр. Поэтому я считаю что для небольших проектов с постгрессом в стеке pgvector всё таки разумный выбор.
Я уже писал про Knowledge Graph RAG как альтернативу чёрному ящику векторного поиска. Напомню – близость в векторном пространстве ≠ смысловая связь. А ещё векторный поиск очень сложно дебажить в production. А еще... вы точно уверены что индекс все таки не вырастет x200 раз в течении пары-тройки лет?
Мораль:
pgvector работает. Но его операционная поддержка и особенности (впрочем как и любой другой зависимости в стеке) часто недооценивается на этапе выбора инструментов. Если у вас <100-200K векторов, постоянная инфраструктура и нет хайлоада на запись – смело берите. Дальше считайте TCO с учётом инженерного времени.
Со всем этим планированием и оценкой я помогаю на консультациях, пишите в личку @m0n0x41d
pgvector в туториалах (и часто в моих постах тоже) выглядит идеально: добавил расширение, создал индекс, поиск работает – считай вот и внедрили AI на бэкенд
В большом проде всё иначе. Я смело использую pgvector когда знаю – тут есть, был и будет постгресс, датасет до ~100-200K векторов, и тут не будет резких пивотов и приростов трафика.
Потому что за этими границами резко начинается веселье.
Проблема №1: Бесконечный ад тюнинга индексов
IVFFlat деградирует со временем - у него падает точность поиска, и периодически надо пересобирать. HNSW на огромных датасетах может жрать 10+ гигов оперативки на билд. Для 1M векторов размерности 384 это дело займет минуты, а вот для 10M+ векторов, например, размерности 1536 – часы. При этом ваша база должна продолжать обслуживать запросы.
Решать это можно по всякому, например писать в отдельную таблицу, строить индекс "офлайн", делать свопы. Ну или держать два инекса одновременно ¯\_(ツ)_/¯
pgvector 0.7.0+ улучшил параллельную пересборку для HNSW, но проблема масштаба все равно остается. Настраивать
ef_construction (грубо говоря, это параметр который регулирует "качество" грава HNSW индекса) приходится методом тыка – чем выше значение тем, очевидно - дольше билд.Проблема №2: Планировщик запросов не понимает векторы
Хорошо оптимизированный запрос: ~50ms. Плохо оптимизированный: ~5 секунд. Пу-пу-пу. Разница в 100 раз на одних и тех же данных, потому что планировщик постгресса вообще не понимает кост модели для векторных операций.
Фильтруете после поиска – получаете неполные результаты. Фильтруете до поиска – перебираете миллионы векторов. Золотой середины нет, приходится тюнить каждый запрос руками со всеми вытекающими из остальных пунктов.
Проблема №3: Добавление данных в реальном времени
IVFFlat: быстрые вставки, но без пересборки новые вектора попадают в неоптимальные кластеры – точность поиска деградирует. HNSW: каждая вставка обновляет граф, вызывает блокировки, всплеск записей в базе и снова выжирает память. Ни один из индексов не любит высокую нагрузку на запись, векторные не исключение.
Что в итоге:
Либо раздувается буфер базы в разы (настраивать
maintenance_work_mem и VACUUM помогает, но не сильно), либо принимаете "eventual consistency" (документы не ищутся N минут после добавления), либо строите сложную инфраструктуру с репликами и staging-таблицами/базами (удачи с поиском хорошего dba.)Нужен комбинированный поиск (векторный + полнотекстовый)? Придётся реализовывать самим – взвешивать оценки от разных алгоритмов, нормализовать их, комбинировать результаты (RRF – Reciprocal Rank Fusion один из подходов, но это всё равно код, который надо писать и поддерживать).
Про альтернативы
Специализированные векторные БД (Qdrant, Weaviate, Milvus, Chroma и тд) решают часть проблем, но естественным образом добавляют свой оверхед на поддержку – ещё одна БД в стеке, синхронизация данных, мониторинг и пр. Поэтому я считаю что для небольших проектов с постгрессом в стеке pgvector всё таки разумный выбор.
Я уже писал про Knowledge Graph RAG как альтернативу чёрному ящику векторного поиска. Напомню – близость в векторном пространстве ≠ смысловая связь. А ещё векторный поиск очень сложно дебажить в production. А еще... вы точно уверены что индекс все таки не вырастет x200 раз в течении пары-тройки лет?
Мораль:
pgvector работает. Но его операционная поддержка и особенности (впрочем как и любой другой зависимости в стеке) часто недооценивается на этапе выбора инструментов. Если у вас <100-200K векторов, постоянная инфраструктура и нет хайлоада на запись – смело берите. Дальше считайте TCO с учётом инженерного времени.
Со всем этим планированием и оценкой я помогаю на консультациях, пишите в личку @m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM