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

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 或部分对话作为输入,将输入发送给后端大模型,模型根据其训练数据和对自然语言的理解生成对话响应,应用程序可以将响应呈现给用户或用于进一步处理。

chat-model

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 支持以下两种通义语音模型的适配,分别是:

  1. 文本生成语音 SpeechModel,对应于 OpenAI 的 Text-To-Speech (TTS) API
  2. 录音文件生成文字 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.父子关系&#xff1a;--><!--div>p 加Tab键--><div><p></p></div><…...

李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning

笔记是在语雀上面做的&#xff0c;粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型&#xff0c;可以将机器学习进行分类 regression 回归任务&#xff1a;函数输出时一个数值classification 分类任务&#xff1a;人类设定好选项…...

1、pycharm、python下载与安装

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

计算机网络复习(学习通作业4、5、6系统答案)

&#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 一、作业4一. 计算题&#xff08;共1题&#xff0c;100分&#xff09; 二、作业5一. 简答题&#xff08;共1题&#xff0c;30分&#xff09;路由器属于那一层的互联设备&#xff1f;路由器结构包含哪两个部分&#xff1f;请解释…...

javascript 绘制图表的几种方式

JavaScript 中,绘制图表的常用方法是使用图表库,它们提供了便捷的 API 和功能来实现图形和数据可视化。以下是几种常见的 JavaScript 图表绘制库以及如何使用它们来绘制图表的示例: 1. Chart.js Chart.js 是一个轻量级、简单易用的图表库,支持多种图表类型,如线性图、柱…...

【网络协议】开放式最短路径优先协议OSPF详解(四)

前言 在本章的第一部分和第二部分中&#xff0c;我们探讨了OSPF的基本配置&#xff0c;并进一步学习了更多OSPF的概念&#xff0c;例如静态路由的重分发及其度量值。在第三部分中&#xff0c;我们讨论了多区域OSPF。在第四部分中&#xff0c;我们将关注OSPF与多访问网络&#…...

C++STL中algorithm的介绍与使用

C STL中的<algorithm>库提供了一组模板函数&#xff0c;用于操作序列&#xff08;如数组、向量等&#xff09;。以下是一些常用的<algorithm>函数的详细介绍、使用方式和示例&#xff0c;以及在竞赛过程中的一些细节。 1. 非修改性算法 std::find 概念&#xff…...

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问题其实实际都不是问题&#xff0c;不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner&#xff0c;因为这类文章写得好的特别多&#xff0c;本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…...

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

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

网络安全:路由技术

概述 路由技术到底研究什么内容 研究路由器寻找最佳路径的过程 路由器根据最佳路径转发数据包 知识点&#xff0c;重要OSRF,BGP1.静态路由原理 路由技术分类 静态路由和动态路由技术 静态路由&#xff1a;是第一代路由技术&#xff0c;由网络管理员手工静态写路由/路径告知路…...

Vue3 子组件向父组件传递消息(Events)

子组件向父组件传递消息&#xff08;Events&#xff09; 子组件可以通过 $emit 触发事件&#xff0c;父组件可以监听这些事件并作出响应。 子组件&#xff1a; <template><button click"sendMessage">Send Message to Parent</button> </tem…...

如何清理Docker的overlay2目录下的文件

清理 Docker 的 overlay2 目录下的文件需要谨慎操作,因为这些文件通常是容器的存储层,直接删除可能会导致容器无法正常运行或数据丢失。以下是清理 overlay2 目录的步骤和建议: 1. 确认文件是否可以被清理 在清理之前,确认 c7ffc13c49a43f08ef9e234c6ef9fc5a3692deda3c5d4…...

《Vue3实战教程》19:Vue3组件 v-model

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

数字PWM直流调速系统设计(论文+源码)

2.1 系统方案设计 2.2.1开环控制方案 采用开环方案的系统架构如图2.1所示&#xff0c;这种方式不需要对直流电机的转速进行检测&#xff0c;在速度控制时单片机只需要直接发出PWM就可以实现直流电机速度的控制。这种方式整体设计难度较低&#xff0c;但是无法准确得知当前的…...

Spring Boot日志处理

文章目录 Spring Boot日志处理1. 日志存入数据库&#xff08;AOP&#xff09;2. 日志控制台打印与写入文件&#xff08;logback&#xff09; Spring Boot日志处理 1. 日志存入数据库&#xff08;AOP&#xff09; 引入aop依赖 <dependency><groupId>org.springfram…...

vue3+Echarts+ts实现甘特图

项目场景&#xff1a; vue3Echartsts实现甘特图;发布任务 代码实现 封装ganttEcharts.vue <template><!-- Echarts 甘特图 --><div ref"progressChart" class"w100 h100"></div> </template> <script lang"ts&qu…...

OpenCV相机标定与3D重建(41)从 3D 物点和它们对应的 2D 图像点估算初始相机内参矩阵函数initCameraMatrix2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从3D-2D点对应关系中找到一个初始的相机内参矩阵。 cv::initCameraMatrix2D 是 OpenCV 库中的一个函数&#xff0c;用于从 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 包&#xff1a; sudo rpm -ivh jdk-21_linux-x64_bin.rpm3. 配置环境变量 编辑 /etc/profile 文件以配置 JAVA_HO…...

从单调到惊艳:手把手教你用PyQt5 QPalette打造动态渐变和图片自适应背景窗口

从单调到惊艳&#xff1a;手把手教你用PyQt5 QPalette打造动态渐变和图片自适应背景窗口 在桌面应用开发中&#xff0c;用户界面的视觉体验往往决定了产品的第一印象。传统的单色背景或简单图片填充已经难以满足现代用户对美感的追求。PyQt5作为Python生态中最强大的GUI框架之一…...

CGAL Point_set_processing 点集处理函数自查表

参考来源&#xff1a; CGAL 6.1.1 - Point Set Processing: Algorithms 一、尺度 / K 值估算 返回值函数名作用用法示例size_testimate_global_k_neighbor_scale估算全局最优 K 邻域estimate_global_k_neighbor_scale(points)FTestimate_global_range_scale估算全局最优搜索…...

3步实现风扇智能控制:Windows系统散热与噪音平衡全指南

3步实现风扇智能控制&#xff1a;Windows系统散热与噪音平衡全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

保姆级教程:用YOLOv8+PyQt5打造你的番茄成熟度检测桌面应用(附完整源码与数据集)

从零构建番茄成熟度检测桌面应用&#xff1a;YOLOv8与PyQt5深度整合实战 在农业智能化浪潮中&#xff0c;计算机视觉技术正逐步改变传统农业生产方式。以番茄种植为例&#xff0c;成熟度判断直接影响采摘效率和经济效益。本文将带您完整实现一个结合YOLOv8目标检测与PyQt5图形界…...

如何高效提取与编辑Unity游戏资源?UABEA全功能解析与实践指南

如何高效提取与编辑Unity游戏资源&#xff1f;UABEA全功能解析与实践指南 【免费下载链接】UABEA UABEA: 这是一个用于新版本Unity的C# Asset Bundle Extractor&#xff08;资源包提取器&#xff09;&#xff0c;用于提取游戏中的资源。 项目地址: https://gitcode.com/gh_mi…...

PX4串口通讯避坑指南:从波特率设置到数据收发全流程解析(以Serial4/5为例)

PX4串口通讯实战指南&#xff1a;从硬件配置到数据交互的深度解析 在无人机和机器人开发领域&#xff0c;PX4作为一款开源的飞控系统&#xff0c;其串口通讯功能是实现传感器数据采集、地面站通信以及外设控制的核心技术。然而&#xff0c;许多开发者在实际项目中常会遇到数据丢…...

RPCS3终极指南:在电脑上完美运行PS3游戏的完整教程

RPCS3终极指南&#xff1a;在电脑上完美运行PS3游戏的完整教程 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 还在为无法重温经典PS3游戏而烦恼吗&#xff1f;RPCS3作为全球领先的免费开源PlayStation 3模拟器…...

别再乱接Type-C了!手把手教你设计一个5V/5A的稳定电源模块(附电路图)

5V/5A Type-C电源模块实战设计指南&#xff1a;从选型到避坑全解析 Type-C接口凭借其正反插拔的便利性&#xff0c;已成为现代电子设备的标配。但许多DIY爱好者在自制Type-C电源模块时&#xff0c;常遇到供电不稳、接口烧毁甚至设备损坏的问题。本文将带你从零设计一个稳定可靠…...

保姆级教程:用MuJoCo的add_marker给你的机械臂末端轨迹画条‘光带’

机械臂轨迹可视化进阶&#xff1a;用MuJoCo打造动态光带效果 在机器人仿真领域&#xff0c;轨迹可视化不仅是调试工具&#xff0c;更是展示算法优雅性的窗口。想象一下&#xff0c;当你的机械臂在三维空间划出流畅运动时&#xff0c;一条如彗尾般渐变的彩色光带随之延展&#x…...

Kerbrute组合暴力破解:用户名密码组合文件测试的完整教程

Kerbrute组合暴力破解&#xff1a;用户名密码组合文件测试的完整教程 【免费下载链接】kerbrute A tool to perform Kerberos pre-auth bruteforcing 项目地址: https://gitcode.com/gh_mirrors/ke/kerbrute Kerbrute是一款专门用于通过Kerberos预认证进行Active Direct…...