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

长沙建网站公司自己建网站怎么建

长沙建网站公司,自己建网站怎么建,wordpress作者信息栏,wordpress腾讯视频插件一、前言 在上一篇文章中我们学习了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://www.dtcms.com/wzjs/397552.html

相关文章:

  • 哪里做网站便宜怎样把自己的产品放到网上销售
  • 北京地铁建设管理公司网站推广引流平台
  • 17网站一起做网店 每日新款汕头seo外包机构
  • 设计师网站源码视频号链接怎么获取
  • 兼职做网站的费用百度手机助手下载安卓版
  • 如何自己设计logo图标手机优化管家
  • 织梦网站关掉wap手机建网站软件
  • 大连网站设计布局浏览器观看b站视频的最佳设置
  • 网站备案 个人互联网营销工具
  • 手机自己做网站网站搭建服务
  • 360网站卖东西怎么做的产品推广运营的公司
  • 网站流量统计怎么做的seo比较好的优化方法
  • 城固县网站建设百度快照首页
  • 企业应如何进行网站建设今日冯站长之家
  • 如何做网站的订阅国际婚恋网站排名
  • 网站建设合同范本站长之家seo综合查询
  • 南京公共工程建设中心网站营销型网站建设运营
  • discuz做电影网站如何查询百度收录
  • 上海哪家网站建设公司好cps广告联盟
  • 黄网网站是怎么做的微博推广
  • 做大型网站建设seo数据优化
  • 代做网站作业企业如何建站
  • 上海人才网官网招聘招聘seo知识分享
  • 东城区网站建设成都seo论坛
  • 如何做网站路径分析长沙seo搜索
  • 梅县区住房和城乡规划建设局网站北京seo技术交流
  • 万荣做网站谷歌ads广告投放
  • 有什么做日结兼职的网站化工网站关键词优化
  • 吉野家网站谁做的搜索引擎网站优化推广
  • 三网站建设一键关键词优化