SpringAI实战之结构化输出

2.结构化输出

Spring AI的结构化输出功能可将大模型的自由文本响应,自动转换为Java对象(如POJO、Map),作用包括:

  1. 避免手动解析:直接返回POJO
  2. 类型安全:IDE自动补全,减少拼写错误
  3. 简化集成:直接存入数据库或作为API响应返回
  4. 减少错误:统一格式校验,避免格式不匹配问题

我们正常使用的都是json结构,期望大模型返回json结构,然后由Spring AI 返回实体,这样就不需要我们再次转换就能直接使用,那么如何操作呢?

输出普通对象

在前面使用chatclient调用时,我们是直接调用content拿到结果字符串,那么为了能够获取完整的结构对象,我们可以调用 entity(User.class); 用来返回User对象,而不是字符串

复制代码
    @GetMapping("/ai/json")
    public Object generationJson(@RequestParam(defaultValue = "随机生成一份用户信息") String userInput) {
        // Create ChatClient instances programmatically
        ChatClient zpChatClient = ChatClient.create(zhiPuAiChatModel);
        User zpContent = zpChatClient.prompt(userInput)
                .call().entity(User.class);
        return zpContent;
    }

这些都是基本对象,那如果我想返回list呢,这个entity好像满足不了啊,放心,Spring AI都帮你准备好了

输出List对象

复制代码
    @GetMapping("/ai/json/list")
    public Object generationJsonList(String userInput) {
        // Create ChatClient instances programmatically
        ChatClient zpChatClient = ChatClient.create(zhiPuAiChatModel);
        List<User> zpContent = zpChatClient.prompt(userInput)
                .call().entity(new ParameterizedTypeReference<List<User>>() {
                });
        return zpContent;
    }

那么到这里呢,我们已经知道如何通过Spring AI 获取普通对象和List对象,但是这些内容都是直接获取的,如果内容很长我们将会等待很久,我们能不能像chat gpt那样,一个字一个字往外冒呢?这个就是流式响应,Spring AI已经帮我们支持了,接下来我们来学习这一部分。请关注本人的SpringAI专栏看,持续更新中。

相关推荐
秋饼5 小时前
JDK 27 企业级 AI 服务落地实战:G1 默认、紧凑对象头、后量子 TLS 与 JFR 脱敏全解析
java·ai·技术分享·后端开发
神奇霸王龙5 小时前
Cursor 3 + Claude Opus 4.8 屠榜:5 编程基座 IDE 卡位
ide·人工智能·ai·aigc·agent·ai编程·ai写作
卓怡学长5 小时前
w176基于SpringBoot的医院管理系统
java·spring boot·spring·maven·intellij-idea
lemon_sjdk5 小时前
ObjectProperty
java·开发语言·算法
hh9505 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
吴声子夜歌5 小时前
Java面试——HBase原理及应用
java·面试·hbase
浪兎兎5 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet
格数致用5 小时前
用 MCP 让 AI 替你画图:Trae Work + drawio-mcp 完整搭建指南
ai·draw.io·mcp·traework·drawio-mcp
吴声子夜歌6 小时前
Java面试——ElasticSearch原理及应用
java·面试·es
lhldsg6 小时前
家政派单系统开发实战:从需求分析到智能调度全流程指南
java·junit·小程序·uni-app·需求分析