百日筑基第四十三天-了解一下Spring AI
Spring AI
下面这张截图来自Spring的官网,除了我们熟悉的Spring全家桶之外,还多了一个新的板块叫做SpringAI,你可以直接访问下面这个地址来到Spring的官网:spring.io/projects/sp…
在我写这篇文章的时候,当前的最新正式版本是0.8.1,还有一个1.0.0-SNAPSHOT的快照版本。
SpringAI这个模块要做的事情和其他的Spring模块一样,能让程序员用最快的方式接入AI,从SpringAI的官方文档可以看到,像聊天模型、文字转图片模型、语音转文字模型、嵌入式模型的呢功能等,它都提供了对应的API,接下来就来看看,如何快速地使用SpringAI。
创建项目
通过Spring Initializr的方式来初始化一个Spring项目,需要注意的是,SpringAI要求最低的JDK是17,所以在创建项目时需要选择JDK17
在后一个页面中选择一个Web的Starter,另外我主要演示OpenAI的使用,因此在AI模块中选择OpenAI
然后点击创建,一个SpringBoot项目就创建完成了。
可以看一下这个生成出来的pom依赖,一个Web的starter以及一个openai的starter。
xml代码解读复制代码 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
代码编写
下面是一个官网的案例,首先在配置文件中增加下面这几行配置:
properties代码解读复制代码spring.ai.openai.api-key=你自己的OpenAI的key
spring.ai.openai.chat.options.model=gpt-3.5-turbo
这里要输入两个配置,一个是OpenAI的key,另外一个是选择的模型,key和模型需要对应上,接着编写接口。
java代码解读复制代码import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class ChatController {
private final OpenAiChatClient chatClient;
@Autowired
public ChatController(OpenAiChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatClient.call(message));
}
}
在上面这个例子中,通过构造器注入的方式注入了OpenAiChatClient这个对象,然后只需要调用它的call方法,传入一段对话文本,就能得到AI的结果,启动项目后,在PostMan中进行调用,然后你就得到了一个AI机器人
总结
Spring真的是追着把饭喂给程序员,通过SpringAI,创建一个AI应用全程都不到5分钟大家有兴趣的可以去试试其他的AI大模型,官网都有很详细的教程。
Spring Cloud Alibaba AI
Spring Cloud Alibaba AI
以 Spring AI
为基础,并在此基础上,基于 Spring AI 0.8.1 版本 API 完成通义系列大模型的接入
实现阿里云通义系列大模型全面适配。
在当前最新版本中,Spring Cloud Alibaba AI
主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等,
开发者可以使用 Spring Cloud Alibaba AI
开发基于通义的聊天、图片或语音生成 AI 应用,
框架还提供 OutParser
、Prompt Template
、Stuff
等实用能力。
第一个Spring AI应用开发
① 新建maven 项目
注: 在创建项目的时候,jdk版本必须选择17+
② 添加依赖
xml代码解读复制代码<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>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-ai</artifactId>
<version>2023.0.1.0</version>
</dependency>
注: 这里我们需要配置镜像源,否则是没法下载依赖的。会报如下错误
spring-ai: 0.8.1 dependency not found
xml代码解读复制代码<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
③ 在 application.yml
配置文件中添加api-key
yaml代码解读复制代码spring:
cloud:
ai:
tongyi:
api-key: 你自己申请的api-key
小伙伴如果不知道在哪申请,我把申请连接也放这儿了
dashscope.console.aliyun.com/apiKey
操作步骤:help.aliyun.com/zh/dashscop…
④ 新建TongYiController
类,代码如下
less代码解读复制代码@RestController
@RequestMapping("/ai")
@CrossOrigin
@Slf4j
public class TongYiController {
@Autowired
@Qualifier("tongYiSimpleServiceImpl")
private TongYiService tongYiSimpleService;
@GetMapping("/example")
public String completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return tongYiSimpleService.completion(message);
}
}
⑤ 新建TongYiService
接口,代码如下
arduino代码解读复制代码public interface TongYiService {
String completion(String message);
}
⑥ 新建TongYiSimpleServiceImpl
实现类,代码如下
java代码解读复制代码@Service
@Slf4j
public class TongYiSimpleServiceImpl implements TongYiService {
private final ChatClient chatClient;
@Autowired
public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
this.chatClient = chatClient;
}
@Override
public String completion(String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatClient.call(prompt).getResult().getOutput().getContent();
}
}
到这儿我们一个简单的AI应用已经开发完成了,最终项目结构如下
运行AI应用
启动服务,我们只需要在浏览器中输入:http://localhost:8080/ai/example 即可与AI交互。
① 不带message参数,则message=Tell me a joke,应用随机返回一个笑话
② 我们在浏览器中输入:http://localhost:8080/ai/example?message=对话内容
前端页面对话模式
我们只需要在resources/static
路径下添加一个index.html前端页面,即可拥有根据美观的交互体验。
index.html
代码官方github
仓库中已给出样例,由于代码比较长,这里就不贴代码了
添加完静态页面之后,我们浏览器中输入:http://localhost:8080/index.html 就可以得到一个美观的交互界面
其他模型
上面章节中我们只简单体验了对话模型,阿里还有很多其他模型。由于篇幅原因这里就不一一带大家一起体验了。
应用场景:
各个模型概述:
怎么样快速接入大模型
各种应用场景阿里官方GitHub都给出了接入例子