Spring AI Alibaba-对话模型(Chat Model)
对话模型(Chat Model)接收一系列消息(Message)作为输入,与模型 LLM 服务进行交互,并接收返回的聊天消息(Chat Message)作为输出。相比于普通的程序输入,模型的输入与输出消息(Message)不止支持纯字符文本,还支持包括语音、图片、视频等作为输入输出。同时,在 Spring AI Alibaba 中,消息中还支持包含不同的角色,帮助底层模型区分来自模型、用户和系统指令等的不同消息。
Spring AI Alibaba 复用了 Spring AI 抽象的 Model API,并与通义系列大模型服务进行适配(如通义千问、通义万相等),目前支持纯文本聊天、文生图、文生语音、语音转文本等。以下是框架定义的几个核心 API:
- ChatModel,文本聊天交互模型,支持纯文本格式作为输入,并将模型的输出以格式化文本形式返回。
- ImageModel,接收用户文本输入,并将模型生成的图片作为输出返回。
- AudioModel,接收用户文本输入,并将模型合成的语音作为输出返回。
Spring AI Alibaba 支持以上 Model 抽象与通义系列模型的适配,并通过 spring-ai-alibaba-starter
AutoConfiguration 自动初始化了默认实例,因此我们可以在应用程序中直接注入 ChatModel、ImageModel 等 bean,当然在需要的时候也可以自定义 Model 实例。
一、Chat Model
ChatModel API 让应用开发者可以非常方便的与 AI 模型进行文本交互,它抽象了应用与模型交互的过程,包括使用 Prompt
作为输入,使用 ChatResponse
作为输出等。ChatModel 的工作原理是接收 Prompt 或部分对话作为输入,将输入发送给后端大模型,模型根据其训练数据和对自然语言的理解生成对话响应,应用程序可以将响应呈现给用户或用于进一步处理。
1、使用示例
开发完整的 ChatModel 示例应用,您需要添加 spring-ai-alibaba-starter
依赖,请参考快速开始中的项目配置说明了解详情,您还可以访问 chatmodel-example 查看本示例完整源码。
以下是 ChatModel 基本使用示例,它可以接收 String 字符串作为输入:
@RestControllerpublic class ChatModelController {private final ChatModel chatModel;public ChatModelController(ChatModel chatModel) {this.chatModel = chatModel;}@RequestMapping("/chat")public String chat(String input) {ChatResponse response = chatModel.call(new Prompt(input));return response.getResult().getOutput().getContent();}}
二、Image Model
ImageModel API 抽象了应用程序通过模型调用实现“文生图”的交互过程,即应用程序接收文本,调用模型生成图片。ImageModel 的入参为包装类型 ImagePrompt
,输出类型为 ImageResponse
。
1、使用示例
spring-ai-alibaba-starter
AutoConfiguration 默认初始化了 ImageModel 实例,我们可以选择直接注入并使用默认实例。
@RestControllerpublic class ImageModelController {private final ImageModel imageModel;ImageModelController(ImageModel imageModel) {this.imageModel = imageModel;}@RequestMapping("/image")public String image(String input) {ImageOptions options = ImageOptionsBuilder.builder().withModel("dall-e-3").build();ImagePrompt imagePrompt = new ImagePrompt(input, options);ImageResponse response = imageModel.call(imagePrompt);String imageUrl = response.getResult().getOutput().getUrl();return "redirect:" + imageUrl;}}
三、Audio Model
当前,Spring AI Alibaba 支持以下两种通义语音模型的适配,分别是:
- 文本生成语音 SpeechModel,对应于 OpenAI 的 Text-To-Speech (TTS) API
- 录音文件生成文字 DashScopeAudioTranscriptionModel,对应于 OpenAI 的 Transcription API
四、完整示例
相关文章:

Spring AI Alibaba-对话模型(Chat Model)
对话模型(Chat Model)接收一系列消息(Message)作为输入,与模型 LLM 服务进行交互,并接收返回的聊天消息(Chat Message)作为输出。相比于普通的程序输入,模型的输入与输出…...
HTML——79.代码快捷输入方式
!DOCTYPE html> <html><head><meta charset"UTF-8"><title>代码快捷输入方式</title></head><body><!--1.父子关系:--><!--div>p 加Tab键--><div><p></p></div><…...

李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning
笔记是在语雀上面做的,粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型,可以将机器学习进行分类 regression 回归任务:函数输出时一个数值classification 分类任务:人类设定好选项…...

1、pycharm、python下载与安装
1、去官网下载pycharm 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间,去下载python 进入官网地址:https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…...

计算机网络复习(学习通作业4、5、6系统答案)
📢📢📢传送门 一、作业4一. 计算题(共1题,100分) 二、作业5一. 简答题(共1题,30分)路由器属于那一层的互联设备?路由器结构包含哪两个部分?请解释…...
javascript 绘制图表的几种方式
JavaScript 中,绘制图表的常用方法是使用图表库,它们提供了便捷的 API 和功能来实现图形和数据可视化。以下是几种常见的 JavaScript 图表绘制库以及如何使用它们来绘制图表的示例: 1. Chart.js Chart.js 是一个轻量级、简单易用的图表库,支持多种图表类型,如线性图、柱…...

【网络协议】开放式最短路径优先协议OSPF详解(四)
前言 在本章的第一部分和第二部分中,我们探讨了OSPF的基本配置,并进一步学习了更多OSPF的概念,例如静态路由的重分发及其度量值。在第三部分中,我们讨论了多区域OSPF。在第四部分中,我们将关注OSPF与多访问网络&#…...
C++STL中algorithm的介绍与使用
C STL中的<algorithm>库提供了一组模板函数,用于操作序列(如数组、向量等)。以下是一些常用的<algorithm>函数的详细介绍、使用方式和示例,以及在竞赛过程中的一些细节。 1. 非修改性算法 std::find 概念ÿ…...

Oracle exp和imp命令导出导入dmp文件
目录 一. 安装 instantclient-tools 工具包二. exp 命令导出数据三. imp 命令导入数据四. expdp 和 impdp 命令 一. 安装 instantclient-tools 工具包 ⏹官方网站 https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html ⏹因为我们在…...

GitLab集成Runner详细版--及注意事项汇总【最佳实践】
一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…...

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代
2024年11月30日,ARM正式发布了其最新的Armv9.5架构,这是Arm技术发展的又一重要里程碑。从表中信息来看,Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升,更是…...

网络安全:路由技术
概述 路由技术到底研究什么内容 研究路由器寻找最佳路径的过程 路由器根据最佳路径转发数据包 知识点,重要OSRF,BGP1.静态路由原理 路由技术分类 静态路由和动态路由技术 静态路由:是第一代路由技术,由网络管理员手工静态写路由/路径告知路…...
Vue3 子组件向父组件传递消息(Events)
子组件向父组件传递消息(Events) 子组件可以通过 $emit 触发事件,父组件可以监听这些事件并作出响应。 子组件: <template><button click"sendMessage">Send Message to Parent</button> </tem…...
如何清理Docker的overlay2目录下的文件
清理 Docker 的 overlay2 目录下的文件需要谨慎操作,因为这些文件通常是容器的存储层,直接删除可能会导致容器无法正常运行或数据丢失。以下是清理 overlay2 目录的步骤和建议: 1. 确认文件是否可以被清理 在清理之前,确认 c7ffc13c49a43f08ef9e234c6ef9fc5a3692deda3c5d4…...

《Vue3实战教程》19:Vue3组件 v-model
如果您有疑问,请观看视频教程《Vue3实战教程》 组件 v-model 基本用法 v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始,推荐的实现方式是使用 defineModel() 宏: vue <!-- Child.vue --> <script setup> co…...

数字PWM直流调速系统设计(论文+源码)
2.1 系统方案设计 2.2.1开环控制方案 采用开环方案的系统架构如图2.1所示,这种方式不需要对直流电机的转速进行检测,在速度控制时单片机只需要直接发出PWM就可以实现直流电机速度的控制。这种方式整体设计难度较低,但是无法准确得知当前的…...
Spring Boot日志处理
文章目录 Spring Boot日志处理1. 日志存入数据库(AOP)2. 日志控制台打印与写入文件(logback) Spring Boot日志处理 1. 日志存入数据库(AOP) 引入aop依赖 <dependency><groupId>org.springfram…...

vue3+Echarts+ts实现甘特图
项目场景: vue3Echartsts实现甘特图;发布任务 代码实现 封装ganttEcharts.vue <template><!-- Echarts 甘特图 --><div ref"progressChart" class"w100 h100"></div> </template> <script lang"ts&qu…...
OpenCV相机标定与3D重建(41)从 3D 物点和它们对应的 2D 图像点估算初始相机内参矩阵函数initCameraMatrix2D()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从3D-2D点对应关系中找到一个初始的相机内参矩阵。 cv::initCameraMatrix2D 是 OpenCV 库中的一个函数,用于从 3D 物点和它们对应的…...

ELK日志平台搭建 (最新版)
一、安装 JDK 1. 下载 JDK 21 RPM 包 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm2. 安装 JDK 21,使用 rpm 命令安装下载的 RPM 包: sudo rpm -ivh jdk-21_linux-x64_bin.rpm3. 配置环境变量 编辑 /etc/profile 文件以配置 JAVA_HO…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...

GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...