Structured Output 结构化输出
结构化输出允许 Agent 以特定的、可预测的格式返回数据。相比于解析自然语言响应,您可以直接获得 JSON 对象或 Java POJO 形式的结构化数据,应用程序可以直接使用。
Spring AI Alibaba 的 ReactAgent.Builder 通过 outputSchema 和 outputType 方法处理结构化输出。当您设置所需的结构化输出模式时,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 字符串。