Java становится неотъемлемой частью стека агентного искусственного интеллекта. Дэниел О, старший главный специалист Red Hat по работе с разработчиками, рассказывает на портале The New Stack о том, как начать работу с такими инструментами, как MCP, LangChain4j, Quarkus и OTel.

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

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

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

В этой статье я расскажу о следующем:

  • Почему Java хорошо подходит для агентного ИИ.
  • Чем отличаются агентные приложения.
  • Ключевые Open Source-проекты, способствующие этой трансформации, включая Model Context Protocol (MCP), LangChain4j, Quarkus и OpenTelemetry (OTel).
  • Высокоуровневое представление о том, как начать работу.

Почему Java? Почему сейчас?

Агентные приложения ИИ долговечны, имеют большое количество состояний и часто включают в себя оркестровку API, большие языковые модели (LLM), базы данных и взаимодействие с пользователем. Им требуются:

  • сильный параллелизм для обработки фоновых заданий или продолжительно выполняющихся задач;
  • надежность и наблюдаемость в производстве;
  • безопасность, производительность и интеграция с корпоративными системами.

Это именно те области, в которых Java превосходит всех. Современный язык Java с его развивающимися функциями JDK (например, виртуальными потоками), нативными облачными фреймворками и развитым инструментарием позволяет создавать быстрое, удобное в обслуживании и безопасное ИИ-нативное ПО.

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

Чем отличаются агентные ИИ-приложения?

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

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

Технологический стек: MCP, LangChain4j, Quarkus и OpenTelemtery

Основу для агентного ИИ на базе Java закладывают несколько Open Source-проектов. Вот четыре ключевых игрока:

1. MCP: агентная среда выполнения для LLM-приложений

MCP — это новый Open Source-проект от сообщества ИИ-нативных приложений, предлагающий среду выполнения, специально разработанную для агентных вычислений. Его основной задачей является создание постоянных, композитных и легко проверяемых LLM-приложений.

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

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

2. LangChain4j: оркестровка языковых моделей для Java

Вдохновленный оригинальным проектом LangChain в Python, LangChain4j привносит примитивы оркестровки LLM в Java. Эта библиотека абстрагируется от LLM и предоставляет основные строительные блоки. Эти строительные блоки облегчают создание агентов и инструментов, обеспечивают эффективное управление памятью, предлагают надежные возможности шаблонирования подсказок, поддерживают сложные рассуждения на основе «цепочки мыслей» и позволяют осуществлять поиск документов на основе LLM.

LangChain4j поддерживает основных LLM-провайдеров, такие как OpenAI, Azure, Cohere, а также локальные модели через Ollama или Hugging Face. Она предназначена для идиоматической разработки на Java: сильная типизация, конфигурация на основе аннотаций и простая интеграция с фреймворками для инъекции зависимостей (DI), такими как Spring и Quarkus.

Если вы хотите создавать агентов, которые могут думать, планировать и взаимодействовать с помощью естественного языка, LangChain4j — это ваш лучший уровень оркестровки.

3. Quarkus: нативно-облачная среда выполнения Java

Quarkus — это Kubernetes-нативный Java-фреймворк, оптимизированный для контейнеров, микросервисов, а теперь и для ИИ-нагрузок. Благодаря сверхбыстрому времени запуска, низкому потреблению памяти и нативной компиляции через GraalVM, Quarkus делает Java отличным вариантом для развертывания масштабируемых агентов ИИ.

Последние расширения Quarkus обеспечивают надежную поддержку нескольких ключевых областей. Они позволяют интегрировать LLM с помощью таких мощных библиотек, как LangChain4j. Кроме того, эти расширения облегчают реактивные рабочие процессы и расширенное событийно-ориентированное программирование. Разработчики также могут воспользоваться такими функциями, как живая перезагрузка и Dev UI, которые упрощают процесс экспериментирования с моделями ИИ. Наконец, расширения предлагают комплексный инструментарий для работы с контейнерами, позволяющий эффективно развертывать и выполнять агентов на таких платформах, как Kubernetes, Knative или в средах «функция как сервис» (Function as a Service, FaaS).

Quarkus можно рассматривать в качестве «платформы», на которой ваши ИИ-агенты могут жить, масштабироваться и подключаться к внешнему миру.

4. OpenTelemetry: фреймворк наблюдаемости

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

Возможности трассировки OTel здесь особенно полезны, поскольку позволяют разработчикам визуализировать весь «мыслительный процесс» и ход выполнения агента, отслеживая взаимодействие между различными модулями, вызовы LLM, использование внешних API и даже петли обратной связи с человеком. Такая сквозная видимость крайне важна для отладки неожиданного поведения, выявления узких мест и понимания того, почему агент принял то или иное решение или не достиг цели.

Кроме того, стандартизированный подход OTel к сбору метрик и журналам позволяет получать критически важные инсайты о производительности и стоимости LLM-взаимодействия. Разработчики могут фиксировать такие специфические показатели, как использование токенов, задержка вызовов LLM, количество ошибок и потребление ресурсов (например, GPU), что крайне важно для оптимизации производительности и операционных расходов.

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

Как все это сочетается

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

Источник: Дэниел О, компания Red Hat

Именно так все и происходит: стек агентного ИИ на базе Java может использовать для облачных микросервисов такие среды исполнения, как Quarkus, библиотеки LangChain4j для бесшовной оркестровки LLM, управления памятью и создания сложных цепочек операций, а также интегрироваться в MCP для автономного выполнения внешних инструментов для создания агентных ИИ-приложений.

Кроме того, расширения (интеграции) для Quarkus, которые упрощают интеграцию с LangChain4j и позволяют использовать LLM в приложениях на Quarkus, дополняют существующие корпоративные сервисы (например, REST API, транзакции баз данных, потоковая передача событий) сервисами ИИ, что позволяет плавно переходить от прототипа к надежному производственному развертыванию в экосистеме Java. OTel становится бесценным для наблюдения за этими сложными приложениями с интегрированным ИИ; он обеспечивает критически важную основу для отслеживания многоэтапных динамических рабочих процессов агентов, сбора важных показателей LLM-взаимодействий (таких как использование токенов и задержка) и консолидации журналов. Эта архитектура позволяет получать беспрецедентное представление о сложных рассуждениях агента, использовании инструментов и общей производительности, что крайне важно для отладки и оптимизации таких интеллектуальных систем.

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

Заключительные размышления

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

Если вы являетесь разработчиком на Java, сейчас самое время изучить этот вопрос. Вы уже знаете все самое сложное — параллелизм, архитектуру и развертывание. Благодаря таким инструментам, как MCP, LangChain4j, Quarkus и OTel, ИИ-нативный стек становится также и Java-нативным.

Агентный ИИ нужен не только стартапам или исследователям. Он нужен всем. И благодаря Java он уже становится доступным для всех.