Spring AI 2.0 中的自我纠正结构化输出 笔记

Spring AI 2.0 中的自我纠正结构化输出

大型语言模型虽然功能强大,但在软件集成中处理结构化数据时仍面临挑战。Spring AI 的结构化输出功能填补了这一空白,使模型能够生成符合定义模式的文本,并将其解析为强类型对象。Spring AI 2.0 引入了两项关键增强功能:原生支持的结构化输出和自纠正模式验证。由于默认行为未变,现有代码保持兼容。要生成结构化输出,开发者需定义一个 Java record,然后使用 .entity() 方法指定目标类型。该过程内部会从 record 生成 JSON Schema,将其附加到提示词中,并将模型的 JSON 响应解析回所需的对象。在 Spring AI 2.0 之前,该过程缺乏保障,若模型偏离模式,可能导致解析错误。启用 .validateSchema() 开关可激活自纠正重试循环,自动将模型的响应与模式进行验证;若验证失败,则重新发出提示词并附带具体的错误反馈。为实现更强的保障,.useProviderStructuredOutput() 利用特定提供者的 API 功能,在源头强制模式合规性,从而通过防止无效响应被发出,最大限度地减少畸形输出。这两项功能可结合使用以实现最大韧性,其中原生结构化输出作为主要约束,模式验证作为后备机制。对于 List 和 Map 等泛型类型,需使用 ParameterizedTypeReference 而非简单的 Class。使用 .responseEntity() 方法可同时访问已解析的实体和原始的 ChatResponse 以获取元数据。当内置转换器不足时,可自定义 StructuredOutputConverter 实现来处理非标准的 JSON 包装,或完全不同的格式(如 YAML 或 CSV),从而为多样化的集成需求提供进一步灵活性。
CdXz5zHNQW_ujOXatEKZz.png