CrowsHaveEyes

CrowsHaveEyes

На Пикабу
230 рейтинг 15 подписчиков 1 подписка 21 пост 0 в горячем
8

Разрабатываю MCP интеграции к платформе AI агентов - ключевые моменты

AI технологии меняются так быстро, что каждые несколько месяцев задаешься вопросом: чем сейчас лучше всего заняться в этой индустрии? И ответ каждый раз новый.

Я недавно понял, что сейчас самое время заняться MCP — протоколом контекста моделей, и открыть возможности внешних интеграций для моих AI агентов. По мере того, как растет количество публично доступных MCP серверов, разница между агентом с MCP-адаптером и без такового приближается к разнице между компьютером с интернетом и без.

Инициатива OpenAI, которые адаптировали MCP для своей платформы приложений внутри ChatGPT, произвела на меня определенное впечатление, и я проделал довольно основательный эксперимент (на трех облачных H200 и DeepSeek V3.2-Exp), показавший, что основной функционал такой платформы можно воспроизвести усилиями одного разработчика.

Сам эксперимент - в этом видео:

Вместо ChatGPT я использовал Open WebUI, который поддерживает MCP из коробки. Логичный выбор — это самый полноценный открытый аналог веб-интерфейса ChatGPT.

Однако, ограничения Open WebUI по части MCP меня сильно разочаровали. Моей целью было сделать как у OpenAI: при желании пользователь может передать URL своего MCP-сервера на инференс-API, и этого должно быть достаточно, чтобы вызывать его tools.

tools=[

{

"type": "mcp",

"server_label": "deepwiki",

"server_url": "https://mcp.deepwiki.com/mcp",

"require_approval": {

"never": {

"tool_names": ["ask_question", "read_wiki_structure"]

}

}

},

]

Но Open WebUI не поддерживает напрямую транспортные протоколы, через которые MCP-клиент и сервер обмениваются сообщениями - streamable HTTP и SSE. Вместо этого у Open WebUI есть собственный прокси (mcpo), с помощью которого можно конвертировать MCP сервер, доступный локально через stdio, в RESTful HTTP. Прямо скажем, неудобно.

У большинства разработчиков задача сводится к деплою готового MCP сервера, реализующего какую-либо внешнюю интеграцию - например, с Jira или PostgreSQL — и его связке с AI-агентом.

Поэтому я подумал: а почему бы не сделать платформу, позволяющую автоматизировать оба шага, или во всяком случае дать разработчику инструменты, позволяющие все сделать максимально просто?

Хорошо бы, чтобы платформа поддерживала понятный удобный пользовательский интерфейс - Open WebUI, но без выявленных выше ограничений. На самом деле одного Open WebUI мало; с учетом запросов рынка, как подсказывает мой опыт, нельзя забывать о популярности телеграм-ботов применительно к AI, а также о необходимости программного доступа по API. Но все же Open WebUI — хорошая стартовая точка.

Решение, которое позволяет обойти ограничения поддержики MCP протокола — это пайплайны Open WebUI. Например, вы можете поднять свой AI агент как отдельный микросервис. Пайплайн — это модуль, который свяжет агента через Open WebUI и позволит вам написать тонкую программную прослойку, чтобы конвертировать ответы агента в формат Open WebUI, добавить какие-то кастомные фичи. В моем случае это передача URL внешнего MCP-сервера.

Здесь тоже все не так просто. Предположим, что код агента написан, например, на LangChain. Мне очень не нравится официальный MCP адаптер для LangChain, мне нужно что-то более простое, желательно синхронное, совместимое с любой python-библиотекой. Клиентской библиотеки, обладающей перечисленными свойствами, в открытом доступе не хватает, и я решил написать свою.

Сам по себе MCP протокол очень прост. Клиент инициализирует сессию, согласно конвенции, определенным JSON-RPC сообщением, может вызывать список tools, prompts, resources сервера, и вызывать тулзы. По замыслу разработчиков протокола, передача JSON-RPC сообщений должна быть возможна поверх нескольких транспортных протоколов - как минимум, HTTP-стрима и stdio. Оба транспорта достаточно легко реализуются стандартными средствами Python.

Сложности начинаются, когда дело доходит до продвинутых функций MCP, таких как elicitation и sampling. Если большинство пользователей (пока) ими не пользуются, это не значит, что эти функции бесполезны.

Разрабатываю MCP интеграции к платформе AI агентов - ключевые моменты

Напротив, я убедился на опыте, что как минимум elicitation — возможность запросить детали у юзера при выполнении определенного шага рабочего процесса агента - в ряде случаев необходима.

Правда, когда мне пришлось реализовать такой механизм в реальном агенте, выбранный мной способ был далек от того elicitation, который мы видим в официальном MCP SDK от Anthropic, и не без причин. Мало того, что elicitation требует двустороннего обмена сообщениями между агентом и пользователем, так еще и агент сам должен иметь возможность задавать вопрос, выступая в некоторых случаях инициатором диалога, а не тем, кто только отвечает на сообщения пользователя. Эти ситуации пока что не проработаны в большинстве диалоговых AI-систем.

Впрочем, свой MCP-клиент я решил не перегружать нестандартным функционалом. По замыслу он должен остаться относительно простым и включать следующие компоненты:

  • MCP-сессию, реализующую отправку JSON-RPC сообщений на сервер;

  • Транспортный слой, который включает поддержку HTTP-стрима и stdio;

  • Адаптер, в настоящий момент - для LangChain/LangGraph, но с возможностью добавлять другие агентские бэкенды.

В ближайшем будущем я планирую выложить его в открытый доступ, как и часть других модулей моей платформы. Мне кажется, современная AI-платформа должна быть открытой и обеспечивать максимальную кросс-совместимость с различными AI-инструментами. Именно поэтому я изначально выбрал MCP протокол, который предназначен как раз для этого, и Open WebUI, как самый популярный открытый AI интерфейс.

Наконец, модульная архитектура пайплайнов в OpenWebUI позволяет легко поддерживать несколько LLM провайдеров - я тестировал свою платформу с API OpenAI и публичными эндпоинтами в облаке.

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

А пока я решил деплоить контейнеры с MCP в облачную среду, откуда мои агенты смогут без проблем их вызывать. Это звучит относительно просто, но неоднозначен как минимум сетевой вопрос: как сделать, чтобы общение агента с MCP было должным образом защищено?

Возникает потребность в приватной сети, но об этом уже в другой раз.

Создание платформы, которая позволяет автоматизировать интеграцию агентов с внешними инструментами, стоит на повестке дня в AI индустрии.

Однако, как и MCP протокол, эта платформа должна быть открытой для кастомизации, предоставлять разработчикам доступ к своим внутренним модулям и API. Тот уровень контроля, который дает OpenAI в случае со своими MCP коннекторами в режиме разработчика ChatGPT, на мой взгляд, недостаточен.

В этом и состоит рациональное обоснование моего пока еще экспериментального проекта.

Показать полностью 1 1
2

Облачные технологии в контексте агентских AI-систем

В настоящее время процветает разработка агентов — приложений на базе Generative AI, реализующих автономные рабочие процессы. Извлечение и анализ данных, управление детерминированными программами и так далее. Массу вещей можно автоматизировать с помощью LLM и вызова функций, отсюда и спрос на такие системы.

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

Облачные технологии в контексте агентских AI-систем

Поэтому агентские системы обычно представляют собой микросервисную архитектуру, объединяющую несколько логических блоков. Взять хотя бы ReAct паттерн, в котором reasoning агент выполняет управляющую роль, а action — отвечает за вызов функций и выполнение других действий.
И, как в любой микросервисной архитектуре, мы приходим к необходимости горизонтального масштабирования, что удобнее всего делать в облаке. Во-первых, сами LLM — очень ресурсоемкие элементы системы, инфраструктура для них требует сложной конфигурации. Об этом больше сказано ниже. Во-вторых, обмен данными между ними тоже требует правильного проектирования и развертывания дополнительных сервисов, как например векторная БД, механизмы стриминга данных, кэширования, чанкования, эмбеддингов.

Главные трудности в конфигурации облачной инфраструктуры под AI агенты, согласно моей практике, связаны с рассчетом нагрузки. Особенно это касается GPU-инфраструктуры, ответственной за хостинг LLM. Эта тема заслуживает отдельной статьи — с появлением различных алгоритмов внимания, квантизации моделей и механизмов выделения GPU-памяти, правильный подбор мощностей требует всё более нетривиальных вычислений. Было бы хорошо, если бы эта проблема также была решена на уровне облака и снимала с AI-инженеров заботу о правильно подобранной инфраструктуре. Но мы находимся на ранней ступени адаптации облаков под нужды AI, и многое приходится изобретать самостоятельно.

Зачем вообще мне понадобилось разворачивать свои ИИ модели в облаке, если можно обратиться к API OpenAI, DeepSeek или Qwen? На практике среди преимуществ открытых весов неожиданно в приоритете оказалась скорость генерации ответа. Для ряда агентских систем критическим параметром является именно скорость. На нее оказывают влияние сетевая связность, размер весов и тип квантизации, мощность GPU, параллелизм запросов, размер контекстного окна и масса других параметров, к которым разработчик далеко не всегда имеет доступ, работая с провайдерами закрытых моделей типа OpenAI.

Именно поэтому через практику я пришел к выводу, что индустрии разработки агентских приложений необходима облачная платформа, предоставляющая полный доступ к весам, данным и инфраструктуре — без этого систему не построить. С другой стороны, роль облака — максимально облегчать выделение ресурсов под LLM, дать разработчику что-то вроде «торгового автомата для LLM». Выбрал веса модели, размер контекста, параметры масштабирования, нажал на пару кнопок и получил готовый LLM-сервер.Я предполагаю, что после устранения описанных инфраструктурных трудностей порог входа в разработку AI агентов существенно снизится.

Так ли это — покажет время.

Показать полностью 1
13

Почему провалился релиз GPT-5 и каковы перспективы настоящего open AI?

Прошло уже две недели после выхода долгожданной GPT-5, которая, как казалось, должна была стать одной из главных вех в развитии AI индустрии. Но не стала — как бы ни оценивали эту модель, пессимистично или оптимистично, остается очевидным, что принципиальной разницы между ней и o4-mini, и даже DeepSeek R1 0528, нет - если говорить о качественном кратном отличии, которое ключевым образом меняло бы приложение этого AI к реальным задачам. Поэтому и воспринята новая модель была с разочарованием.

Справедливости ради стоит отметить, что как одна из многих GPT-5 — достаточно хорошая модель, точнее, несколько моделей в составе мультиагентной системы — подробнее об этом ниже. Она успешно применяет новаторские архитектурные решения, как например роутер, позволяющий автоматом адресовать вопросы либо классической LLM, либо рассуждающей модели (GPT-5 thinking). Но благодаря хайпу, раздуваемому больше двух лет с момента выхода GPT-4, от новой главной версии ожидали намного больше, причем разные категории пользователей хотели увидеть в GPT-5 разное. Разработчики вроде меня, применяющие LLM в приложениях для разных манипуляций с данными — RAG, feature extraction и многое другое — хотели увидеть модель, которая решит наконец проблему галлюцинаций и тупости в построении нестандартных логических связей. Люди, которые верят в вероятность скорого достижения AGI — ожидали, соответственно, AGI в лице GPT-5.

Попробую объяснить, почему OpenAI не оправдали ни одного из названных ожиданий, и обратимся сначала к законам масштабирования применительно к нейросетям. Краткое напоминание формулы:

L(N,D,C)≈L∞+a⋅N−α+b⋅D−β+c⋅C−γ

где:

N — количество параметров модели,

D — объем обучающих данных,

C — вычислительные затраты, например, количество шагов обучения, или операций с плавающей точкой (FLOPs),

L — ошибка,

α,β,γ — показатели убывания ошибки по мере увеличения соответствующего фактора масштабирования (N, D либо C).

Почему провалился релиз GPT-5 и каковы перспективы настоящего open AI?

В теории, если бесконечно увеличивать N,D,C, ошибка стремится к некоторому пределу L∞. В работах типа исследования OpenAI 2020 года Scaling Laws for Neural Language Models была показана устойчивую зависимость — ошибка модели убывает степенным образом при увеличении размера модели, количества данных и вычислительных затрат.

Однако выпуск GPT-5 показал, что простое увеличение масштаба уже не гарантирует столь же впечатляющего прироста качества, как в случае перехода от GPT-2 → GPT-3 → GPT-4.

Почему так произошло?

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

GPT-3 и GPT-4 обучались на практически всех доступных корпусах человеческого текста. GPT-5, вероятно, столкнулся с ситуацией, когда рост размера модели превышает доступность свежих и разнообразных данных. В терминах scaling laws:

рост параметров N перестал давать выигрыш, так как ограничивающим фактором стал D.

Кроме того, изменилось качество самих задач, которые сейчас являются ключевыми для достижения SOTA по общепринятым критериям сравнения LLM. Scaling laws описывают в первую очередь обучение на больших данных.  Но многие задачи, где тот же GPT-4 уже достиг высокого качества, требуют не только памяти и ассоциаций, но и новых когнитивных архитектур (например, планирования, логических рассуждений, интеграции с внешними инструментами).

Для повышения качества этих и подобных способностей LLM нужны не только "большие данные", но и принципиально другое качество этих данных, что еще более повышает сложность их сбора. Архитектурно GPT-5 остаётся тем же трансформером, если OpenAI о чем-то не умолчали, конечно - по их словам это обычная LLM, чуть более сильная, чем GPT-4o.

Поэтому законы масштабирования не дают ей новых когнитивных способностей. Правда, есть отдельная GPT-5 thinking, которая обучена, скорее всего, подобно любой другой LRM типа DeepSeek R1 — с применением RL, Chain-of-Thoughts файнтюнинга и алгоритмов для поиска оптимальных решений, вроде поиска по дереву Монте-Карло. Но и для LRM, по всей видимости, рост качества застопорился после o4-mini — иначе OpenAI, с их почти неограниченными GPU-ресурсами, могли бы просто масштабировать o4-mini в разы.

Посмотрим на LLM с практической точки зрения разработчика — многие прикладные применения моделей являются очень специфическими. Я, например, использую разнообразные LLM для feature extraction — извлечения некоторых узких категорий данных их технических документов, отчетов, спецификаций товаров и т.д. Как в моем случае, даже при большом объёме корпуса обучения модель сталкивается с задачами, где данные шумные, неоднозначные или редкие. Scaling laws предсказывают общий тренд снижения ошибки, но не гарантируют улучшение именно в узких "hard cases". Наоборот, иногда рост модели может усиливать галлюцинации, так как она становится увереннее в ложных выводах. На моих собственных рабочих бенчмарках качество GPT-5 очень близко — в пределах одного процента - соответствует качеству o4-mini для задач feature-extraction на русском языке. При этом, возможно, на менее специфических задачах новая версия лучше. Решение в таких случаях одно — файнтюнинг на своих данных.

Кроме того, законы масштабирования говорят, что у каждой архитектуры есть свой асимптотический предел точности. GPT-5, возможно, уже близка к этому пределу для чистого текстового трансформера. Дальнейшее развитие потребует новых парадигм: вероятно, в сторону мультимодальности и развития более сложных когнитивных способностей, чем просто развитая генерация текста.

Низкий успех GPT-5 — это не полный провал, но он отражает фундаментальное изменение в развитии ИИ: скейлинг трансформеров почти исчерпал себя. Законы масштабирования больше не обещают революции — только постепенные улучшения.

Чтобы сделать следующий скачок, индустрии придётся искать новые источники данных (например, симуляции, синтетические датасеты, самообучение), разрабатывать новые архитектуры, интегрировать внешние инструменты. В этом смысле GPT-5 — важный сигнал: эра "чистого скейлинга" закончилась, начинается эра архитектурных инноваций. Важны инфраструктурные улучшения, чтобы не только OpenAI, но и вообще любой AI-провайдер мог с легкостью разворачивать модели в GPU-облаке. Важно разнообразие самих моделей, и здесь эстафета переходит к опенсорсным нейронным архитектурам. У них сейчас гораздо больше разнообразия и в отношении данных, и в архитектурных паттернах, чем у пропиетарных аналогов, а значит, и больший потенциал нащупать перспективный подход, который принесет больше результатов, чем скейлинг. OpenAI уже сами поняли это, чем и объясняется первый за шесть лет релиз весов их LLM gpt-oss, близкой по качеству к флагманским, в открытый доступ.

Исследователям и разработчикам стоит сосредоточиться на децентрализации AI — снятии ограничений со стороны существующих архитектур, фреймворков, библиотек на использование разных типов нейросетей и подходов к ML. Это большое поле для разработки новых ML-инструментов с большей кросс-совместимостью и ориентацией на опенсорс, чем существующие.

Показать полностью 1
0

Как я разрабатываю агентские ИИ системы для извлечения признаков (feature-extraction) из мультимодальных данных

Извлечение признаков (feature extraction) из текстов — ключевой шаг при анализе документов: он является основной практической частью таких задач по обработке данных, как классификация, тематическое моделирование, NER, QA. Если раньше почти что для каждой из таких задач, и в особенности для разных модальностей данных использовались специализированные архитектуры нейронных сетей, то сейчас подобные системы обычно строятся вокруг LLM/VLM. Однако и современные модели на практике настраиваются под конкретные задачи через fine‑tuning или distillation, в связке с retrieval (RAG) и агентскими архитектурами.

В этой статье я рассматриваю свой опыт проектирования и разработки агентов для выполнения feature-extraction. При наличии мультимодальных данных с разнородной структурой - тексты, PDF, изображения - мне приходится извлекать нужные пользователю фрагменты информации. Для этого я перебрал различные подходы - в зависимости от сложности задачи - и теперь пора сравнить их эффективность и отметить сложности реализации.

Традиционный подход: LLM + RAG, которого уже не достаточно

Retrieval‑Augmented Generation (RAG) — тандем LLM и векторных баз для поиска релевантных фрагментов, вставляемых в контекст перед генерацией, который обрел популярность в последние год-полтора благодаря нескольким безусловным преимуществам.

Этот подход позволяет использовать модели общего назначения на узкоспециализированных доменах без полного дообучения. Он и сейчас является самым надежным и дешевым способом снизить галлюцинации, даёт ссылки на документы и улучшает точность ответа. RAG используется в цепочке следующих логических шагов, через которые проходят данные в системе: векторизация → recall → prompt → LLM → извлечение структурированных данных.

Теперь о минусах RAG. Описанная методика только дополняет контекст модели релевантными данными, но не повышает способность самой LLM к извлечению нужных признаков. Эта способность зависит от того, каким задачам и на каких данных модель была обучена. К тому же RAG добавляет несколько архитектурных и прикладных сложностей - пайплайн с векторной базой, embedding, поиск по индексу, чанкинг данных, который может быть нетривиальным процессом с применением различных методик (таких как Semantic Chunking).

Сейчас контекстное окно модели позволяет вместить намного больше данных, чем раньше - взять хотя бы 1 млн токенов у Llama 4, так что необходимость в чанкинге и самом RAG уже не настолько острая. Есть, конечно, проблема понимания длинного контекста. Важно понимать, что при решении практических задач точность LLM может падать пропорционально длине контекста - на эту тему есть интересный бенчмарк:

Разные модели имеют разные показатели long context understanding, как видно из таблицы выше. Их точность для определенных задач можно увеличить двумя способами - SFT-файнтюнингом на размеченных данных и дистилляцией - передачей знаний от более сильной модели.

Fine‑tuning: точечное улучшение LLM

Файнтюнинг изначально был менее доступен, чем RAG - во-первых, он требует понимания того, как работает оптимизация весов большой языковой модели-трансформера (если мы не говорим про файнтюнинг каких-то других архитектур нейросетей). Во-вторых, он требует набора данных (как правило, размеченных, если мы говорим про Supervised Fine-Tuning), и в третьих, он требует вычислительных мощностей, таких как GPU-кластер.

В результате файнтюнинг позволяет настроить веса модели под конкретные инструкции, задачи, формат данных, что значительно повышает точность модели в определенном специализированном домене.

На своем опыте я сделал следующий вывод: файнтюнинг необходим для разработки агентов, особенно в области feature-extraction задач, это очень эффективная практика, которая должна быть взята на вооружение разработчиками, так как она закрывает недостатки RAG и служит необходимым компонентом прикладных ИИ систем. Перечисленные выше трудности файнтюнинга тоже постепенно решаются - во-первых, облачные провайдеры делают доступными вычислительные мощности. В моих статьях и видео достаточно гайдов по использованию облака для файнтюнинга. Чтобы экономить на GPU, по-прежнему остается актуальной методика Low-Rank Adaptation (LoRA), хотя во многих случаях и полный файнтюнинг, который модифицирует веса модели полностью, тоже возможен и оправдан. Ведь для узко специализированной задачи может быть достаточно обучить модель на совсем небольшом наборе данных - 100-500 примеров.

Динамическая квантизация в сочетании с LoRA (QLoRA) позволяет еще сильнее сократить расход видеопамяти и время обучения модели.

В целом SFT-файнтюнинг можно разделить на следующие шаги: подготовка датасета → формирование train и validation наборов → обучение → оценка. В моем последнем видео я "начал с конца" и разобрал прикладные аспекты оценки (evaluation) при разработке агентских систем. Лишь недавно я обратил внимание на библиотеки для evaluation, такие как openevals в экосистеме Langchain/Langsmith, о которых в знал и раньше, но обходился простым скриптингом. Для тех, кто только начинает знакомство с evals, будет полезен мой ноутбук с экспериментами на Langchain/Langsmith и openevals.

При подготовке данных для feature extraction важно выбрать итоговый формат данных, который будет понятен и человеку, и LLM. При небольшом объеме данных самое важное - качественные примеры ответов (output), которые готовятся обычно человеком, вручную. Это особенно актуально для специализированных случаев feature-extraction - например, если вы разрабатываете систему, которая будет читать технические спецификации изделий, товарные коды и тому подобные типы данных. Для составления такого датасета придется привлекать человека с профессиональными знаниями в соответствующем домене. А для LLM чем проще выходной формат данных, тем меньше вероятность галлюцинаций. Поэтому я руководствуюсь тремя принципами -

1. Не усложнять выходной формат данных применением, например, JSON или XML - простого текста в большинстве случаев достаточно;

2. Выполнять feature-extraction из минимальной единицы входных данных за одну генерацию. Это может быть одна PDF-страница, изображение, параграф текста;

3. Использовать Chain-of-Thoughts для валидации процесса извлечения.

Само обучение, как ни странно, вызывает меньше всего проблем - используйте готовые средства обучения библиотеки transformers или API OpenAI, контролируйте качество чекпоинтов, своевременно используя evaluation, и следите за оверфиттингом.

Distillation: перенос знания

Distillation — это обучение компактных или более слабых моделей на основе поведения более сильной LLM‑«учителя». Это еще один способ повысить качество модели, часто менее затратный, чем SFT-файнтюнинг - достаточно просто сгенерировать датасет с помощью модели-учителя, без участия человека.

Отличным практическим примером перечисленных методик может послужить исследование технологического института Джорджии, опубликованное в январе 2025.

Авторами была реализована следующая архитектура:

DistilBERT + fine‑tuning на 10 000 документов → компактная модель с эффективным временем обучения (4–9 ч на ПК) с 97% качества модели-родителя. Пайплайн извлечения признаков включал следующие шаги:

  • Сэмплинг 10k примеров из тестового корпуса (объявления вакансий) с целью извлечения признаков.

  • Разбивка на чанки с применением Semantic Chunking

  • Генерация ground‑truth с помощью LLM (Gemini).

  • Файнтюнинг DistilBERT - небольшой модели с архитектурой раннего трансформера, которая получена путем дистилляции знаний модели BERT. Дистилляция позволяет сохранить 97% процентов качества, при размере на 40% меньше, чем у исходной модели BERT

  • Prediction - извлечение признаков.

Логично предположить, что рассмотренные в этой статье методики извлечения признаков из документов можно и нужно комбинировать.

RAG — поиск релевантных фрагментов, Fine‑tuning для улучшения и стабилизации ответов модели, и Distillation в эффективной агентской системе дополняется промпт-инжинирингом и CoT, Chain‑of‑thoughts, для самовалидации системой извлеченной информации и ее автоматического итеративного приближения к ожидаемому результату.

Показать полностью 2
3

Как обучить русскоязычную модель рассуждений - LRM?

Ранее на моем YouTube-канале уже были видео о моделях рассуждений — OpenAI o1/o3, DeepSeek R1. Эти модели обучены с помощью стратегии reinforcement learning находить решения для задач, требующих логических рассуждений. Способность строить цепочки рассуждений, ведущих к решению поставленной задачи, открывают возможность применения таких моделей в математике, программировании и других подобных направлениях.

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

Есть интересный пример — коллекция моделей R1 Multilingual от японской компании Lightblue, которая ранее создала открытый мультиязычный файнтюнг Llama 3 - Suzume. Эта новая коллекция содержит модели рассуждений на базе DeepSeek-R1-Distill-Qwen, дистиллированных с помощью DeepSeek R1 версий Qwen. Что более важно - эти модели получены путем файнтюнинга на мультиязычном CoT (Chain-of-Thoughts), и данные CoT опубликованы на HuggingFace.

Датасет содержит данные на более чем 30 языках, включая русский. Данные получены следующим образом:

Выполнена выборка промптов из открытых англоязычных датасетов с последующим переводом на различные языки. Для перевода использовалась GPT-4o, которая, кстати, хорошо показала себя при создании моего собственного датасета и русскоязычного файнтюна Llama 3 на нем. Далее авторы мультиязычного CoT-датасета сгенерировали ответы на полученные промпты с помощью deepseek-ai/DeepSeek-R1-Distill-Llama-70B восемь раз, и отфильтровали блоки <think> не на том языке, либо с нарушениями правил языка или логическими ошибками. Это достаточно интересный момент, так как разработчики полностью опубликовали код для генерации своего датасета, включая фильтрацию сгенерированных цепочек рассуждений. Если с автоматическим определением языка цепочки все достаточно просто, то для проверки ее соответствия нормам языка и, самое главное, логической корректности, пришлось опять-таки задействовать LLM. Принцип такой же, как и при использовании модели-судьи для выполнения автоматизированных evaluation-тестов.

Пример оценочного промпта из кода проекта:

fluency_system_message = f"""You are a {language} fluency evaluation AI. Given a piece of text, give the fluency and naturalness of the {language} in the text a score from 1-5. Only include your final number in your output."""

То есть модель-судья выставляет оценку от 1 до 5 правильности и естественности сгенерированного текста. Почему-то разработчики использовали GPT-4o-mini, хотя у нее самой, на мой взгляд, есть проблемы с мультиязычностью. Возможно, более правильной оценки можно добиться, используя тот же DeepSeek V3. В итоговый датасет попали только те ответы, у которых наилучшая оценка по пятибалльной шкале.

После этого датасет готов к файнтюнингу моделей рассуждений — дистиллированных на R1 версий Qwen. Для файнтюнинга моделей от 1.5 до 14B авторы использовали llamafactory (код доступен в репозитории на HF по ссылке выше) и достаточно скромные GPU-мощности: всего лишь около 10 минут на восьми NVIDIA L20. Т.е. Вы вполне можете взять GPU поменьше — например, из доступных моделей в облаке подошли бы две RTX 4090 или A10, или одна V100 - и за несколько часов достичь того же результата.

В остальном это обычный SFT-файнтюнинг в одну эпоху, без квантизации. Отдельно стоит отметить процесс evaluation — код можно найти здесь. Ниже — таблица оценок полученных моделей рассуждений для промптов на разных языках. Из нее можно сделать вывод, что модели генерируют более корректные цепочки на таких языках, как английский, немецкий, испанский и другие, наличие которых в корпусе базовой модели, можно предположить, было относительно высоким. Их оценка около 0.8, тогда как у менее распространенных в цифровом пространстве языков она ниже, например, 0.2 у тамильского.

Хорошая новость, что на русском модели научились генерировать цепочки мыслей достаточно неплохо, судя по результату evaluation — даже при том, что в датасете всего 54 примера на русском.

Показать полностью 5
2

Реализация AI агента на базе LLM с нуля – что включает цикл разработки

Разработка AI агента, использующего большие языковые модели (LLM) – это малоизвестный пока еще и потому интересный инженерный процесс, охватывающий весь цикл создания от идеи до финального развертывания. Технические стандарты разработки агентских систем пока еще формируются.  В данной статье я поделюсь своим опытом и рассмотрю ключевые этапы, технологии и практические нюансы, которые встречаются при разработке такой системы с нуля.

Начнем с подготовительного этапа постановки задач и сбора данных. Первым делом необходимо чётко определить цели и задачи будущего агента. Предположим, что в центре системы обычная LLM - в рамках этой статьи не будем рассматривать мультимодальные агенты или модели рассуждений. Важно понять, каким образом LLM будет интегрирована в общий процесс. В 99% центральным звеном интеграции будет Retrieval-Augmented Generation (RAG) пайплайн. Через него модель будет получать данные, релевантные тем задачам, которые агент должен решать. И на этапе построения пайплайна критически важен сбор и предварительная обработка данных. Собранные данные могут включать текстовые документы, логи общения пользователей, справочные материалы, которые потом помогут модели понимать контекст и давать релевантные ответы. Сложность этого этапа зависит от того, какие у вас источники данных, сколько их, насколько серьезной предварительной (перед загрузкой в индекс) обработки они требуют.

Реализация AI агента на базе LLM с нуля – что включает цикл разработки

От поставленных на предыдущем этапе целей для MVP вашего агента и от собранных данных зависит решение, какую именно LLM использовать, и какой будет архитектура всей системы. Выбор сейчас очень широкий - есть модели с открытым исходным кодом и коммерческие решения, и выбор, очевидно, влияет на последующую инфраструктуру и масштабирование. Например, многие разработчики обращаются к моделям с открытыми весами наподобие LLaMA, учитывая их гибкость и возможность дальнейшего файнтюнинга. Однако вычислительные требования и довольно сложный программный стек накладывают определенные ограничения. Необходимо рассчитать заранее мощности, ваша инфраструктура в большинстве случаев должна поддерживать CUDA или один из немногочисленных альтернативных фреймворков для GPU-ускорения (можно посмотреть в сторону облачных платформ, где CUDA-стек поставляется из коробки), а также возможность интеграции с ML-библиотеками, такими как PyTorch или TensorFlow.

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

Самая замечательная часть - обучение и оптимизация модели. Чаще всего это файнтюнинг - если используется предобученная LLM, то её можно адаптировать под конкретные задачи с помощью дополнительного обучения на специализированных датасетах. Затем происходит настройка гиперпараметров, промпт-инжиниринг и оптимизация модели под конкретные сценарии использования. На этом этапе не обходится без множества evaluation-тестов. Можно взять очень общий пример - бенчмарк MT-bench для проверки на следование инструкциям. Но агенты чаще всего специализированы под конкретные случаи использования, так что полезно будет собрать свой кастомный evaluation датасет. Это позволит облегчить ручное тестирование.

Наконец, оптимизация производительности. Для ускорения инференса (да и файнтюнинга) применяются разнообразные техники квантизации. При инференсе - еще и распараллеливание запросов к модели (continuous batching), что особенно важно при работе с высокими нагрузками.
После того как модель готова, наступает этап её интеграции в существующую инфраструктуру. Об этом я достаточно подробно писал в другой статье.

Для успешной эксплуатации AI агента необходимо проводить регулярное (лучше автоматизированное) тестирование системы - были уже упомянуты evaluation-тесты самой LLM, но не стоит забывать и о других компонентах системы, будь то API, БД или другие модули, которые тоже нужно тестировать.

Наконец, пару слов о финальном этапе разработки – это развертывание системы в рабочей среде и её последующее обслуживание. Нужно быть готовым к частым обновлениям - в стремительно развивающейся ML-отрасли LLM приходится постоянно дообучать, а то и менять на совершенно новые, сегодня GPT-4o, а завтра DeepSeek. Вычислительные ресурсы при этом то и дело приходится масштабировать. Поэтому для поддержки агентской системы понадобится полноценная MLOps-команда. Это лишь некоторые из трудностей, поскольку, возвращаясь к первоначальной мысли этой статьи, разработка агентских систем - во многом неисследованная территория.

Показать полностью 1
6

Современные требования к инфраструктуре для агентских AI-систем. Развертывание, поддержка и операционные расходы

Агентские AI-системы, которые могут взаимодействовать с окружением посредством сложных интеграций, принимать автономные решения и адекватно реагировать на обратную связь от пользователя, требуют серьезной инфраструктурной поддержки. В этой статье я собираюсь рассмотреть ключевые аспекты развертывания и поддержки таких систем как в облаке, так и на выделенных кластерах. За основу я возьму свой опыт развертывания агентской системы в кластере Linux-серверов, где все сложности по конфигурации и поддержке инфраструктуры ложатся на разработчика, а также в облаке с более широкими возможностями автоматизации инфраструктурных процессов. Я рассмотрю также операционные расходы и возможные трудности, связанные с разработкой агентских систем под каждую из платформ.

Современные требования к инфраструктуре для агентских AI-систем. Развертывание, поддержка и операционные расходы

Начнем с основных компонентов инфраструктуры агентских AI-систем. Прежде чем рассматривать конкретные сценарии развертывания, стоит выделить следующие ключевые компоненты инфраструктуры агентской AI-системы:

  • Облачные или локальные вычислительные ресурсы (GPU, TPU, CPU-кластеры). Лет шесть назад мне пришлось переоборудовать под GPU-кластер древнюю майнинг-ферму, где все необходимое для ML-стека окружение приходилось настраивать с нуля. Сейчас, как правило, я работаю с виртуальными GPU-серверами в облаке, используя готовые образы с необходимым набором библиотек (CUDA и т. д.);

  • Системы хранения данных (БД, хранилища файлов и объектов, распределенные файловые системы). В 99% случаев агенты будут работать с данными, получаемыми из различных внешних источников и загружаемыми в RAG пайплайн. Изначально эти данные могут представлять собой текстовые или другие файлы, и для операций с ними очень популярны объектные хранилища, которые сами по себе максимально просты - сложности возникают, когда эти файлы нужно передавать в пайплайн для дальнейшей обработки, обычно в больших объемах. Для этого тоже есть популярные решения, такие как AWS Kinesis, Kafka, Airflow;

  • Сетевые решения для обмена данными внутри кластера. Агентская система включает несколько компонентов, часто это несколько моделей-агентов, каждый работает с назначенной ему группой задач. Сетевой обмен между ними представляет довольно нетривиальный процесс. Хорошо, если разработчик использует API какой-то AI-платформы вроде OpenAI, т. е. он сам отвечает за реализацию только клиентской части. Тогда его забота - это обмен сообщениями между агентами по HTTP/gRPC, хотя все может быть несколько сложнее, если речь идет о мультимодальных агентах (могут понадобиться мультимедиа-протоколы - я, например, использовал RTP/UDP). A вот если система предполагает хостинг своих моделей локально или в облаке, то приходится думать и о пропускной способности видеопамяти каждого из GPU-серверов, о том, сколько запросов они могут обрабатывать параллельно при инференсе. Это требует отдельной специализированной инфраструктуры, такой как LLM-серверы с поддержкой continuous batching (TGI, vLLM). И, наконец, обмен данными между несколькими GPU в кластере. Есть hardware-решения и стандарты для этого, тот же NVIDIA NVLink.

  • Оркестрация и управление контейнерами (Docker, Kubernetes). В многокомпонентной системе, каковую представляют собой агенты, без контеризации никак. Несколько лет назад, разрабатывая систему в кластере из нескольких железных серверов на Centos 7, я просто запускал все сервисы в докере и docker-compose, включая несколько NLU-агентов на ранних трансформерах. Однозначно это не самое оптимальное решение, для облегчения оркестрации ваших контейнеров рекомендуется Kubernetes. Не забудем про средства мониторинга и логирования (Prometheus, Grafana, ELK-стек), автоматизированный CI/CD.

С учетом всего вышесказанного, чем больше перечисленного выбранная вами облачная платформа предоставляет из коробки, тем лучше она подходит для развертывания агентских AI-систем. Такие системы имеют тенденцию к масштабированию объемов данных и GPU ресурсов, так что вам будет жизненно необходимо иметь возможность увеличивать мощности по мере необходимость. Хорошо, если вашу инфраструктуру легко тестировать на совместимость с новыми конфигурациями.  Наконец, бонус в пользу облачных платформ - высокая доступность: SLA провайдеров обеспечивает надежность.

Есть,  однако, некоторые минусы и сложности - обычно в облаке достаточно высокие операционные расходы: почасовая тарификация GPU и TPU-ресурсов. Также вечная проблема облаков - ограничения по конфигурации: нельзя полноценно оптимизировать железо. Поэтому рассмотрим чуть подробнее развертывание агентской системы на выделенном кластере. Здесь очень важен выбор аппаратного обеспечения. Если агентская AI-система требует постоянных вычислений, то вместо стороннего API для инференса может быть выгоднее использовать собственный кластер с GPU-серверами. Для агентов, работающих с RAG и промежуточными шагами генерации, необходимыми для построения цепочек рассуждений, скорость генерации токенов имеет даже более критическое значение, чем для простых чатботов. Так что не стоит забывать сказанное выше про требования к сетевой инфраструктуре, и задействовать высокоскоростные сети, например, InfiniBand и упомянутый NVLink.

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

Однако первоначально кластер требует более высоких первоначальных инвестиций, даже если вы не строите, как Илон Маск, датацентр Colossus c 200K H100. И не только инвестиций в железо, но и в команду с более высоким уровнем экспертизы в области инфраструктуры, так как с первых дней перед вами встанет необходимость администрирования кластера. Наконец, есть такой существенный для агентских систем минус, как ограниченная по сравнению с облаком масштабируемость.

Что касается операционных расходов, oсновные статьи - это энергопотребление: GPU-кластеры требуют значительных мощностей, пропиетарное закрытое ПО: коммерческие AI-решения могут быть дорогими, и обслуживание: техподдержка, обновления, обеспечение отказоустойчивости.

Трудности в эксплуатации кластера, к которым нужно быть готовым - это балансировка нагрузки: распределение вычислений по узлам, задача, которая никогда не была тривиальной; обновление и файнтюнинг моделей (если вы хотите использовать открытые веса) и организация CI/CD для ML. Наконец, необходим мониторинг и отладка - контроль метрик, журналирование.

В итоге выбор между облаком и выделенным кластером зависит от требований агентской AI-системы. Облако подходит для масштабируемых решений и быстрого развертывания, а собственные кластеры оправданы при постоянных высоких нагрузках.

Показать полностью 1
13

Grok 3 бета - эпоха "думающих" агентов

Grok 3 — это последняя серия моделей компании xAI Илона Маска. Представленная 17 февраля 2025 года, эта модель была обучена с использованием суперкомпьютера Colossus, оснащенного около 200 000 графических процессоров Nvidia H100, что в десять раз превышает вычислительные мощности, использованные для предыдущей версии Grok 2.

Согласно результатам бенчмарков, представленным xAI, Grok 3 превосходит другие передовые модели, такие как GPT-4o, Claude 3.5 Sonnet, Gemini-2 Pro и DeepSeek-V3, в областях математики, программирования и научных исследований.

Модель способна решать сложные математические задачи, проводить научные исследования и создавать простые игры. Например, во время презентации Grok 3 сгенерировал вариант игры, сочетающий элементы «Тетриса» и «три в ряд».

Немаловажным преимуществом этой модели является контекстное окно 1 миллион токенов - в 8 раз больше, чем у предыдущих версий.

Помимо Grok 3 и Grok 3 mini, xAI выпустили в релиз две бета-модели рассуждений - Grok 3 (Think) и Grok 3 mini (Think). Как легко догадаться, они обучены на весах двух названных базовых моделей с помощью Reinforcement Learning совершенствовать процесс chain-of-thoughts. Это позволяет моделям Think находить оптимальные стратегии решения задач, находить ошибки в своих рассуждениях, то есть делать все то, чему обучены OpenAI o1 и DeepSeek R1. На процесс рассуждений у Grok 3 может уходить от нескольких секунд до нескольких минут.

Технически обучить веса небольшой модели строить и оптимизировать цепочки рассуждений можно и на достаточно небольших мощностях, арендовав облачные GPU. Некоторые подробности о процессе обучения есть в одном из моих видео.

Особенность Grok 3 в том, что Reinforcement Learning осуществлялся в GPU-кластере невиданных до этого масштабов.

Доступ к Grok 3 первоначально предоставлялся подписчикам X уровня Premium+, стоимость которой составляет около $40 в месяц. Кроме того, xAI предлагает подписку SuperGrok за $30 в месяц или $300 в год, предоставляющую расширенные возможности, включая доступ к новым функциям и неограниченное количество кредитов для генерации изображений.

Впоследствии, однако, xAI анонсировала в X, что доступ к чат-боту с Grok 3 в настоящее время предоставляется бесплатно, “пока наши сервера не расплавятся”.

В посте также говорится, что подписчики X Premium+ и SuperGrok получат расширенный функционал, а также ранний доступ к возможностям вроде Voice Mode, которые еще не вышли в релиз.

Здесь следует отметить, что речь идет об использовании модели Grok 3 через интерфейс чатбота. В ближайших планах xAI — добавить в Grok 3 голосовой режим и предоставить программный доступ к модели через API.

Особенный интерес представляют агенты на базе Grok 3, первый из них - DeepSearch - уже доступен через интерфейс чата. Он также будет доступен через корпоративный API, чтобы компании автоматизировали с его помощью свои бизнес-процессы.

Как заявили xAI в анонсе Grok 3:

чтобы познать Вселенную, мы должны создать интерейс между Grok и миром. Оснащенные интерпретаторами кода и веб-поиском, модели Grok 3 учатся находить недостающий контекст, динамически корректировать свой подход и улучшать рассуждения, опираясь на фидбек

Показать полностью 1 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества