Мы в red_mad_robot реализовали интересный кейс с применением workflow агентов на базе RAG(SO CoT)
Переходите читать на Хабр
Раскрыли некоторые технические детали
https://habr.com/ru/companies/redmadrobot/articles/892882/
Переходите читать на Хабр
Раскрыли некоторые технические детали
https://habr.com/ru/companies/redmadrobot/articles/892882/
Forwarded from LLM под капотом
SO CoT - самый полезный паттерн при создании продуктов с LLM под капотом
Так выходит, если судить по комментариям в моем прошлом опросе.
Я обещал расписать самый полезный паттерн постом в канале. Поскольку сам ответ не влазит в масштаб и формат поста, вот вам две статьи с более подробным описанием и примерами:
- Structured Output (SO): https://abdullin.com/structured-output/
- Custom Chain of Thought (SO CoT): https://abdullin.com/custom-chain-of-thought/
Ваш, @llm_under_hood 🤗
Так выходит, если судить по комментариям в моем прошлом опросе.
Я обещал расписать самый полезный паттерн постом в канале. Поскольку сам ответ не влазит в масштаб и формат поста, вот вам две статьи с более подробным описанием и примерами:
- Structured Output (SO): https://abdullin.com/structured-output/
- Custom Chain of Thought (SO CoT): https://abdullin.com/custom-chain-of-thought/
Ваш, @llm_under_hood 🤗
This media is not supported in your browser
VIEW IN TELEGRAM
Structured Output = Stream?
Все знаю что если использовать API к LLM например openai библиотеку
При разработке LLM приложений можно использовать SSE стриминг выставим флаг
Но если мы используем SO (structured output) то возможность получить в реальном времени чанки для отображения пропадает
Есть решение использовать extra body и передать туда схему в метод
На мой взгляд для UI опыта можно сделать что-то интересное на базе CoT+SO (доставать рассуждения сразу и показывать пользователю например)
Как пример выводить у не рассуждающей модели поле reasoning демонстрируя рассуждения по заданному шаблону
Все знаю что если использовать API к LLM например openai библиотеку
При разработке LLM приложений можно использовать SSE стриминг выставим флаг
stream=True
и ловить ответ по чанкам тогда можно передавать ответ пользователю в реальном времени как печатная машинкаНо если мы используем SO (structured output) то возможность получить в реальном времени чанки для отображения пропадает
Есть решение использовать extra body и передать туда схему в метод
client.chat.completions.create
на vLLM можно наблюдать стриминг схемы в реальном времени# Extra body parameters with schema
extra_body = {
"repetition_penalty": 1,
"guided_json": json.dumps(DOCUMENT_SCHEMA),
"guided_decoding_backend": "xgrammar"
}
На мой взгляд для UI опыта можно сделать что-то интересное на базе CoT+SO (доставать рассуждения сразу и показывать пользователю например)
Как пример выводить у не рассуждающей модели поле reasoning демонстрируя рассуждения по заданному шаблону
Forwarded from Лёха ведет дневник
Please open Telegram to view this post
VIEW IN TELEGRAM
Neural Deep
Structured Output = Stream? Все знаю что если использовать API к LLM например openai библиотеку При разработке LLM приложений можно использовать SSE стриминг выставим флаг stream=True и ловить ответ по чанкам тогда можно передавать ответ пользователю в реальном…
Как и обещал в комментариях навайбкодил вам пример того как работает стриминг схемы(SO) на vLLM
В схеме есть CoT+SO
https://github.com/kekslop/vllm_structured_output_stream/tree/master
LLM API vLLM + Structured Output
Очень подробное README
В схеме есть CoT+SO
https://github.com/kekslop/vllm_structured_output_stream/tree/master
LLM API vLLM + Structured Output
Очень подробное README
GitHub
GitHub - kekslop/vllm_structured_output_stream
Contribute to kekslop/vllm_structured_output_stream development by creating an account on GitHub.
Как заставить Qwen2.5-VL-72B-Instruct 8FP dynamic работать идеально с документами?
И еще извлекать bbox
Недавно Илья победитель ERC обратился ко мне с проблемой: ему нужно было обрабатывать 44-страничное письмо,
получая не только координаты текстовых блоков (bbox), но и полностью извлекать текст из каждого распознанного блока
Он уже пробовал Qwen2.5-VL-72B-Instruct через OpenRouter, но результаты были неудовлетворительными:
"Qwen 2.5 VL просто генерит полную дичь!"
Интересное наблюдение по провайдерам:
1. Parasail: $0.7 за 1M токенов (FP8) — лучший результат (после того как я показал правильную схему и промпт)
2. NovitaAI: $0.8 за 1M токенов — плохие результаты
3. Together: $8 за 1M токенов — худшие результаты
Удивительно, что самый дешевый провайдер давал значительно лучшие результаты!
Моё решение:
Я предложил протестировать модель на моей A100 с правильным промптом и JSON-схемой:
Ключевые факторы успеха:
1. Предобработка изображений: уменьшение размера до 2000 пикселей по широкой стороне для
баланса между качеством и контекстом (8K токенов)
2. Детальный промпт:
3. Структурированный вывод через guided_json vLLM:
Выводы:
1. Не все провайдеры одинаково полезны, даже с одной и той же моделью
2. Цена не всегда коррелирует с качеством
3. Правильный промпт критически важен
4. JSON-схема значительно повышает качество и стабильность результатов
5. FP8-квантизация вполне может обеспечивать высокое качество
6. Собственный хостинг даёт больше контроля и стабильности даже проверить стартовый результат
В комментариях пришлем что было до как показывали другие API провайдеры и что вышло после
В итоге Илья реализовал полный пайплайн обработки документов с точностью распознавания 100% на все документы
И еще извлекать bbox
Недавно Илья победитель ERC обратился ко мне с проблемой: ему нужно было обрабатывать 44-страничное письмо,
получая не только координаты текстовых блоков (bbox), но и полностью извлекать текст из каждого распознанного блока
Он уже пробовал Qwen2.5-VL-72B-Instruct через OpenRouter, но результаты были неудовлетворительными:
"Qwen 2.5 VL просто генерит полную дичь!"
Интересное наблюдение по провайдерам:
1. Parasail: $0.7 за 1M токенов (FP8) — лучший результат (после того как я показал правильную схему и промпт)
2. NovitaAI: $0.8 за 1M токенов — плохие результаты
3. Together: $8 за 1M токенов — худшие результаты
Удивительно, что самый дешевый провайдер давал значительно лучшие результаты!
Моё решение:
Я предложил протестировать модель на моей A100 с правильным промптом и JSON-схемой:
{
"type": "object",
"properties": {
"objects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"bbox_2d": {
"type": "array",
"description": "Coordinates of the object bounding box [x1, y1, x2, y2]",
"items": {
"type": "integer"
}
},
"label": {
"type": "string",
"description": "Document element label"
},
"text": {
"type": "string",
"description": "Extracted text content from the detected area"
},
"confidence": {
"type": "number",
"description": "Confidence score for the detection (0.0 to 1.0)"
}
},
"required": ["bbox_2d", "label"]
}
}
},
"required": ["objects"]
}
Ключевые факторы успеха:
1. Предобработка изображений: уменьшение размера до 2000 пикселей по широкой стороне для
баланса между качеством и контекстом (8K токенов)
2. Детальный промпт:
Detect all distinct text blocks and key visual elements in the document image.
Group text lines that logically, semantically, and visually belong together into single elements cluster.
For each detected element, provide:
1. A concise and descriptive label (e.g., 'heading', 'paragraph', 'list', 'table', 'section', etc.)
2. A bounding box [x1, y1, x2, y2] that encompasses the entire grouped element.
3. The complete text content of the cluster, adjusted to the Markdown format.
Ignore "manifest immigration" header and "Manifest Law PLLC." with page number footers.
3. Структурированный вывод через guided_json vLLM:
extra_body = {
"guided_json": json.dumps(DOCUMENT_JSON_SCHEMA),
"guided_decoding_backend": "xgrammar"
}
Выводы:
1. Не все провайдеры одинаково полезны, даже с одной и той же моделью
2. Цена не всегда коррелирует с качеством
3. Правильный промпт критически важен
4. JSON-схема значительно повышает качество и стабильность результатов
5. FP8-квантизация вполне может обеспечивать высокое качество
6. Собственный хостинг даёт больше контроля и стабильности даже проверить стартовый результат
В комментариях пришлем что было до как показывали другие API провайдеры и что вышло после
В итоге Илья реализовал полный пайплайн обработки документов с точностью распознавания 100% на все документы
Forwarded from Лёха ведет дневник
Похоронное бюро AI-инициатив
Проведя достаточно большое количество пресэйлов (100+) по Gen AI тематике, составил небольшой чек-лист запросов/проектов, которые вряд ли взлетят)
1️⃣ “Нам нужно ИИ. Просто… нужно”
Цель проекта: “Внедрить ИИ”.
Зачем? Кому? Что должно получиться? Неясно
Хороните сразу.
2️⃣ “У конкурентов есть — и нам надо”
Зависть — плохой стратег.
Копировать чужое решение без своих данных, процессов и боли — путь к провалу.
Это как надевать чужие очки и удивляться, почему всё мутно.
3️⃣ “Сделаем RAG-бота на выходных”
Идея норм. Вот только:
- Чатик есть
- Данных нет
- Понимания, как работает retriever — тоже нет
Презентация будет норм. Работы — нет.
4️⃣ “Да он сам всё придумает — это же AI”
Это не магия, это машинка с правилами.
Если ты не скажешь, что делать — она сделает ерунду. Но с умным видом.
И ты потом будешь виноват.
5️⃣ “Запускаем сразу в прод — потом разберёмся”
Не разберётесь.
Будет пожар, стыд и ор “лучше бы на Excel остались”.
6️⃣ “А давайте сгенерим всю документацию нейросеткой!”
Генерация ≠ понимание.
Потом ходишь с этим текстом, как с бомбой: вроде красиво, но никто не уверен, что там внутри. Даже сам ИИ.
7️⃣ “Главное — красиво презентовать”
Если в проекте больше времени уходит на подготовку слайдов, чем на валидацию модели — это уже не AI-проект. Это корпоративный театр.
8️⃣ “AI сократит сотрудников и сэкономит деньги”
ИИ не лечит токсичный процесс.
Он его автоматизирует. Быстрее. И больнее.
Люди уйдут, бардак останется.
9️⃣ “Сделаем MVP, а потом подумаем про данные”
Подсказка: MVP = Minimum Viable Product.
А если данных нет — то это MNP = Minimum Nothing Product .
🔟 “Мы наняли одного data scientist-а — он всё сделает”
Если AI-проект — это космический корабль, то один датасаентист — это чувак с отвёрткой и шлемом из фольги.
Без команды, процессов и поддержки — он просто сгорит в атмосфере.
Если узнал в каком-то пункте свой проект — не расстраивайся. Это ещё не похороны. Пока ты читаешь этот пост — есть шанс откачать.
📌 Как оживлять:
- Начинай с боли, а не с хайпа
- Работай с данными раньше, чем с интерфейсами
- Прототипируй быстро, но честно
- Не строй презентацию на мечтах
- Помни: AI — это усилитель, а не маг-чародей)
❓ С какими приколами ты встречался при желании внедрить AI?
@alexs_journal
Проведя достаточно большое количество пресэйлов (100+) по Gen AI тематике, составил небольшой чек-лист запросов/проектов, которые вряд ли взлетят)
Цель проекта: “Внедрить ИИ”.
Зачем? Кому? Что должно получиться? Неясно
Хороните сразу.
Зависть — плохой стратег.
Копировать чужое решение без своих данных, процессов и боли — путь к провалу.
Это как надевать чужие очки и удивляться, почему всё мутно.
Идея норм. Вот только:
- Чатик есть
- Данных нет
- Понимания, как работает retriever — тоже нет
Презентация будет норм. Работы — нет.
Это не магия, это машинка с правилами.
Если ты не скажешь, что делать — она сделает ерунду. Но с умным видом.
И ты потом будешь виноват.
Не разберётесь.
Будет пожар, стыд и ор “лучше бы на Excel остались”.
Генерация ≠ понимание.
Потом ходишь с этим текстом, как с бомбой: вроде красиво, но никто не уверен, что там внутри. Даже сам ИИ.
Если в проекте больше времени уходит на подготовку слайдов, чем на валидацию модели — это уже не AI-проект. Это корпоративный театр.
ИИ не лечит токсичный процесс.
Он его автоматизирует. Быстрее. И больнее.
Люди уйдут, бардак останется.
Подсказка: MVP = Minimum Viable Product.
А если данных нет — то это
Если AI-проект — это космический корабль, то один датасаентист — это чувак с отвёрткой и шлемом из фольги.
Без команды, процессов и поддержки — он просто сгорит в атмосфере.
Если узнал в каком-то пункте свой проект — не расстраивайся. Это ещё не похороны. Пока ты читаешь этот пост — есть шанс откачать.
- Начинай с боли, а не с хайпа
- Работай с данными раньше, чем с интерфейсами
- Прототипируй быстро, но честно
- Не строй презентацию на мечтах
- Помни: AI — это усилитель, а не маг-чародей)
@alexs_journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Еще год назад я начал систематически вести этот канал и вот сегодня нас 4 000+!
Каждый новый человек и реакция на посте мотивирует искать для вас действительно уникальный контент про реальный опыт в AI
Из интересного - у меня это новая веха в моей карьере, так что скоро будет еще больше научного и около научного контента
Кстати у нас есть ламповый чат канала, где мы часто обсуждаем AI за рамками постов в канале
https://www.tgoop.com/neuraldeepchat
Каждый новый человек и реакция на посте мотивирует искать для вас действительно уникальный контент про реальный опыт в AI
Из интересного - у меня это новая веха в моей карьере, так что скоро будет еще больше научного и около научного контента
Кстати у нас есть ламповый чат канала, где мы часто обсуждаем AI за рамками постов в канале
https://www.tgoop.com/neuraldeepchat
Forwarded from Михаил Степанов
Многие разработчики вынуждены использовать jupyterlab \ jupyterhub во время работы, не имея возможности использовать VSCODE.
Наши товарищи из coder проделали большую работу, чтобы сделать возможным использование VSCODE через браузер.
Моя задача — подружить эти две технологии и предоставить возможность быстрого и удобного запуска обоих этих приложений.
Поэтому представляю вам библиотеку jupyter_coder_server.
Данная библиотека работает в паре с библиотекой jupyter-server-proxy, которая в свою очередь позволяет создавать дополнительные серверы внутри Jupyter.
Библиотека предоставляет возможность запускать Web Based VSCODE и Web Based Файловый менеджер.
Для установки библиотеки всего лишь необходимо выполнить команду в терминале jupyter, а после установки "перезапустить" гуи сервиса. (или перезапустить ваш jupyter)
Наши товарищи из coder проделали большую работу, чтобы сделать возможным использование VSCODE через браузер.
Моя задача — подружить эти две технологии и предоставить возможность быстрого и удобного запуска обоих этих приложений.
Поэтому представляю вам библиотеку jupyter_coder_server.
Данная библиотека работает в паре с библиотекой jupyter-server-proxy, которая в свою очередь позволяет создавать дополнительные серверы внутри Jupyter.
Библиотека предоставляет возможность запускать Web Based VSCODE и Web Based Файловый менеджер.
Для установки библиотеки всего лишь необходимо выполнить команду в терминале jupyter, а после установки "перезапустить" гуи сервиса. (или перезапустить ваш jupyter)
pip install jupyter_coder_server
FireBase Studio от google New Call или New Top?
Рассказывает наш NLP Lead rmr_ai Евгений Орлов
Попробовал FireBase Studio от гугла и делюсь результатами тестирования.
При старте создается новый workspace, где можно выбрать или создание нового проекта на разных языках или загрузку уже существующего проекта, например из гитхаба.
Вся работа может вестись в двух режимах - с превью / классическая IDE
В превью в основном окне показывают сразу же созданный сайт, в IDE все как всегда.
Судя по тексту установки экстеншена для IDE под капотом кроется старый добрый VScode (и визуально он тоже очень походит)
Для теста попросил нагенерить проект по созданию презентаций в корпоративном стиле.
С генерацией интерфейса худо бедно gemini в итоге справилась, но заставить бэк по генерации презентаций по нажатию на кнопку работать в течении своего теста я так и не смог.
В итоге что можно сказать:
- круто, что видно сразу же как выглядит проект в превью (и можно открыть в отдельной вкладке) и потыкать, от сюда можно работать над улучшением проекта гораздо быстрее и проще
- IDE - это по сути vscode в браузере, что само по себе уже неплохо, так как это снимает необходимость настраивать локальные окружения и тд. Как это будет работать с проектами крупнее и сложнее - неизвестно (скорее всего с проблемами)
- революции в вайбкодинге не случилось. Все те же проблемы, что и в других IDE типа курсора и ко.
- есть еще режим работы в режиме drawing в интерфейсе (что то дорисовываем, дописываем, в gemini отправляется скриншот для переделки) - может быть удобно для работы над интерфейсом, чтобы визуально показывать где нужно исправить, а не ухищряться в промптах
Инструмент больше для интерфейсных прототипов чем бэка?
Рассказывает наш NLP Lead rmr_ai Евгений Орлов
Попробовал FireBase Studio от гугла и делюсь результатами тестирования.
При старте создается новый workspace, где можно выбрать или создание нового проекта на разных языках или загрузку уже существующего проекта, например из гитхаба.
Вся работа может вестись в двух режимах - с превью / классическая IDE
В превью в основном окне показывают сразу же созданный сайт, в IDE все как всегда.
Судя по тексту установки экстеншена для IDE под капотом кроется старый добрый VScode (и визуально он тоже очень походит)
Для теста попросил нагенерить проект по созданию презентаций в корпоративном стиле.
С генерацией интерфейса худо бедно gemini в итоге справилась, но заставить бэк по генерации презентаций по нажатию на кнопку работать в течении своего теста я так и не смог.
В итоге что можно сказать:
- круто, что видно сразу же как выглядит проект в превью (и можно открыть в отдельной вкладке) и потыкать, от сюда можно работать над улучшением проекта гораздо быстрее и проще
- IDE - это по сути vscode в браузере, что само по себе уже неплохо, так как это снимает необходимость настраивать локальные окружения и тд. Как это будет работать с проектами крупнее и сложнее - неизвестно (скорее всего с проблемами)
- революции в вайбкодинге не случилось. Все те же проблемы, что и в других IDE типа курсора и ко.
- есть еще режим работы в режиме drawing в интерфейсе (что то дорисовываем, дописываем, в gemini отправляется скриншот для переделки) - может быть удобно для работы над интерфейсом, чтобы визуально показывать где нужно исправить, а не ухищряться в промптах
Инструмент больше для интерфейсных прототипов чем бэка?
Продолжаем тестировать разные LLM+IDE
Евгений продолжает свое исследование AI-инструментов для разработки.
В этот раз попробовал Lovable и Bolt:
Продолжаем делать прототип интерфейса для генерации презентаций
В Lovable создал крутой прототип с визуальной точки зрения, что-то похожее на реальное приложение
Почти никакие кнопки не работают
Бэка работающего видимо тоже нет
Редактор кода явно простенький и работает только при связи с GitHub
В общем, вывод:
Может создать первый драфт фронта визуально более похожий на что-то реальное
Нет нормального редактора кода
С бэком также не работает ничего
Bolt - ровно то же самое:
Пытался итеративно делать разработку, скорее шаг за шагом, создавая мини-прототипы
В итоге поломал все приложение на этапе где надо было подключить БД
Визуально также - вроде неплохо, но ничего не работало
Столкнулся с лимитом на работу (на предыдущих не утыкался с бесплатным аккаунтом)
Видимо эти все инструменты подходят чтобы создать прототип для фронта, но с бэком надо самому разбираться!
Stay Tuned заказывайте еще разборы
Евгений продолжает свое исследование AI-инструментов для разработки.
В этот раз попробовал Lovable и Bolt:
Продолжаем делать прототип интерфейса для генерации презентаций
В Lovable создал крутой прототип с визуальной точки зрения, что-то похожее на реальное приложение
Почти никакие кнопки не работают
Бэка работающего видимо тоже нет
Редактор кода явно простенький и работает только при связи с GitHub
В общем, вывод:
Может создать первый драфт фронта визуально более похожий на что-то реальное
Нет нормального редактора кода
С бэком также не работает ничего
Bolt - ровно то же самое:
Пытался итеративно делать разработку, скорее шаг за шагом, создавая мини-прототипы
В итоге поломал все приложение на этапе где надо было подключить БД
Визуально также - вроде неплохо, но ничего не работало
Столкнулся с лимитом на работу (на предыдущих не утыкался с бесплатным аккаунтом)
Видимо эти все инструменты подходят чтобы создать прототип для фронта, но с бэком надо самому разбираться!
Stay Tuned заказывайте еще разборы