格式化输出(Structured Output),就是将一段话经过大模型处理然后返回成一个规定的数据格式
通俗的意思就是:将AI大模型返回的结果转成JSON、XML、Java类等,原本返回值是String(字符串)
·
格式化输出(Structured Output) 是指通过设计提示词(Prompt)或使用 Schema 约束(或者对象约束),引导大语言模型(LLM)将非结构化信息处理后,输出为预定义的结构化数据格式(如 JSON、XML、对象等),以便程序能够直接解析和使用。
官方文档:格式化输出(Structured Output)-阿里云Spring AI Alibaba官网官网

通俗的意思就是:将AI大模型返回的结果转成JSON、XML、Java类等,原本返回值是String(字符串)
1.本章目标

假设我们期望将模型输出转换为Record记录类结构体,不再是传统的String
2.创建record对象
record学习资料:

package com.atguigu.study.record;
/**
* jdk14以后的新特性,纪录类recode = entity(实体) + Lombok
*/
public record StudentRecord(String id, String sname, String major, String email ) {
}
jdk14以后的新特性,纪录类recode = entity(实体) + Lombok
实际上一个record就是一个对象

这是用户自定义的提示词,所以这里用这个
new Consumer<ChatClient.PromptUserSpec>()
PromptUserSpec 是一个接口,里面封装了很多方法

方式一:模板文件写死到代码中
@RestController
public class StructuredOutputController {
@Resource(name = "qwenChatClient")
private ChatClient qwenChatClient;
/**
* http://localhost:8007/structuredoutput/chat?sname=李四&email=zzyybs@126.com
*
* @param sname
* @return
*/
@GetMapping("/structuredoutput/chat")
public StudentRecord chat(String sname, String email) {
// 这里的user是用到了一个匿名内部类,拼了一个提示词,并且这个提示词的返回进行了格式化的组织
// 一些内容去替换占位符,并且返回的结果不是string而是纪录类record(对象)
return qwenChatClient.prompt().user(new Consumer<ChatClient.PromptUserSpec>() {
@Override
public void accept(ChatClient.PromptUserSpec promptUserSpec) {
promptUserSpec.text("学号1001,我叫{sname},大学专业是计算机科学与技术,邮箱{email}")
.param("sname", sname)
.param("email", email);
}
}).call().entity(StudentRecord.class);
}
}
方法二:lambda表达式和模板文件
/**
* http://localhost:8007/structuredoutput/chat2?sname=孙伟&email=zzyybs@126.com
* @param sname
* @return
*/
@GetMapping("/structuredoutput/chat2")
public StudentRecord chat2(String sname, String email) {
String stringTemplate = "学号1001,我叫{sname},大学专业是计算机科学与技术,邮箱{email}";
// 这里的user是用到了一个匿名内部类,拼了一个提示词,并且这个提示词的返回进行了格式化的组织
// 一些内容去替换占位符,并且返回的结果不是string而是纪录类record(对象)
return qwenChatClient.prompt().user(promptUserSpec -> promptUserSpec.text(stringTemplate)
.param("sname", sname)
.param("email", email))
.call().
entity(StudentRecord.class);
}
3.格式化输出的结果

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)