前言
AI 大爆发后,人工智能已成为常态。Java 的 Spring 社区推出了 Spring AI 项目,该项目已集成 OpenAI 的 API,如此一来,无需开发者自行实现向 OpenAI 发送请求与接收响应的交互程序,只需调用 Spring AI 提供的接口即可。
然而,OpenAI 的 key 并非免费,且其为国外服务,在使用时速度会受到一定影响。鉴于此,可选择使用(Spring AI Alibaba)。
Spring AI Alibaba 是基于 Spring AI 构建的开源项目,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践。基于此,我们使用他来快速开发ChatGPT应用。
项目搭建
本文通过使用Spring AI Alibaba带你10分钟完成搭建ChatGPT应用。
项目准备(7分钟)
- 开发工具:IDEA
- JDK>=17
- 获取KEY
- 构建Spring Boot项目
获取KEY
开发工具和JDK应该都是程序员都有的了,这里我说一下怎么获取Key。
通过阿里的大模型服务平台百炼平台,开启服务后,点击右上角【我的】获取API-KEY复制。
构建项目
接着创建Spring Boot项目,jdk17,版本选择3.x版本。一定要使用jdk17以上版本,17以下会报错版本过低。
创建完成后,配置pom文件,导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
<version>1.0.0-M3.1</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
刷新maven,等待下载完毕。再在我们的application中配置好我们从阿里获取到的KEY。
spring:
application:
name: springai_alibaba
ai:
dashscope:
api-key: sk-***
代码编写(3分钟)
简单的对话
Spring AI Alibaba可以非常简便的完成GPT服务的调用,这里创建一个ChatGPTController,完成同步和流式两种方式对话的返回。
@RestController
public class ChatGptController
{
private final ChatClient chatClient;
public ChatGptController(ChatClient.Builder builder) {
this.chatClient = builder
.build();
}
/**
* 同步API
*/
@RequestMapping("/ai/chatgpt")
public String chatgptDemo(@RequestParam("message") String message)
{
return this.chatClient.prompt()
.user(message)
.call()
.content();
}
/**
* 流式API
*/
@RequestMapping(value = "/ai/stream",produces = "text/html;charset=utf-8")
public Flux<String> flux(@RequestParam("message")String message) {
return chatClient.prompt()
.user(message)
.stream()
.content();
}
}
编写完成后,启动项目,访问localhost:8080/ai/stream?message=你的问题进行测试。
添加人设
Spring AI Alibaba 不止提供了以上原子能力抽象,还提供了高阶 “智能体” API 抽象 ChatClient
,让我们可以非常方便的使用流式 Fluent API 把多个组件组装起来,成为一个智能体 Agent。
通过在初始化ChatClient
时我们给可以给GPT添加人设信息。
private final ChatClient chatClient;
public ChatGptController(ChatClient.Builder builder) {
this.chatClient = builder
.defaultSystem("你是火车票小助手\n" +
"极其严谨认真,对每一个火车票相关的信息和规定都了如指掌,无论是车次时刻表、票价规则还是购票流程等,都能准确无误地提供详细解答。\n" +
"冷静沉稳,面对用户的各种焦急询问,始终保持平和的心态,有条不紊地处理问题,给用户带来安心感。\n" +
"技能与职责:\n" +
"能迅速查询到全国范围内任意两站之间的所有可行车次信息,包括高铁、动车、普速列车等不同类型车次的具体时刻表、余票情况等。\n" +
"详细解读各类火车票票价政策,如儿童票、学生票、军人票等特殊票种的购票条件和优惠方式。\n" +
"全程指导用户完成购票、改签、退票等操作流程,确保每一个步骤都准确无误,避免用户因操作不当而产生损失。\n" +
"及时关注铁路部门的最新通知和政策变化,并第一时间将相关信息传达给用户。")
.build();
}
效果如下:
其他功能
以上就是Spring AI Alibaba的基本功能,更多其他高级的功能可以参考它的官方文档核心概念-阿里云Spring Cloud Alibaba官网,我们下期活动再见。