java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot AI智能客服模块

SpringBoot集成Spring AI构建AI智能客服模块

作者:大龄码农-涵哥

本文介绍了如何在SpringBoot项目中集成AI能力,包括创建项目、配置API密钥、开发AI对话服务以及测试验证,重点在于通过简单的示例展示AI对话的基本实现,为后续更复杂的进阶功能铺垫基础,需要的朋友可以参考下

一、前言

Spring Boot是Java最主流的框架,Spring官方也适时推出了Spring AI项目,让我们可以在Spring Boot应用中轻松集成AI能力。本文手把手教你搭建一个AI智能客服模块。

二、创建Spring Boot项目

2.1 使用Spring Initializr创建项目

访问 https://start.spring.io/ ,勾选以下依赖:

2.2 配置pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.4</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring AI OpenAI -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        <version>2024.0.0.0</version>
    </dependency>
</dependencies>

三、配置API Key

application.yml 中配置:

OpenAI配置

spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-3.5-turbo
          temperature: 0.7

阿里通义千问配置

spring:
  ai:
    dashscope:
      api-key: ${DASHSCOPE_API_KEY}
      chat:
        options:
          model: qwen-turbo

四、开发AI对话服务

4.1 Service层

package com.example.ai.service;

import org.springframework.ai.chat.*;
import org.springframework.ai.chat.messages.*;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class AIService {

    private final ChatClient chatClient;

    public AIService(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    /**
     * 简单对话(无上下文)
     */
    public String chat(String userMessage) {
        return chatClient.call(userMessage);
    }

    /**
     * 带上下文的对话(记住对话历史)
     */
    public String chatWithContext(String userMessage, ChatMemory chatMemory) {
        UserMessage userMsg = new UserMessage(userMessage);
        ChatResponse response = chatClient.call(
            new Prompt(
                List.of(userMsg),
                ChatOptions.builder()
                    .model("gpt-3.5-turbo")
                    .temperature(0.7f)
                    .build()
            )
        );
        return response.getResult().getOutput().getText();
    }

    /**
     * 系统提示词(设定AI角色)
     */
    public String chatAsCustomerService(String userMessage) {
        SystemPromptTemplate systemPrompt = new SystemPromptTemplate("""
            你是一个专业的电商客服,名字叫小e。
            你的职责是:
            1. 热情友好地回复客户咨询
            2. 了解客户需求,给出专业建议
            3. 引导客户下单,解答售后问题
            
            请用简洁、亲切的语言回复。
            """);
        
        UserMessage userMsg = new UserMessage(userMessage);
        Prompt prompt = new Prompt(List.of(userMsg));
        
        return chatClient.call(prompt).getResult().getOutput().getText();
    }
}

4.2 Controller层

package com.example.ai.controller;

import com.example.ai.service.AIService;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/ai")
public class AIController {

    private final AIService aiService;

    public AIController(AIService aiService) {
        this.aiService = aiService;
    }

    /**
     * 普通对话接口
     * 调用示例:GET /api/ai/chat?message=这件商品有优惠吗
     */
    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return aiService.chat(message);
    }

    /**
     * 扮演客服角色对话
     */
    @GetMapping("/customer-service")
    public String customerService(@RequestParam String message) {
        return aiService.chatAsCustomerService(message);
    }

    /**
     * POST请求,支持JSON body
     */
    @PostMapping("/chat")
    public String chatPost(@RequestBody ChatRequest request) {
        return aiService.chatAsCustomerService(request.getMessage());
    }
}

class ChatRequest {
    private String message;
    public String getMessage() { return message; }
    public void setMessage(String message) { this.message = message; }
}

五、测试验证

5.1 启动应用

mvn spring-boot:run

5.2 接口测试

# 普通对话
curl "http://localhost:8080/api/ai/chat?message=Java如何定义变量"
# 客服角色对话
curl "http://localhost:8080/api/ai/customer-service?message=这件裙子有几种颜色"

5.3 Postman测试

POST http://localhost:8080/api/ai/chat
Content-Type: application/json

{
    "message": "你们的退货政策是怎样的?"
}

到此这篇关于SpringBoot集成Spring AI构建AI智能客服模块的文章就介绍到这了,更多相关SpringBoot AI智能客服模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文