5分钟搞定:Spring AI支持SpringBoot快速构建人工智能AI应用_springai_springboot_AI应用
通过阅读这篇文章,你将了解Spring AI, 它是一个借鉴了langchain的设计理念,并结合Java的优势,为开发者提供易于替换实现的统一接口。
此外,文章还基于 Spring AI的 模型调用和Prompt模板 ,构建一个可操作的示例,让你可以快速的了解具体怎么在springboot的环境下 使用spring ai 来构建人工智能AI的应用
Spring AI:简化Java大模型集成的统一框架
在Java调用大模型时,缺少一个良好的AI应用框架支持,导致开发者需要频繁查阅不同提供商的文档,增加了开发难度。Spring作为成熟的Java应用框架供应商,推出了Spring AI以解决这一问题。它借鉴了langchain的一些设计理念,并结合了Java面向对象编程的优势,提供了统一接口、易于替换实现的特点。此外,还有专门团队负责维护和更新。例如,通过Spring AI Alibaba接入阿里云通义大模型,开发者可以轻松地利用该框架来添加AI能力到自己的项目中。一旦掌握了如何使用Spring AI与通义合作,将同样适用于其他大模型实现,只需简单更改配置即可。这使得基于Java构建的大模型应用变得更加灵活且易于管理。
Spring AI Alibaba功能概览与使用指南
Spring AI Alibaba 是基于 Spring AI 的一个实现,专为整合阿里云的AI能力而设计。它继承了Spring AI的核心优势,如可移植性和模块化设计,并特别针对国内开发者的需求进行了优化。作为国内最好的Spring AI实现之一,Spring AI Alibaba不仅提供了与Spring Cloud Alibaba相似的最佳实践集成,还支持多种强大的功能和能力,比如模型调用、Prompt模板、RAG(Retrieval-Augmented Generation)、文生图以及文字识别等。通过使用Spring AI Alibaba,开发者可以轻松地在自己的项目中引入这些先进的AI特性,简化开发流程并提高效率。本文将重点介绍如何利用Prompt模板和模型调用来接入Spring AI Alibaba。
阿里巴巴云开发的通义千问Qwen:在多个评测中表现出色并位居榜首
通义千问Qwen是阿里巴巴云开发的预训练模型,在多个基准测评中表现出色。在MMLU、TheoremQA和GPQA等评测指标上,Qwen超越了Llama 3 70B, 这些指标都是国际公认的大模型评测指标。
在Hugging Face开源大模型排行榜Open LLM Leaderboard上位居榜首,展示了其卓越的能力。
另外,在真人参与评测的arena里面,它不仅在思南平台 上仅次于国际知名的GPT和Claude系列,还在 Hugging Face的视觉模型竞技场 中稳居中国首位。
使用SpringBoot集成Spring AI Alibaba
要基于Spring Boot集成Spring AI Alibaba,并完成一个简单的对话模型,构建支持prompt的流返回接口项目,我们需要遵循一定的步骤来确保配置和代码的完整性。以下将详细介绍如何实现这一目标,包括环境设置、必要的依赖添加以及具体的Controller实现。
环境要求
- JDK版本需为17或更高。
- Spring Boot版本需为3.3.x或以上。
申请API Key
首先需要在阿里云平台获取通义千问(或其他所需大模型)的API Key:
- 访问阿里云百炼页面并登录账号。
- 开通“百炼大模型推理”服务。
- 创建新的API Key并记录下该Key值。
接下来,在您的开发环境中配置API Key:
export AI_DASHSCOPE_API_KEY=${REPLACE-WITH-VALID-API-KEY}
同时,在application.properties
文件中也配置此API Key:
spring.ai.dashscope.api-key: ${AI_DASHSCOPE_API_KEY}
添加仓库和依赖
由于spring-ai-alibaba-starter
尚未发布到Maven中央仓库,因此您需要手动添加Spring及其快照仓库以访问相关依赖:
<repositories><repository><id>sonatype-snapshots</id><url>https://oss.sonatype.org/content/repositories/snapshots</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories>
然后,在pom.xml
中添加对spring-ai-alibaba-starter
的依赖:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.4</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M2</version></dependency><!-- 其他依赖 -->
</dependencies>
编写Controller
创建一个新的Controller类,注入ChatClient
实例,并实现一个GET请求处理方法来响应客户端的消息输入。这里我们还启用了跨域资源共享(CORS),使得前端可以更方便地与后端交互。
@RestController
@RequestMapping("/ai")
@CrossOrigin(origins = "*") // 启用CORS
public class ChatController {private final ChatClient chatClient;public ChatController(ChatClient.Builder builder) {this.chatClient = builder.build();}@GetMapping(value = "/steamChat")public Flux<String> steamChat(@RequestParam String input) {return chatClient.prompt().user(input).stream().content();}
}
通过上述配置与代码实现,您就建立了一个基本的基于Spring Boot的聊天应用,它利用了Spring AI Alibaba提供的ChatClient
功能来生成回复,并且能够以流式方式返回数据给调用者。此外,该应用还支持CORS,允许从不同源发起的请求进行通信。最后,请确保你的应用程序运行在http://localhost:8080/
上,以便通过http://localhost:8080/ai/steamChat?input=...
URL正确访问这个新创建的服务。