Spring AI 抢先体验, 5 分钟玩转 Java AI 应用开发

程序员咋不秃头2024-04-25 19:33:02  144

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

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

Spring AI x 通义千问 Demo 已上线至 sca.aliyun.com

Spring AI 简介

据 Spring AI 官网描述,该项目的灵感来自著名的 Python 项目,如 LangChain 和 LlamaIndex,但 Spring AI 并不是这些项目的直接复制。Spring AI 相信下一波 Generative AI 生成式应用程序将不仅面向 Python 开发人员,而且将在许多编程语言中广泛应用。

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

提供多种大模型服务对接能力,包括业界大多数主流大模型服务等;

支持灵活的 Prompt Template 和模型输出解析 Output Parsing 能力;

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

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

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

支持 AI Spring Boot Starter 实现配置自动装配。

Spring Cloud Alibaba AI 简介

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

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

以下是当前官方提供的 Spring Cloud Alibaba AI 应用开发示例,访问 sca.aliyun.com 可查看。

聊天对话应用

文生图应用

文生语音应用

模型输出解析OutputParser(实现从 String 到自动 POJO 映射)

使用 Prompt Template

让 AI 模型接入外部数据(Prompt Stuff)

体验第一个 Spring AI 应用开发

本项目演示如何使用 spring-cloud-starter-alibaba-ai 完成一个在线聊天 AI 应用,底层使用通义千问提供的模型服务。可在此查看完整示例源码[3]。

开发聊天对话应用

1. 在项目 pom.xml 中加入 2023.0.1.0 版本 Spring Cloud Alibaba 依赖:

com.alibaba.cloud spring-cloud-alibaba-dependencies 2023.0.1.0 pom import com.alibaba.cloud spring-cloud-starter-alibaba-ai

2. 在 application.yml 配置文件中加入以下配置:

spring: cloud: ai: tongyi: chat: options: # Replace the following key with a valid API-KEY. api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx

3. 编写聊天服务实现类,由 Spring AI 自动注入 ChatClient、StreamingChatClient,ChatClient 屏蔽底层通义大模型交互细节。

@Servicepublic class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl { private final ChatClient chatClient; private final StreamingChatClient streamingChatClient; @Autowired public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) { this.chatClient = chatClient; this.streamingChatClient = streamingChatClient; }}

4. 提供具体聊天逻辑实现

@Servicepublic class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl { // ...... @Override public String completion(String message) { Prompt prompt = new Prompt(new UserMessage(message)); return chatClient.call(prompt).getResult.getOutput.getContent; } @Override public Map streamCompletion(String message) { StringBuilder fullContent = new StringBuilder; streamingChatClient.stream(new Prompt(message)) .flatMap(chatResponse -> Flux.fromIterable(chatResponse.getResults)) .map(content -> content.getOutput.getContent) .doOnNext(fullContent::append) .last .map(lastContent -> Map.of(message, fullContent.toString)) .block; log.info(fullContent.toString); return Map.of(message, fullContent.toString); }}

5. 编写 Spring 入口类并启动应用

@SpringBootApplicationpublic class TongYiApplication { public static void main(String[] args) { SpringApplication.run(TongYiApplication.class); }}

至此,便完成了最简单的聊天 AI 应用开发,与普通的 Spring Boot 应用开发步骤完全一致!

验证应用效果

启动应用后,可通过如下两种方式验证应用效果。

方式一

浏览器地址栏输入:http://localhost:8080/ai/example

返回如下响应:

{ "Tell me a joke": "Sure, here's a classic one for you: Why was the math book sad? Because it had too many problems. I hope that made you smile! If you're looking for more, just let me know."}

方式二

进入 resources/static 目录下,使用浏览器打开 index.html 文件,输入问题,即可获得输出响应(确保 api-key 有效):

申请通义API-KEY

为使示例能够正常接入通义大模型,需要在阿里云开通 DashScope 灵积模型服务,申请有效的 API-KEY 并更新到应用配置文件。具体操作步骤可参见如下文档:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

未来规划

当前版本 Spring Cloud Alibaba AI 主要完成了几种常见生成式模型适配,包括对话、文生图、文生语音等。接下来的版本中,我们将继续完成 VectorStore、Embedding、ETL Pipeline 等更多适配,简化 RAG 等更多 AI 应用开发场景。

https://docs.spring.io/spring-ai/reference/0.8-SNAPSHOT/index.html

[2] 灵积模型服务

https://help.aliyun.com/zh/dashscope/

[3] 完整示例源码

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/397603.html
0
随机主题
20万买沃尔沃值得买吗 一文告诉你iPhone带手机壳散热不好?不可能,绝对不可能!金属手机壳陈建斌老婆新加坡度假, 48岁蒋勤勤坐街边啃螃蟹, 素颜没人认识阿为特30.0%涨停, 总市值19.06亿元迎接比糖果更甜的笑 6岁新疆女孩来浙修复唇腭裂石家班硬核实力“拒绝锁喉”不信你试试?售价26999元, 光阳赛艇ST250纪念版上市! 另有新款350踏板车亮相大雾黄色预警: 黄海东北部等将有能见度不足1公里的大雾拒绝续约+索要意甲顶薪! 国米头牌翻脸, 或遭甩卖, 新老板不惯着象棋对决中的利器:雷公炮布局助你克敌制胜#象棋原神为救流水, 动画攻势来了, 调香师和5.0纳塔希巴拉克建模首爆我不是看的穿越爽剧吗? 怎么学上历史了?Sensor Tower: 《Monopoly GO! 》4月蝉联全球手游畅销榜冠军, 《王者荣耀》位列第2名, 米哈游旗下两款手游表现强劲新加坡波音777客机遭严重乱流急降1死30伤 空乘和上厕所者伤势最重苏纳克雨中公布大选日, 西装全湿透反遭嘲笑, 王室会为选首相让路黄金纯度分为几种, 99999和9999黄金有什么区别2024年, 灵活就业和企退人员同样缴费15年, 谁的养老金更有优势?阿维塔12的产品力怎么样? 能不能撑起40万的价格?谢晖死活不换人! 王禹李申圆跑拉胯了 贝里奇战犯级表现, 葛副总还是别上了李金羽辞去中甲云南玉昆队主教练职务加油站的汽油都藏在哪里?那么多的油,是怎么防止它发生危险的?
最新回复(0)