Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Vyshel spring ai 210 m1
Dev48

© 2026 · All rights reserved.

Вышел Spring AI 2.1.0-M1

Источник: Spring AI 2.1.0-M1 Available Now

Вышел Spring AI 2.1.0-M1

Источник: Spring AI 2.1.0-M1 Available Now

От имени команды Spring AI и всех участников я рад объявить, что Spring AI 2.1.0-M1 был выпущен и теперь доступен в Maven Central! Примечания к выпуску | Инструкции по обновлению | Документация 2.1.0-M1 — первая веха в линейке 2.1. Она основывается на всех возможностях из 2.0.1, переносит…

27 сентября 2026 г.•Обновлено: 27 сентября 2026 г.

От имени команды Spring AI и всех участников я рад сообщить, что Spring AI 2.1.0-M1 выпущен и теперь доступен в Maven Central!

Примечания к релизу | Заметки об обновлении | Справочная документация

2.1.0-M1 — это первая веха в линейке 2.1. Она опирается на все возможности, поставлявшиеся в 2.0.1, переносит базовую версию на Spring Boot 4.2 (этот выпуск собран на базе 4.2.0-M2) и представляет три новые возможности: первоначальную поддержку структурированной упорядоченной модели для содержимого сообщений, поддержку API OpenAI Responses и способ записи предварительно вычисленных вложений в векторное хранилище.

Как и в случае с любым релизом-вехой, новые API готовы к тестированию, но могут измениться до выпуска GA. Именно ваши отзывы сейчас формируют их.

Новое в этом релизе

Части сообщений

До сих пор сообщение в Spring AI представляло собой текст плюс списки вызовов инструментов и медиаданных. Такая структура не может отразить то, что фактически возвращают современные модели: рассуждения, перемежающиеся с вызовами инструментов, текст между изображениями или специфичные для провайдера блоки, которые необходимо отправлять обратно без изменений на следующем этапе.

Теперь AssistantMessage, UserMessage и ToolResponseMessage хранят свое содержимое в виде упорядоченного списка элементов MessagePart: TextPart, ReasoningPart, ToolCallPart, ToolResultPart, MediaPart и UnknownPart. Части сохраняют тот порядок, в котором их создал провайдер, поэтому диалог воспроизводится с высокой точностью. ReasoningPart или ToolCallPart могут содержать OpaquePayload, в котором хранятся такие данные, как сигнатура мышления Anthropic или сигнатура мышления Gemini, которые должны реплицироваться без изменений. UnknownPart сохраняет «сырой» JSON любого блока, который адаптер еще не моделирует, поэтому ничто не удаляется бесследно.

Привычные методы доступа (getText(), getMedia(), getToolCalls() и новый getReasoning()) теперь являются представлениями частей, а существующие конструкторы и построители продолжают создавать их в прежнем порядке. Чтобы самостоятельно управлять порядком, добавляйте части напрямую:

Потоковые модели теперь могут доставлять часть по частям: фрагменты содержат индексированные частичные фрагменты и идентификатор ответа, а MessageAggregator восстанавливает из них полные части. Подписчики, которые считывают только getText(), видят те же текстовые дельты, что и раньше, а вызовы инструментов по-прежнему буферизуются и доставляются один раз как единый вызов. См. раздел «Части сообщений» в справочной документации.

Это первоначальная поддержка частей сообщений: только новая модель OpenAiResponsesChatModel производит и потребляет части нативно. Остальные реализации ChatModel будут переработаны для их использования в версии 2.1.0-RC1.

Это первоначальная поддержка частей сообщений: только новая модель OpenAiResponsesChatModel производит и потребляет части нативно. Остальные реализации ChatModel будут переработаны для их использования в версии 2.1.0-RC1.

API ответов OpenAI (Responses API)

Новая модель OpenAiResponsesChatModel talks to OpenAI's /v1/responses endpoint, наряду с существующей моделью OpenAiChatModel, основанной на Chat Completions. Главная причина использовать ее — корректность: начиная с GPT-5.4, Chat Completions не поддерживает вызов инструментов в сочетании с уровнем рассуждений, отличным от нулевого, в то время как Responses поддерживает. Если вы создаете агент на базе текущей флагманской модели OpenAI, вам следует использовать именно эту конечную точку.

Переключение осуществляется с помощью одного свойства, а остальные настройки подключения spring.ai.openai остаются на своих местах:

Модель построена на частях сообщений. Каждый элемент в ответе Responses становится одной частью по порядку, а зашифрованное содержимое рассуждений переносится в ReasoningPart и передается обратно без изменений при вызовах инструментов, поэтому модель сохраняет ход мысли в цикле работы с инструментом. OpenAiResponsesChatModel намеренно не имеет состояния: каждый вызов отправляет весь Prompt целиком, поэтому ChatMemory, советники и RAG работают точно так же, как и с OpenAiChatModel.

OpenAiResponsesChatOptions предоставляет доступ к уровню рассуждений и их сводкам, степени детализации, структурированному выводу, а также вводу изображений и PDF. HostedTool включает инструменты, которые OpenAI запускает на своей стороне: поиск в интернете, поиск по файлам, интерпретатор кода, удаленный MCP и генерация изображений. Поддерживаются наблюдаемость и автоконфигурация. На справочной странице OpenAI Responses описаны свойства конфигурации и то, какую конечную точку следует выбрать.

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

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

Запись предварительно вычисленных вложений (Embeddings)

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

Новый VectorStore.upsert() принимает EmbeddedDocument, связывающий Document с его вектором float[], и сохраняет вектор в исходном виде:

Как следует из названия, повторная запись с тем же идентификатором заменяет строку, поэтому задание по загрузке со стабильными идентификаторами можно безопасно перезапустить после сбоя. Каждая партия проверяется на соответствие ширине индекса перед записью. pgvector, Redis, Elasticsearch и Qdrant поддерживают операции upsert в этом релизе; остальные хранилища вызывают ошибку до тех пор, пока не заявят о поддержке. Новый ключ DocumentMetadata.CONTENT_REF позволяет указать на контент, хранящийся за пределами хранилища, для строк, вектор которых получен из изображения или файла, слишком большого для встраивания. См. раздел «Запись пользовательских вложений».

Небольшие дополнения

  • Серверы Stateless MCP теперь можно настраивать с помощью бинов McpStatelessSyncServerCustomizer and McpStatelessAsyncServerCustomizer, что дублирует кастомизаторы, которые уже были у серверов с состоянием. Раньше вам приходилось исключать и переопределять весь бин сервера.
  • Автоконфигурация векторного хранилища Redis принимает пользовательские поля метаданных, передаваемые в виде бина.
  • Парсер фильтров векторного хранилища распознает целочисленные литералы вне диапазона как Long, а не завершается с ошибкой NumberFormatException.

Исправления

  • Параметры spring.ai.openai.timeout и spring.ai.openai.chat.timeout снова учитываются. Начиная с версии 2.0.1, каждый запрос имел тайм-аут 60 секунд на вызов, который переопределял настроенное значение, что приводило к прерыванию потоковых сеансов длиннее минуты с ошибкой OpenAIIoException: Stream failed.
  • Схемы инструментов в строгом режиме OpenAI используются на каждом уровне объектов. Это исправляет строгий режим для схем, созданных не собственным генератором Spring AI, таких как схемы инструментов MCP или написанные вручную схемы ввода.
  • Сообщения пользователей Bedrock, содержащие медиаданные, но не содержащие текста, больше не отправляют пустой текстовый блок, который API Converse отклонял с ошибкой 400.
  • TextReader закрывает поток ресурсов, из которого он читает, вместо того чтобы создавать утечку дескрипторов файлов для каждого документа.
  • InMemoryChatMemoryRepository копирует список сообщений при сохранении, поэтому последующие изменения в списке вызывающего кода больше не влияют на сохраненный разговор.
  • Проверка схемы MariaDBVectorStore работает, когда имя схемы не настроено, вместо сообщения о том, что существующая таблица отсутствует в схеме null.
  • Пустые ответы с изображениями от OpenAI сообщаются как неудачная генерация вместо несвязанного исключения.

Документация, зависимости и сборка

Документация клиента MCP пополнилась разделом о области видимости клиента и границах сеансов (что разделяют автоматически настроенные компоненты и как обеспечить изоляцию для каждого пользователя при необходимости), а также были уточнены рекомендации по коллизиям имен MCP и локальных инструментов. Свойство reasoning effort от OpenAI теперь задокументировано.

Spring AI теперь отслеживает Spring Boot 4.2, а Anthropic Java SDK переходит на версию 2.64.0. Сборка теперь настроена для воспроизводимости, а тесты, предполагающие завершение строк в стиле Unix, были исправлены, поэтому проект собирается в Windows.

Авторы

Спасибо всем, кто работал над этим релизом:

@CryoThrust, @JamesBLewis, @Lubaoshuai, @chabinhwang, @chensishang, @dimitarproynov, @dlwldn30, @fatan, @herder, @ilayaperumalg, @jhpark1227, @kezhenxu94, @martin-grofcik, @pengmoubuaixuexi, @sdeleuze, @sobychacko и @tzolov

  • Spring AI TypeSafe Jev 0.2.0 продолжает нарезку быстрых и структурированных решений с помощью TypeSafe Jev, представленную на этой неделе. Модель в роли судьи получает критерии кода, типизированный ввод, условные критерии и исправления самосовершенствования, а также экспериментальный JevChatModel. См. справочную документацию.
  • Безопасность MCP 0.1.14 повышает надежность серверов MCP за счет проверки заголовка Origin, ответа 401 при отсутствии ключа API и проверки URL издателя в потоке CIMD.
  • Утилиты агентов Spring AI выпустили два релиза. 0.11.0 добавляет консолидацию памяти Auto-Dream с возможностью извлечения данных между сеансами. 0.12.0 добавляет подключаемый ExecBackend с бэкэндом Docker для выполнения команд в песочнице, абстракцию Workspace, ограничение каталогов для инструментов поиска, а также InterruptAdvisor и ToolCallListener для управления циклом агента.
  • Сессия Spring AI 0.7.0 и 0.8.0 делают appendEvent идеопотентным, добавляют поиск по ключевым словам и шаблонам по сеансам с помощью CrossSessionRecallTools и предотвращают дублирование истории промптов, когда советник по памяти работает внутри цикла вызова инструментов.
  • Spring AI AgentCore 2.2.0 добавляет поддержку API сеансов Spring AI для памяти AgentCore и идентификацию AgentCore.

Что дальше

Началась работа над 2.1.0-RC1. Части сообщений составляют основу большей части этого релиза:

  • Агенты Spring AI. Мы планируем выпустить новую поддержку агентов в ноябре 2026 года в качестве отдельного проекта в рамках Spring Projects Experimental с планом объединения его со Spring AI 3.0 в середине следующего года.
  • Части сообщений у всех провайдеров. Мы проведем рефакторинг существующих реализаций ChatModel для создания и обработки содержимого MessagePart нативно, сохранив при этом обратную совместимость для кода, использующего текущие методы доступа.
  • Управление сеансами в ядре. Мы переносим ключевые части Spring AI Session непосредственно в Spring AI. Наряду с расширенным управлением историей разговоров, сжатием и извлечением данных, ее реализации SessionRepository будут сохранять полную структуру MessagePart. Рассуждения также будут сохраняться между ходами разговора с помощью постоянного хранилища, а не только репозитория в оперативной памяти.
  • MCP 2026-07-28. Ведется работа над поддержкой MCP 2026-07-28 specification, как в Java SDK для MCP, так и в абстракциях и аннотациях Spring AI MCP, построенных поверх него.

Начало работы

Попробуйте майлстоун в существующем приложении или начните новое на start.spring.io. Модель частей сообщений и API ответов — это именно те изменения, по которым мы хотим получить отзыв до релиза GA — создайте задачу, если что-то сломалось, или начните обсуждение, чтобы рассказать нам, что бы вы хотели увидеть дальше.

Удачи!

Ресурсы

Страница проекта | GitHub | | Справочная документация

← Все статьи

Ещё в разделе «Разработка ПО»

Все →
Обзор Sennheiser Momentum 5: великолепный звук, невероятное время автономной работы и минимум компромиссовПресса
Momentum

Обзор Sennheiser Momentum 5: великолепный звук, невероятное время автономной работы и минимум компромиссов

Boeing сообщает о программном сбое в 737 Max, затрагивающем некоторые функции автоматического захода на посадкуПресса
Boeing

Boeing сообщает о программном сбое в 737 Max, затрагивающем некоторые функции автоматического захода на посадку

Apple обязали выплатить 5,7 млрд долларов по иску о нарушении патентных прав на тактильные технологии в iPhone и Apple Watch
Пресса
Apple

Apple обязали выплатить 5,7 млрд долларов по иску о нарушении патентных прав на тактильные технологии в iPhone и Apple Watch

Компании выбирают САПР от PTC для разработки и проектирования продуктов
PTC

Компании выбирают САПР от PTC для разработки и проектирования продуктов

Clas Ohlson выбирает PTC FlexPLM для поддержки своей стратегии роста
PTC

Clas Ohlson выбирает PTC FlexPLM для поддержки своей стратегии роста

Canon ITS и PTC Japan запускают «Smart PLM Support Service» для поддержки трансформации рабочих процессов в сфере производства
PTC

Canon ITS и PTC Japan запускают «Smart PLM Support Service» для поддержки трансформации рабочих процессов в сфере производства

Ещё от Spring

Уже доступен Spring Boot 4.2.0-M2
Spring

Уже доступен Spring Boot 4.2.0-M2

Успешная весна начинается зимой: контрольный список для сезона планирования
Spring

Успешная весна начинается зимой: контрольный список для сезона планирования