Spring AI之后,阿里推出Spring Cloud Alibaba AI,接入体验篇——Java也能方便用 AI

阿里推出Spring Cloud Alibaba AI,接入体验篇——Java也能方便用 AI

  • 1.Spring AI
  • 2.Spring Cloud Alibaba AI
  • 3. 接入体验

1.Spring AI

        Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。

        Spring AI 的灵感来自著名的 Python 项目,如 LangChain 和 LlamaIndex,但 Spring AI 并不是这些项目的直接移植复制。Spring AI 的思想是:下一波 Generative AI 生成式应用程序将不仅面向 Python 开发人员,而且将在许多编程语言中无处不在

Spring AI提供四大方向:

  • 提供抽象能力
  • 简化AI应用的开发
  • 模型与向量支持
  • AI集成与自动配置

Spring AI 的核心是提供抽象,作为开发 Java AI 应用程序的基础,提供以下功能:

  • 提供多种大模型服务对接能力,包括业界大多数主流大模型服务等,如OpenAI,Microsoft,Amazon,Google和Huggingface;

  • 将 AI 模型输出映射到 POJO,支持灵活的 Prompt Template 和模型输出解析 Output Parsing 能力;

  • 支持多模态的生成式 AI 能力,如对话,文生图、文生语音等;

  • 提供跨AI提供商通用的可移植的 API 以访问各类模型服务和 Embedding 服务,支持同步和流式调用,同时也支持传递特定模型的定制参数;

  • 支持 RAG 能力的基础组件,包括 DocumentLoader、TextSpillter、EmobeddingClient、VectorStore 等;

  • 支持AI 模型和矢量存储的 AI Spring Boot Starter 实现配置自动装配;

  • 跨 Vector Store 提供程序的可移植 API,包括新颖的类似 SQL 的元数据过滤器 API,该 API 也是可移植的。

  • 用于数据工程的 ETL 框架

2.Spring Cloud Alibaba AI

        Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 Java AI 应用。

        Spring Cloud Alibaba AI 目前基于 Spring AI 0.8.1 版本 API 完成通义系列大模型的接入。通义接入是基于阿里云 灵积模型服务,灵积模型服务建立在“模型即服务”(Model-as-a-Service,MaaS)的理念基础之上,围绕 AI 各领域模型,通过标准化的API提供包括模型推理、模型微调训练在内的多种模型服务。

        在当前最新版本中,Spring Cloud Alibaba AI 主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等,开发者可以使用 Spring Cloud Alibaba AI 开发基于通义的聊天、图片或语音生成 AI 应用,框架还提供 OutParser、Prompt Template、Stuff 等实用能力。

以下是当前官方提供的 Spring Cloud Alibaba AI 应用开发示例:

  • 聊天对话应用
  • 文生图应用
  • 文生语音应用
  • 模型输出解析OutputParser(实现从 String 到自动 POJO 映射)
  • 使用 Prompt Template
  • 让 AI 模型接入外部数据(Prompt Stuff)

3. 接入体验

基于官方文档进行接入体验!https://sca.aliyun.com/docs/2023/user-guide/ai/quick-start/

1.新建一个Maven项目,JDK选的是17版本。
Maven文件需要引入spring-cloud-alibaba-dependencies和spring-cloud-starter-alibaba-ai两个依赖。

<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.1.0</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-ai</artifactId></dependency>
</dependencies>

2.配置阿里云通义千问的Api-Key,没有可以从官网上申请:

server:port: 8080
spring:application:name: spring-cloud-alibaba-ai-democloud:ai:tongyi:api-key: 你的api-key

3.编写聊天服务实现类(文本大模型为例)
(1)创建一个Controller类,新建/simple接口,用来测试基本的问答:

@RestController
@RequestMapping("/ai")
@CrossOrigin
public class TongYiController {@Autowired@Qualifier("tongYiSimpleServiceImpl")private TongYiService tongYiSimpleService;/*** 文本生成* @param message* @return*/@GetMapping("/example")public String completion(@RequestParam(value = "message", defaultValue = "你是谁")String message) {return tongYiSimpleService.completion(message);}

(2)新建一个TongYiService服务类:

public interface TongYiService {/***文本模型调用* @param message 问题.* @return AI answer.*/String completion(String message);
...
}

(4)具体的实现类如下:由 Spring AI 自动注入 ChatClient、StreamingChatClient,ChatClient 屏蔽底层通义大模型交互细节,后者用于流式调用。

对于文本模型问答而言,仅通过client.call(prompt)一行代码就可以完成对模型的调用:

@Slf4j
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {private static final Logger logger = LoggerFactory.getLogger(TongYiService.class);//自动注入ChatClient屏蔽模型调用细节 private final ChatClient chatClient;//自动注入StreamingChatClient屏蔽模型调用细节,StreamingChatClient用于流式调用private final StreamingChatClient streamingChatClient;@Autowiredpublic TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {this.chatClient = chatClient;this.streamingChatClient = streamingChatClient;}/*** 模型回答* @param message 问题.* @return*/@Overridepublic String completion(String message) {// 创建提问的PromptPrompt prompt = new Prompt(new UserMessage(message));// 调用模型return chatClient.call(prompt).getResult().getOutput().getContent();}
}	

(5)发送一个请求,prompt是"你是谁",测试结果如下:
在这里插入图片描述

验证应用效果:

方式一:使用apipost或postman来请求响应;
方式二:复制官方代码下的resources/static,进入resources/static,运行index.html,进入web进行交互。
在这里插入图片描述
申请通义API-KEY
(按量收费)
为使示例能够正常接入通义大模型,需要在阿里云开通 DashScope 灵积模型服务,申请有效的 API-KEY 并更新到应用配置文件。具体操作步骤可参见如下文档:

https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

新用户会有免费额度:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSSCTF-Web题目18(反序列化)

目录 [NISACTF 2022]babyserialize 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]ez_ez_unserialize 4、题目 5、知识点 6、思路 [NISACTF 2022]babyserialize 1、题目 2、知识点 反序列化、绕过过滤、命令执行 3、思路 <?php include "waf.php";…

基于Vue,mysql,JavaEE的简单投票与投票管理系统

项目介绍 ​ 本项目&#xff0c;基于Vue2.6,mysql,JavaEE 实现简单的投票与投票管理系统 项目地址 VotingSystem: 投票系统1.0 管理员和普通用户 (gitee.com) 有问题请评论私聊哦 项目分类 数据库 创建投票人&#xff0c;被投票人&#xff0c;投票关系&#xff08;追踪谁…

float8格式

产生背景 在人工智能神经元网络中&#xff0c;一个参数用1字节表示即可&#xff0c;或者说&#xff0c;这是个猜想&#xff1a;因为图像的颜色用8比特表示就够了&#xff0c;所以说&#xff0c;猜想神经元的区分度应该小于256。 数字的分配 8比特有256个码位&#xff0c;分为…

【操作与配置】WSL配置LINUX

WSL2&#xff08;Windows Subsystem for Linux 2&#xff09;是Microsoft开发的一项技术&#xff0c;允许用户在Windows操作系统上运行Linux发行版。WSL2是WSL&#xff08;Windows Subsystem for Linux&#xff09;的第二版&#xff0c;带来了许多改进和新特性。 官网&#xff…

EXCEL 复制后转置粘贴

nodepad 转置参考&#xff1a; https://editor.csdn.net/md/?articleId140014651 1. WPS复制后转置粘贴 复制-》右键-》顶部第一行-》粘贴行列转置&#xff0c;如下图&#xff1a; 2. Excel office365 本地版 2. Excel office365 在线版

涨知识!推荐6个非常好用的App!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/我从 50 个应用程序中选出了 6 个超级实用的应用程序。 每款应用程序都是最核心、最有益的知识提升工具&#xff01;每天打开它们&#xff0c;提神…

Shell 脚本编程保姆级教程(上)

一、运行第一个 Shell 脚本 1.1 Shell 脚本 Shell 脚本&#xff08;shell script&#xff09;&#xff0c;是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本&#xff0c;但读者朋友要知道&#xff0c;shell 和 shell script 是两个不同的概念。 由…

PS的图片切图

这个功能呢是在一个图片中取出你想用的图标或图片。 我们首先下载一个PS工具&#xff1a; 然后打开应用&#xff0c; 在左侧有个一切片工具&#xff0c;我们左键选中他&#xff0c; 然后就可以在你的图片里进行划区域选取你所要选取的图片了&#xff0c; 当你选取完之后点击文…

Servlet工作原理

Servlet 工作原理 编写Servlet 创建servlet 创建一个MyServlet继承HttpServlet&#xff0c;重写doGet和doPost方法&#xff0c;也就是看请求的方式是get还是post&#xff0c;然后用不同的处理方式来处理请求&#xff0c; 2. 配置Servlet //添加参数 <servlet><se…

使用巴比达内网穿透搭建本地Web项目访问环境【免费方案】

你是否曾经遇到过这样的问题&#xff1a;你的服务器或者个人电脑处于内网环境中&#xff0c;无法直接通过公网IP进行访问&#xff1f;今天我要向大家推荐一款神器——巴比达内网穿透工具&#xff0c;帮助你轻松搭建SpringBoot的web外网访问环境&#xff01; 巴比达内网穿透是一…

浅谈API生态建设:API安全策略的6项原则

API作为连接系统与应用的桥梁&#xff0c;在助力实现高效业务流程的同时&#xff0c;也不可避免出现资产管理困难、敏感数据泄漏风险骤增等安全问题。前段时间&#xff0c;安全公司Fastly公布了一项重磅调查报告&#xff0c;报告中显示95%的企业在过去1年中遭遇过API安全问题。…

数据脱敏学习

数据脱敏是一种保护敏感信息的方法&#xff0c;它通过修改或删除数据中的敏感部分&#xff0c;使得数据在保持一定可用性的同时&#xff0c;不再直接关联到个人隐私或重要信息。 自然人指可以直接或间接标识 直接标识&#xff1a;如姓名、身份证号码、家庭住址、电话号码、电…

容器:string

以下是对于string容器常用功能和函数的总结 主要包括 1、定义string 2、字符串赋值 3、字符串拼接&#xff1a;str.append() 4、字符串查找&#xff1a;str.find() / str.rfind() 5、字符串替换&#xff1a;str.replace(&#xff09; 6、字符串长度比较&#xff1a;str.compare…

springboot多数据源应用,A服务依赖于B服务jar包,A服务和B服务业务数据分别入自己的库如何做?

上一节我们简单阐述了springboot多数据源如何配置。在实际的业务场景中我们常常遇到A服务依赖于B服务jar包&#xff0c;A服务和B服务业务数据分别入自己的库中。为何要这么做呢&#xff1f;比如B服务是日志SDK&#xff0c;A服务集成B服务来实现记录日志的功能&#xff0c;但是日…

无人机飞行操作技巧

要想充分利用无人机&#xff0c;掌握其操作技巧非常关键。以下是一些基础而重要的无人机操作技巧&#xff0c;可以帮助你更安全、更有效地使用无人机。 扫描式拍摄&#xff1a;这种方法涉及慢慢地将无人机从一个点移动到另一个点&#xff0c;同时保持相机对准一个特定的主题。…

Java基础知识-集合类

1、HashMap 和 Hashtable 的区别&#xff1f; HashMap 和 Hashtable是Map接口的实现类&#xff0c;它们大体有一下几个区别&#xff1a; 1. 继承的父类不同。HashMap是继承自AbstractMap类&#xff0c;而HashTable是继承自Dictionary类。 2. 线程安全性不同。Hashtable 中的方…

大数据学习之分布式数据采集系统Flume学习

分布式数据采集系统Flume学习 一、Flume架构 1.1 Hadoop业务开发流程 1.2 Flume概述 flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 支持在日志系统中定制各类数据发送方&#xff0c;用于收集数据; 同时&#xff0c;Flume提供对数据进行简单处理&…

用英文介绍开罗:Cairo, Egypt‘s MEGACITY

Cairo, Egypt’s MEGACITY: Largest City in the Middle East Link: https://www.youtube.com/watch?v0tKphKvodLQ&listPLmSQiOQJmbZ7TU39cyx7gizM9i8nOuZXy&index23 Summary Summary of the Mini-Documentary on Cairo Historical and Cultural Significance Cai…

从零开始学习Linux(10)----动静态库

目录 1.制作静态库 1.编写源代码 2.编译 3.打包库 4.使用库 2.制作动态库 1.编译 2.打包库 3.总结 3.理解动态库加载 1.站在系统角度理解 2.谈谈编址&#xff0c;可执行程序 1.制作静态库 1.编写源代码 假设你编写了两个源代码文件mymath.c和myprintf.c以及它们对应…

乐队谱在哪里找 乐队功能谱怎么做 Guitar Pro8激活码 吉他谱软件

学习乐队谱对于音乐爱好者来说是一种极具乐趣和挑战的体验。无论是追溯经典曲目还是与其他乐手合作&#xff0c;乐队谱都是实现音乐梦想的必备工具。然而&#xff0c;要找到适合练习的乐队谱并制作出符合乐队演奏需求的功能谱并不容易&#xff0c;需要借助一些方法和工具。下面…