Structured Output 结构化输出 | Spring AI Alibaba
跳到主要内容

Structured Output 结构化输出

结构化输出允许 Agent 以特定的、可预测的格式返回数据。相比于解析自然语言响应,您可以直接获得 JSON 对象或 Java POJO 形式的结构化数据,应用程序可以直接使用。

Spring AI Alibaba 的 ReactAgent.Builder 通过 outputSchemaoutputType 方法处理结构化输出。当您设置所需的结构化输出模式时,Agent 会自动在用户消息中增加模式指令,模型会根据指定的格式生成数据。

结构化输出基础配置查看完整代码
ReactAgent agent = ReactAgent.builder()
.name("agent")
.model(chatModel)
.outputSchema(schemaString) // Custom JSON schema as String
// OR
.outputType(MyClass.class) // Java class - auto-converted to schema
.build();

输出格式选 项

Spring AI Alibaba 支持两种方式控制结构化输出:

  • outputSchema(String schema): 提供 JSON schema 字符串。推荐使用 BeanOutputConverter 从 Java 类自动生成 schema,也可以手动提供自定义的 schema 字符串
  • outputType(Class<?> type): 提供 Java 类 - 使用 BeanOutputConverter 自动转换为 JSON schema(推荐方式,类型安全)
  • 不指定: 返回非结构化的自然语言响应

推荐做法:使用 BeanOutputConverter 生成 schema,既保证了类型安全,又实现了自动 schema 生成,代码更易维护。

结构化响应在 Agent 的 AssistantMessage 中作为 JSON 文本返回,可以解析为您需要的格式。

输出 Schema 策略

您可以使用 BeanOutputConverter 从 Java 类自动生成 JSON schema,或者直接提供 JSON schema 字符串。推荐使用 BeanOutputConverter 以获得类型安全和自动 schema 生成。

方法签名

outputSchema 方法签名查看完整代码
Builder outputSchema(String outputSchema)

参数:

  • outputSchema (String, 必需): 定义结构化输出格式的 JSON schema 字符串。可以通过 BeanOutputConverter.getFormat() 方法从 Java 类自动生成,也可以手动提供自定义的 schema 字符串。

示例