最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成Spring AI構(gòu)建AI智能客服模塊

 更新時(shí)間:2026年04月28日 09:08:51   作者:大齡碼農(nóng)-涵哥  
本文介紹了如何在SpringBoot項(xiàng)目中集成AI能力,包括創(chuàng)建項(xiàng)目、配置API密鑰、開(kāi)發(fā)AI對(duì)話服務(wù)以及測(cè)試驗(yàn)證,重點(diǎn)在于通過(guò)簡(jiǎn)單的示例展示AI對(duì)話的基本實(shí)現(xiàn),為后續(xù)更復(fù)雜的進(jìn)階功能鋪墊基礎(chǔ),需要的朋友可以參考下

一、前言

Spring Boot是Java最主流的框架,Spring官方也適時(shí)推出了Spring AI項(xiàng)目,讓我們可以在Spring Boot應(yīng)用中輕松集成AI能力。本文手把手教你搭建一個(gè)AI智能客服模塊。

二、創(chuàng)建Spring Boot項(xiàng)目

2.1 使用Spring Initializr創(chuàng)建項(xiàng)目

訪問(wèn) https://start.spring.io/ ,勾選以下依賴:

  • Spring Web
  • Spring AI(2024版本)
  • Thymeleaf(可選,用于簡(jiǎn)單頁(yè)面展示)

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

阿里通義千問(wèn)配置

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

四、開(kāi)發(fā)AI對(duì)話服務(wù)

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;
    }

    /**
     * 簡(jiǎn)單對(duì)話(無(wú)上下文)
     */
    public String chat(String userMessage) {
        return chatClient.call(userMessage);
    }

    /**
     * 帶上下文的對(duì)話(記住對(duì)話歷史)
     */
    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();
    }

    /**
     * 系統(tǒng)提示詞(設(shè)定AI角色)
     */
    public String chatAsCustomerService(String userMessage) {
        SystemPromptTemplate systemPrompt = new SystemPromptTemplate("""
            你是一個(gè)專業(yè)的電商客服,名字叫小e。
            你的職責(zé)是:
            1. 熱情友好地回復(fù)客戶咨詢
            2. 了解客戶需求,給出專業(yè)建議
            3. 引導(dǎo)客戶下單,解答售后問(wèn)題
            
            請(qǐng)用簡(jiǎn)潔、親切的語(yǔ)言回復(fù)。
            """);
        
        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;
    }

    /**
     * 普通對(duì)話接口
     * 調(diào)用示例:GET /api/ai/chat?message=這件商品有優(yōu)惠嗎
     */
    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return aiService.chat(message);
    }

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

    /**
     * POST請(qǐng)求,支持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; }
}

五、測(cè)試驗(yàn)證

5.1 啟動(dòng)應(yīng)用

mvn spring-boot:run

5.2 接口測(cè)試

# 普通對(duì)話
curl "http://localhost:8080/api/ai/chat?message=Java如何定義變量"
# 客服角色對(duì)話
curl "http://localhost:8080/api/ai/customer-service?message=這件裙子有幾種顏色"

5.3 Postman測(cè)試

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

{
    "message": "你們的退貨政策是怎樣的?"
}

到此這篇關(guān)于SpringBoot集成Spring AI構(gòu)建AI智能客服模塊的文章就介紹到這了,更多相關(guān)SpringBoot AI智能客服模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決微服務(wù)中關(guān)于用戶token處理到的坑

    解決微服務(wù)中關(guān)于用戶token處理到的坑

    這篇文章主要介紹了解決微服務(wù)中關(guān)于用戶token處理到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java五子棋簡(jiǎn)單實(shí)現(xiàn)代碼舉例

    Java五子棋簡(jiǎn)單實(shí)現(xiàn)代碼舉例

    Java五子棋游戲是一種經(jīng)典的兩人對(duì)戰(zhàn)棋類游戲,它基于簡(jiǎn)單的規(guī)則,即任何一方的棋子在棋盤上形成連續(xù)的五個(gè),無(wú)論是橫、豎還是斜線,都將獲勝,這篇文章主要介紹了Java五子棋實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2024-10-10
  • Java入門絆腳石之Override和Overload的區(qū)別詳解

    Java入門絆腳石之Override和Overload的區(qū)別詳解

    重寫是子類對(duì)父類的允許訪問(wèn)的方法的實(shí)現(xiàn)過(guò)程進(jìn)行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為。重載是在一個(gè)類里面,方法名字相同,而參數(shù)不同。返回類型可以相同也可以不同
    2021-10-10
  • log4j的配置文件詳細(xì)解析

    log4j的配置文件詳細(xì)解析

    以下小編主要為大家介紹一下log4j的配置文件各個(gè)配置項(xiàng)的含義。需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • MDC在多線程中的使用方式

    MDC在多線程中的使用方式

    這篇文章主要介紹了MDC在多線程中的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Springboot啟動(dòng)同時(shí)創(chuàng)建數(shù)據(jù)庫(kù)和表實(shí)現(xiàn)方法

    Springboot啟動(dòng)同時(shí)創(chuàng)建數(shù)據(jù)庫(kù)和表實(shí)現(xiàn)方法

    這篇文章主要介紹了Springboot啟動(dòng)同時(shí)創(chuàng)建數(shù)據(jù)庫(kù)和表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • 定義hashcode時(shí)使用31系數(shù)的原因

    定義hashcode時(shí)使用31系數(shù)的原因

    這篇文章主要介紹了定義hashcode時(shí)使用31系數(shù)的原因,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • spring.datasource.schema配置詳解

    spring.datasource.schema配置詳解

    本文主要介紹了spring.datasource.schema配置,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 快速解決code唯一碼(java)的簡(jiǎn)便方法

    快速解決code唯一碼(java)的簡(jiǎn)便方法

    下面小編就為大家?guī)?lái)一篇快速解決code唯一碼(java)的簡(jiǎn)便方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Java Benchmark 基準(zhǔn)測(cè)試的實(shí)例詳解

    Java Benchmark 基準(zhǔn)測(cè)試的實(shí)例詳解

    這篇文章主要介紹了Java Benchmark 基準(zhǔn)測(cè)試的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

海安县| 洮南市| 墨竹工卡县| 磴口县| 乌兰浩特市| 拉萨市| 洞口县| 尼玛县| 汤原县| 浦城县| 仁怀市| 耿马| 泸溪县| 达尔| 吉木乃县| 巴彦淖尔市| 安康市| 疏附县| 滦平县| 鲜城| 阿合奇县| 璧山县| 封丘县| 汉川市| 石狮市| 金溪县| 肇源县| 拜城县| 澄迈县| 四平市| 横山县| 旌德县| 乐亭县| 犍为县| 睢宁县| 达日县| 许昌市| 基隆市| 扶余县| 清新县| 布尔津县|