大家好我是Java1234_小锋老师最近更新《2027版本 Spring AI 2.0 开发Java Agent智能体 视频教程》专辑感谢大家支持。本课程主要介绍和讲解Spring AI 2.0简介Spring AI 2.0 HelloWorld搭建Advisors — 拦截器模式增强AI能力对话与提示词工程Prompt工具调用 (Function Calling / Tools) RAG(检索增强生成)MCP(模型 上下文协议)和多模态支持。等这个Spring AI2.0基础课程录制完成接下来要发布2个 企业级Java AI实战课程RAG 企业知识库系统和AI智能客服系统。大家可以点点关注后面更精彩。视频教程课件源码打包下载链接https://pan.baidu.com/s/1o-zRfndo1HHrS_uFroOiCw?pwd1234提取码0000Spring AI 2.0 开发Java Agent智能体 - 结构化输出一、结构化输出核心概念Spring AI 2.0 的结构化输出是将大语言模型 (LLM) 的自然语言响应转换为可预测、类型安全的 Java 对象如 POJO、Record、Map、List 等的机制避免手动解析文本的复杂性和不稳定性。1.1 为什么需要结构化输出自然文本输出结构化输出格式不固定解析困难格式严格直接映射为 Java 对象无类型安全易出错强类型校验编译期检查下游系统集成复杂可直接传递给其他应用程序函数维护成本高减少解析逻辑提升系统稳定性1.2 Spring AI 2.0 结构化输出核心特性自动 JSON Schema 生成基于 Java 类自动生成 JSON Schema确保模型输出符合预期格式多种转换器支持BeanOutputConverter、MapOutputConverter、ListOutputConverter 等原生结构化输出支持模型内置的 JSON 模式如 OpenAI 的 JSON mode提高输出可靠性链式调用简化通过.entity()方法直接将响应转换为目标类型代码更简洁集合类型支持轻松处理 List、Set 等集合类型的结构化输出二、核心实现方式2.1 两种主要方案方案说明适用场景自动转换使用.entity()方法Spring AI 自动处理转换大多数通用场景代码简洁高效显式转换器手动创建BeanOutputConverter等精细控制转换过程复杂场景需要自定义 JSON Schema 或验证规则2.2 原生结构化输出Spring AI 2.0 支持模型原生的结构化输出能力通过AdvisorParams.ENABLE_NATIVE_STRUCTURED_OUTPUT启用自动处理以下流程Spring生成 JSON Schema配置模型使用 JSON 模式验证输出格式反序列化为 Java 对象3.2 实例 1基础 POJO 结构化输出定义目标 Java 类Record// 使用 Java 16 的 Record 特性编译器会自动生成构造器、equals/hashCode等方法 public record TopicBooks( String topic, // 主题 ListString books // 书籍列表 ){}创建服务类实现结构化输出/** * param topic * return */ RequestMapping(value /ask4,produces text/html;charsetutf-8) public String ask4(String topic) { TopicBooks topicBookschatClient.prompt() .system(你是一个专业的书评助手) // 设置系统提示 .user(u-u.text(请给我三本关于{topic}的书籍).param(topic, topic)) .call() .entity(TopicBooks.class); System.out.println(topicBooks); return OK; }浏览器请求http://localhost:8080/ask4?topicjava后台输出TopicBooks[topicJava, books[Head First Java, Effective Java, Java Concurrency in Practice]]3.3 实例 2集合类型结构化输出定义定义书评类// 使用 Java 16 的 Record 特性编译器会自动生成构造器、equals/hashCode等方法 public record BookReview( String reviewerName, // 书评人 int rating, // 评分1-5 String comment // 评论内容 ){}生成多条书评/** * return */ RequestMapping(value /ask5) public String ask5() { ListBookReview bookReviewschatClient.prompt() .user(u-u.text(请给{bookName}书籍三条评价信息).param(bookName, Head First Java)) .call() .entity(new ParameterizedTypeReferenceListBookReview() { }); System.out.println(bookReviews); return OK; }浏览器请求http://localhost:8080/ask5后台输出[BookReview[reviewerNameAlice Chen, rating5, comment以生动有趣的漫画和互动练习讲解Java基础非常适合初学者建立编程思维但部分代码示例需结合新版JDK调整。], BookReview[reviewerNameDavid Smith, rating4, comment项目驱动的学习方式让人印象深刻通过构建实际应用巩固了面向对象概念建议补充多线程和Lambda表达式的现代实践。], BookReview[reviewerNameMaria Garcia, rating4, comment幽默的叙事风格降低了学习门槛但章节进度跳跃较大需要配合官方文档查漏补缺整体仍是入门首选。]]三底层实现原理大型语言模型生成结构化输出的能力对于依赖于可靠解析输出值的下游应用至关重要。开发人员希望快速地将人工智能模型的输出转换为数据类型例如JSON、XML或Java类以便传递给其他应用程序的函数和方法。Spring AIStructured Output Converters有助于将大语言模型的输出转换为结构化格式。如下图所示这种方法围绕大语言模型文本补全端点运行使用通用补全API从大型语言模型LLM生成结构化输出需要对输入和输出进行细致处理。在调用LLM前后结构化输出转换器发挥着至关重要的作用以确保实现所需的输出结构。在大语言模型调用之前转换器会将格式说明附加到提示中为模型生成所需输出结构提供明确指导。这些说明充当蓝图引导模型的响应符合指定的格式。下图展示了使用结构化输出 API 时的数据流。