Spring AI实现智能对话
AI实现智能对话
·
介绍:通过Spring AI搭建智能客服
前面博客有讲到通过Spring AI实现对话,但spring-ai版本为1.0.0-M5
idea新建项目演示
jdk:17
spring-boot:3.4.5
spring-ai:1.0.0
参考Spring AI官网
Spring AI官方文档:https://docs.spring.io/spring-ai/reference/index.html
步骤一:引入依赖
版本管理
<java.version>17</java.version>
<spring-boot.version>3.4.5</spring-boot.version>
<spring-ai.version>1.0.0</spring-ai.version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
具体依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
步骤二:配置信息
application.yml
spring:
application:
name: SpringAI-Demo
# AI配置
ai:
openai:
api-key: 个人key
base-url: https://dashscope.aliyuncs.com/compatible-mode
chat:
options:
model: qwen-plus
此时需要使用中转站的url和key,否则访问不了,除非使用魔法
步骤三:敲代码
此次以openai模型为例
查看官方示例代码
新建controller包,直接复制即可
AiController
@RestController
@RequestMapping("/test")
public class AiController {
private final ChatClient chatClient;
public AiController(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
/**
* 智能对话
*
* @param userInput
* @return
*/
@GetMapping(value = "/ai")
public String generation(@RequestParam(value = "userInput") String userInput) {
System.out.println("generation()..");
return this.chatClient.prompt()
.user(userInput)
.call()
.content();
}
}
步骤四:测试
响应结果
注:RequestParam注解中的value值需与postman传参名称一致,否则报错!
响应结果
步骤五:优化代码
官方推荐使用配置文件方式定义聊天客户端,实现自动注入,并且可编写系统提示词,全局生效
AiConfig
@Configuration
public class AiConfig {
@Bean
public ChatClient chatClient(ChatClient.Builder builder) {
return builder
.defaultSystem("我的名字是小研,跟着我学习AI,月薪过万不是梦.")
.build();
}
}
controller层代码也需要更改
// 注入的方式使用
@Autowired
private ChatClient chatClient;
/**
* 智能对话
*
* @param userInput
* @return
*/
@GetMapping(value = "/ai")
public String generation(@RequestParam(value = "userInput") String userInput) {
System.out.println("generation()..");
return this.chatClient.prompt()
.user(userInput)
.call()
.content();
}
测试
基于提示词内容回答效果还是不错的
流式响应设置
/**
* 流式响应
*
* @param userInput
* @return
*/
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> generationByStream(@RequestParam(value = "userInput") String userInput) {
System.out.println("generationByStream()..");
Flux<String> output = this.chatClient.prompt()
.user(userInput)
.stream()
.content();
return output;
}
接口测试
至此,Spring AI实现智能对话demo版结束啦!
本人正在打造技术交流群,欢迎志同道合的朋友一起探讨,一起努力,通过自己的努力,在技术岗位这条道路上走得更远。QQ群号:925317809 备注:技术交流 即可通过!
加入技术群可以获取资料,含AI资料、Spring AI中文文档等,等你加入~
更多推荐
所有评论(0)