介绍:通过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中文文档等,等你加入~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐