Иван Закутний про
201 subscribers
133 photos
3 videos
163 links
Авторский канал про инженерию умных систем.
По всем вопросам: @m0n0x41d
Download 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 система, разумеется, потребует некоторых важных доработок (подсказываю в REAME.md).

Но этого сниппета достаточно чтобы:

- посмотреть неплохой пример SGR
- набросать туда побольше файлов и тестов чтобы оценить качество этой или других VLM моделей предметно.

А квен этот мне очень нравится! Год-полтора назад мне сложно было представить что так дешево можно собрать вполне себе качественный и умный OCR.

@neuralstack
Please open Telegram to view this post
VIEW IN TELEGRAM
4🌭22
В вашей команде слышно такую фразу – "Если ChatGPT может, значит и мы сможем!"?

Разработчики борятся с непредсказуемостью 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
6🌭11
Ваши AI агенты все еще застревает в циклах? Тогда я иду к вам! 💃

Меня вчера все таки выдернули на короткую консультацию (очень не хотелось работать в выходные.)

по проблеме стараой, доброй и прозаичной – "нам вообще не понятно почему оно периодически проваливается в бесконечный цикл tool-call вызовов."
При этом там одна *большая модель от гугла.*

В проекте использовался LlamaIndex с примерами прямо из документации :)

На удивление функциональности у агента мало, а в бесконечный цикл он провалился из-за противоречивого типа (ну точнее структуры) данных в ответах одной из функций (ну и промпт там был явно со странной структурой.)

Разобрались ровно за один часовой звонок. И вот буквально 10 минут назад мне отписались что "утром переписали, весь день тестируем и ни одного провала в циклы!"

Решили всё с помощью серебрянной-пули Schema Guided Reasoning – по каноничному примеру с выбором нужного тула (см тут.)

Никаких promp-издевательств.
Никаких бесконечных циклов.
¯\_(ツ)_/¯

В довесок приятно было услышать что ребята послушали мой "совет на закуску" и попробовали все таки модели подешевле – всё работает хо-ро-шо!

Вот она прелесть SGR - структурируешь и свое рассуждение и рассуждения LLM, решение работает если не одинаково, то как минимум предсказуемо на разных моделях.

Ну и денег можно сильно сэкономить :)

@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
6🌭21
Вы конечно можете закидать меня дизлайками, но правды это не поменяет:

AI не принес никаких кардинально новых проблем/задач в программную инженерию.

По крайней мере со стороны системного и программного дизайна.

***

Ну, посудите сами - разве раньше не было проблем с постоянным тушением пожаров, вечной войной с багами, медленными и разрушительными релизами? а? 💣

Корни этих проблем всегда находятся где-то между:

- Проблем с тестированием; Либо тесты вообще не пишутся, либо они тестируют реализацию вместо интерфейсов;
- Высокой связности, при том не важно чего – псевдо-микросервисов в распределенном монолите, или модулей в монолите обыкновенном :)
- Серьезных затруднений в рассуждении о программных системах у наших разработчиков – мало кто реально осознает разницу между прикладным уровнем системы и уровнем ее дизайна;
- Низкой наблюдаемостью – не сразу понятно (или не понятно вообще), где что сломалось и как подступаться к дебагу;
- И так далее...

Какие же тут качественно новые вызовы со внедрением AI на бекенд?

Да существенно никаких.

Если мы не занимаемся машинным обучением, дата сатанизмом и прочим из "ядра" AI, а утилизируем готовые решения, пусть то модели по API или даже хостинг открытых моделей, не важно – все реальные боли упираются и легко вписываются в те самые "старые добрые".

Просто эти "старые" системы легче прощали ошибки, и спать ошибки тоже могли дольше.
Эти системы были много терпимее к плохой архитектуре, долго могли сохранять иллюзию надежности.

Так что для успешной разработки AI систем вам нужно не воображение и вера в чудеса, а инженерия ¯\_(ツ)_/¯

@m0n0x41d
Please open Telegram to view this post
VIEW IN TELEGRAM
63🌭1
#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
32🌭1
"Мы были очень осторожны и тщательно занимались контекст инженирингом, но агент все еще периодически выбирает не правильные тулы или галлюцинирует в числах или датах, хотя дату мы прямо в промп динамически пишем :("

Смотрим под капот – код вроде бы вполне чистый... но проморгавшись видим в сумме 32 тула от подключенных mcp серверов + разные эвристически добавляемые присадки в промпт, где некоторые размером почти с газетный лист.

– "А как вы подходили к контекст инженерингу? Чем руководствались?",
– "Ну, мы на выступлениях услышали, что надо давать модели как можно больше контекста для выполнения задачи!"
– "А как определяли, что агенту реально нужно?"

...
¯\_(ツ)_/¯

Контекстная инженерия - это не фаршировка утки яблоками.

Без четкого представления о структуре и ответственности агента, и об интересах его пользователей, контекст легко превращается в помойку.

А это прямой путь к галлюцинациям.

Контекстная инженерия - это в первую очередь про ограничение контекста. Определение главной роли/ответственностей агента. И уже только потом про компрессию, перекладывание файликов, выбора тулов или любые прочие прикладные реализации.

Когда проводите такое моделирование, ответы на вопрос "Что нужно в контексте на самом деле?" возникают почти сами собой.

И сделать это проще чем кажется: поставьте себя (или эксперта в домене) "на место агента" и ответьте: какие документы, инструменты, знания и иные ресурсы мне нужны для выполнения задач? Какие действия и в каком порядке я буду выполнять?

Многие AI-системы работали бы стабильнее и успешнее, если бы такой подход применяли с самого начала.

@m0n0x41d
🌭111
Так-так-так... Топ-менеджмент все еще в восторге, а команды все так же в окопах.

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
Please open Telegram to view this post
VIEW IN TELEGRAM
5