
Самокорректирующийся структурированный вывод в Spring AI 2.0
spring_aio 4 минуты назад Самокорректирующийся структурированный вывод в Spring AI 2.0 Простой 9 мин 153 Блог компании Spring АйО Программирование * Java * Kotlin * Обзор Перевод Автор оригинала: Christian Tzolov...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Вот важная новость с фронта ИИ: spring_aio 4 минуты назад Самокорректирующийся структурированный вывод в Spring AI 2. 0 Простой 9 мин 153 Блог компании Spring АйО Программирование * Java * Kotlin * Обзор Перевод Автор оригинала: Christian Tzolov Большие языковые модели — это системы, работающие по принципу «текст на входе, текст на выходе»: их интерфейсом является естественный язык. Естественный язык удобен для людей, но плохо подходит для программ.
Пока мы просто общаемся с моделью, этого достаточно. Но как только результат нужно передать дальше в код — например, выбрать действие по значению поля, сохранить данные или принять решение на основе ответа, — свободный текст уже не подходит. Его нужно превратить в четко описанную структуру.
Технические детали
Именно эту задачу решает структурированный вывод. Модель просят отвечать не произвольным текстом, а в формате, который соответствует заданной схеме. Затем приложение разбирает этот ответ и превращает его в типизированный объект, с которым остальной код может работать так же, как с любым другим объектом предметной области.
Spring AI поддерживает структурированный вывод с первого дня через ChatClient. 0 к нему добавлены два новых механизма настройки — нативный структурированный вывод на стороне провайдера и самокорректирующаяся валидация схемы. Настройки по умолчанию не изменились, поэтому существующий код продолжает работать.
В этой публикации мы разберем структурированный вывод: начнем с простого рабочего примера, а затем шаг за шагом добавим элементы надежности. Типизированный ответОпределите Java record для структуры, которую хотите получить на выходе:record ActorsFilms(String actor, List movies) {}Попросите ChatClient заполнить его. Вместо того чтобы завершать вызов методом .
Отраслевые последствия
content(), который возвращает необработанный текстовый ответ, завершите его методом . ) и передайте целевой тип:ActorsFilms films = chatClient. user("Generate the filmography for a random actor.
Результат — типизированный ActorsFilms, который можно передать в остальную часть кода:System. actor()); // "Tom Hanks" System. ) доступен только для .
Для типизированного разбора требуется полный ответ, поэтому при потоковой обработке ответа он недоступен. stream() возвращает текстовые фрагменты, а не типизированные объекты. Это относится ко всем вариантам, рассмотренным ниже: Class, ParameterizedTypeReference, пользовательский конвертер, с новыми механизмами настройки или без них.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





