赞
踩
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 框架
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 应用开发示例:
基于官方文档进行接入体验!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-demo
cloud:
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; @Autowired public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) { this.chatClient = chatClient; this.streamingChatClient = streamingChatClient; } /** * 模型回答 * @param message 问题. * @return */ @Override public String completion(String message) { // 创建提问的Prompt Prompt 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
新用户会有免费额度:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。