当前位置: 首页 > wzjs >正文

泉州企业网站维护定制网页设计尺寸代码

泉州企业网站维护定制,网页设计尺寸代码,个人网站域名选择,那个网站可以做微课一、前言 在上一篇文章中我们学习了SpringAI为我们提供的提示词模板,一个好的提示词可以让大模型更加清晰的回答我们的问题,今天我们继续学习,学习SpringAI的格式化输出。 二、Structured Output Converter 1、什么是Structured Output Co…

一、前言

在上一篇文章中我们学习了SpringAI为我们提供的提示词模板,一个好的提示词可以让大模型更加清晰的回答我们的问题,今天我们继续学习,学习SpringAI的格式化输出。

二、Structured Output Converter

1、什么是Structured Output Converter

Structured Output Converter直接翻译过来是 “结构化输出转化器”,顾名思义就是用来辅助大模型结构化输出的。

StructuredOutputConverter是SpringAI为我们提供的一个接口它允许我们从大模型中获取结构化的输出,例如将大模型的返回映射成一个Map、一个Java对象或者是一个List。

2、流程图

从图中我们可以看出StructuredOutputConverter作用于大模型调用前后,StructuredOutputConvertert会把我们原始的输入+结构化提示词一起发送给大模型,当大模型返回后,又会通过Convert方法将其转化为我们所期望的类型。

Tips:

1、StructuredOutputConverte会尽最大努力将大模型的输出转化成我们期望的类型,但是大模型不保证会返回我们所需要的结构化请求。大模型或许没有理解提示词,或者根本就不能产生结构化的输出。考虑实现一种验证机制,以确保模型输出符合预期。

2、StructuredOutputConverte不作用于FunctionCalling,因为FunctionCalling本身就提供了结构化输出的能力。

3、默认提供的Convert

SpringAI为我们默认提供了几个实现分别是:

`AbstractConversionServiceOutputConverter,AbstractMessageOutputConverte, BeanOutputConverter,ListOutputConverter

三、示例代码

案例1:Bean Output Converter

需求:我们使用BeanOutputConvert来格式化大模型的输出;我们希望大模型给我们输出某个演员演的五部电影

1、首先我们定义一个Record:Jdk16新特性

public record ActorsFilms(String actor, List<String> movies) {}

2、编写接口

  @GetMapping("/chat")public ActorsFilms chat(String actor) {return client.prompt().user(u -> u.text("生成指定{actor}演的5部电影").param("actor", actor)).call().entity(ActorsFilms.class);}

3、查看结果

{“actor”:“周星驰”,“movies”:[“大话西游”,“喜剧之王”,“少林足球”,“功夫”,“唐伯虎点秋香”]}

可以看到结果已经是JSON格式的了。这里可能会有同学质疑,我们好像并没有使用到BeanOutputConvert,确实在代码里没有直接使用,这个是entity这个方法内部嗲用了,我们查看entity的方法源码,在源码中我们可以看到这里底层使用了BeanOutputConvert

entity方法源码

案例2:Property Ordering in Generated Schema

指的是在自动生成的数据模型(如 JSON Schema、XML Schema、API 文档等)中,对属性(字段)进行排序的功能。还是刚才那个例子,

1、我们对record稍加修改

@JsonPropertyOrder({"actor", "movies"})
public record ActorsFilms(String actor, List<String> movies) {}

2、编写接口

@GetMapping("/chat2")
public List<ActorsFilms> chat2(String actor1,String actor2) {return client.prompt().user(u -> u.text("生成{actor1}和{actor2}演的5部电影").param("actor1", actor1).param("actor2", actor2)).call().entity(new ParameterizedTypeReference<List<ActorsFilms>>() {});
}

3、测试

请求url:http://localhost:8080/chat2?actor1=%E5%91%A8%E6%98%9F%E9%A9%B0&actor2=%E6%88%90%E9%BE%99

结果:[{“actor”:“周星驰”,“movies”:[“少林足球”,“功夫”,“喜剧之王”,“唐伯虎点秋香”,“大话西游”]},{“actor”:“成龙”,“movies”:[“警察故事”,“醉拳”,“龙之怒吼”,“尖峰时刻”,“新警察故事”]}]

案例3:Map Output Converter

从名字就可以看出,该Convert的作用是将大模型的输出转换成Map类型,这里不再赘述,直接引用官网的例子。代码

Map<String, Object> result = ChatClient.create(chatModel).prompt().user(u -> u.text("Provide me a List of {subject}").param("subject", "an array of numbers from 1 to 9 under they key name 'numbers'")).call().entity(new ParameterizedTypeReference<Map<String, Object>>() {});

案例4:List Output Converter

这个也很好理解,转化为List,同样不在赘述

List<String> flavors = ChatClient.create(chatModel).prompt().user(u -> u.text("List five {subject}").param("subject", "ice cream flavors")).call().entity(new ListOutputConverter(new DefaultConversionService()));

四、总结

综上,本文围绕 SpringAI 的格式化输出能力展开,核心介绍了StructuredOutputConverter这一关键接口。它作为连接大模型与结构化输出的桥梁,在调用大模型前后发挥着重要作用:先将原始输入与结构化提示词结合发送给模型,再通过convert方法将模型返回的原始输出转换为预期类型。

文中还介绍了 SpringAI 默认提供的多种实现类,如BeanOutputConverterMapOutputConverterListOutputConverter等,并通过具体案例展示了它们的用法。例如,BeanOutputConverter可将输出格式化为指定的 Java 对象(如利用 JDK 16 的 Record 特性定义的数据类),Property Ordering in Generated Schema功能还能对生成的数据模型属性进行排序,让输出更符合需求。

需要注意的是,StructuredOutputConverter无法保证大模型一定返回符合预期的结构化结果,可能需要额外的验证机制,且它不适用于本身已支持结构化输出的FunctionCalling

通过本文的学习,我们了解到 SpringAI 的格式化输出能力能有效简化大模型输出处理流程,帮助开发者更便捷地获取结构化数据,为 Java 程序员在 AI 开发中处理模型输出提供了实用的工具和思路。

五、未完待续


文章转载自:

http://kTrpmLnR.cjnfb.cn
http://1xsJRaIj.cjnfb.cn
http://M51GsyVb.cjnfb.cn
http://KTLZ34fK.cjnfb.cn
http://BpkTKpND.cjnfb.cn
http://itQNLU7S.cjnfb.cn
http://a55OUCSe.cjnfb.cn
http://chJQ6hyq.cjnfb.cn
http://yfqjPbwg.cjnfb.cn
http://C5HneLR2.cjnfb.cn
http://PKxpsEuA.cjnfb.cn
http://J2ayfPTn.cjnfb.cn
http://BpxMicS7.cjnfb.cn
http://4L2PX669.cjnfb.cn
http://NNIu7Ixq.cjnfb.cn
http://WFFt1IOF.cjnfb.cn
http://C3oI8qYw.cjnfb.cn
http://3ThhpVHF.cjnfb.cn
http://IOVcxHIp.cjnfb.cn
http://K6erzxuq.cjnfb.cn
http://gdwDMKmv.cjnfb.cn
http://Q18047WV.cjnfb.cn
http://TXJAht89.cjnfb.cn
http://7doxQJEj.cjnfb.cn
http://1ZDlSlIg.cjnfb.cn
http://7WQfjMKJ.cjnfb.cn
http://6jGgVFBV.cjnfb.cn
http://CekHIRXo.cjnfb.cn
http://dlO0S2u1.cjnfb.cn
http://bLDpzXxp.cjnfb.cn
http://www.dtcms.com/wzjs/745849.html

相关文章:

  • 手机建站的网站有哪些深圳写字楼崩溃求助
  • 清远佛冈住房和城乡建设局网站中国网站建设新闻
  • 怎么做网站导航外链外包做网站不付尾款
  • 做网站会员登陆开县网站建设
  • wordpress增加视频播放西安seo黑
  • 套模版做的网站好优化吗网站建设费用还是网络专业
  • jsp和html做的招聘网站做国外直播网站
  • 地名网站建设方案wordpress分享到微博才能看到
  • 外贸网站建设哪个好昆明做网站公司哪家好
  • 温州做网站建设多少钱html5旅游网站
  • [ 1500元做网站_验收满意再付款! ]_沛县网络公司彩票网站开发周期
  • 泰州网站建设托管做网站的好处和坏处
  • 办公用纸网站建设网站的时间对齐应该怎么做
  • 专业网站优化制作公司新手如何做服装网站
  • 在阿里国际站做的网站申请域名网站价格
  • 网站图片设置方法网站建设专家有哪些
  • php网站的优点大型网站设计
  • 做最漂亮的网站睢宁网站建设xzqjwl
  • 网站创建一般创建哪种类型企业网站的优化建议
  • 惠州网站制作定制网站漂浮广告效果
  • 网站建设图片素材库网站怎么做企业
  • 营销网站更受用户欢迎的原因是做调研用到的大数据网站
  • 虚拟服务器建网站做优化网站建设
  • 金融网站cms多媒体网页设计
  • 网站建设需要知道什么做服装广告素材网站有哪些
  • led 网站建设产品软文是什么
  • 学网站开发多久小程序商城模板免费
  • 网站建设的技术亮点网站建设专家cms
  • 汽车城网站建设方案上海做原创网站
  • 国内买机票最便宜网站建设产品网站开发计划表