精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

王炸!Spring AI+Tools 一分鐘實現CRUD智能助手

開發 前端
Tools賦予大語言模型與外部工具或API交互能力,使其能動態調用函數執行復雜任務。其核心作用包括:突破模型文本生成局限,實現查詢天氣、調用數據庫等實時操作等。

環境:SpringBoot3.4.2

1. 簡介

Tools賦予大語言模型與外部工具或API交互能力,使其能動態調用函數執行復雜任務。其核心作用包括:

  • 突破模型文本生成局限,實現查詢天氣、調用數據庫等實時操作
  • 構建多步驟智能體,支持旅行規劃、電商下單等跨工具協同場景
  • 與企業系統深度集成,自動調用CRM、ERP等業務接口處理客戶訂單、庫存查詢等需求,推動AI從對話助手向業務執行者躍遷。 

關于Tools更多的內容,請查看下面這篇文章:

太強了!Spring AI調用本地函數,實時獲取最新數據

本文將基于Spring AI+Tools 實現會議預約模塊的全鏈路CRUD操作。如下是一個查詢所有會議的小示例:

圖片

接下來,我們將實現上面的查詢功能及其它操作(新增,刪除等)。

2. 實戰案例

首先,準備環境,引入如下依賴及配置

<dependency>
  <groupId>com.alibaba.cloud.ai</groupId>
  <artifactId>spring-ai-alibaba-starter</artifactId>
  <version>1.0.0-M6.1</version>
</dependency>

配置文件application.yml

spring:
  ai:
    dashscope:
      api-key: sk-xxxooo
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
      chat:
        options:
          model: qwen-turbo
---
# 數據庫相關配置
spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ds
    username: root
    password: xxxooo

2.1 基本增刪改查

實體對象

@Entity
@Table(name = "t_meeting")
public class Meeting {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id ;
  private String title ;
  private String description ;
  private LocalDateTime startTime ;
  private Integer duration ;
  @Enumerated(EnumType.STRING)
  private Urgency urgency ;
  private String creator ;
  @OneToMany(mappedBy = "meeting", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  private Set<Participant> participants = new HashSet<>() ;
}
@Entity
@Table(name = "t_participant")
public class Participant {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String name;
  @ManyToOne(optional = false)
  @JoinColumn(name = "mid")
  @JsonIgnore
  private Meeting meeting ;
}

Repository定義

public interface MeetingRepository extends JpaRepository<Meeting, Long> {
}

Service增刪改查操作

@Service
public class MeetingService {


  private final MeetingRepository meetingRepository ;
  public MeetingService(MeetingRepository meetingRepository) {
    this.meetingRepository = meetingRepository;
  }
  @Transactional
  public Meeting createMeeting(Meeting meeting) {
    return meetingRepository.save(meeting);
  }
  public Meeting getMeetingById(Long id) {
    return meetingRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("會議不存在"));
  }
  @Transactional
  public void deleteMeeting(Long id) {
    meetingRepository.deleteById(id);
  }
  @Transactional(readOnly = true)
  public List<Meeting> getAllMeetings() {
    return meetingRepository.findAll();
  }
}

2.2 Tools定義

首先,我們定義一個VO對象,用來接收解析后的用戶輸入內容。

public class MeetingVO {
  @ToolParam(description = "會議主題,也可以是會議標題")
  private String title ;
  @ToolParam(description = "會議描述,備注信息")
  private String description ;
  @ToolParam(description = "會議時間")
  private LocalDateTime startTime ;
  @ToolParam(description = "會議大概持續時間,單位分鐘")
  private Integer duration ;
  @ToolParam(description = "會議緊急程度,分為3個等級: LOW(低), MEDIUM(一般), HIGH(高)")
  @Enumerated(EnumType.STRING)
  private Urgency urgency ;
  @ToolParam(description = "預約會議人")
  private String creator ;
  @ToolParam(description = "會議參與者,用逗號','分割")
  private Set<String> participants = new HashSet<>() ;
  // getters, setters
}

@ToolParam描述了每一個屬性的作用。接下來,是具體工具定義:

@Component
public class MeetingTools {
  private final MeetingService meetingService ;
  public MeetingTools(MeetingService meetingService) {
    this.meetingService = meetingService;
  }


  @Tool(description = "添加預約會議")
  public R<Meeting> addMeeting(MeetingVO meetingVO) {
    Meeting meeting = new Meeting() ;
    BeanUtils.copyProperties(meetingVO, meeting) ;
    Set<Participant> participants = meetingVO.getParticipants()
        .stream()
        .map(p -> new Participant(p, meeting))
        .collect(Collectors.toSet()) ;
    meeting.setParticipants(participants) ;
    this.meetingService.createMeeting(meeting) ;
    return R.success(meeting) ;
  }


  @Tool(description = "刪除預約會議")
  public R<String> deleteMeeting(@ToolParam(description = "會議編號") Long id) {
    this.meetingService.deleteMeeting(id) ;
    return R.success("刪除會議【" + id + "】成功") ;
  }


  @Tool(description = "查詢指定編號的會議")
  public R<Meeting> queryMeeting(@ToolParam(description = "會議編號") Long id) {
    return R.success(this.meetingService.getMeetingById(id)) ;
  }
  @Tool(description = "查詢所有會議")
  public R<List<Meeting>> queryMeetings() {
    return R.success(this.meetingService.getAllMeetings()) ;
  }
}

2.3 配置ChatClient

@Configuration
public class ChatConfig {
  @Bean
  ChatClient meetingChat(ChatClient.Builder chatClientBuilder) {
    String systemMessage = """
        當前時間:{date}。輸出結果使用HTML table表格展示。需要自適應頁面大小(寬度),字體大小為12px。除HTML相關的內容,不要有任何其它內容。
      """ ;
    ChatClient chatClient = chatClientBuilder
        .defaultSystem(systemMessage)
        .build();
    return chatClient ;
  }
}

該配置中我們配置了系統文本內容,告知了當前的時間,如果不這樣做最終得到的時間是錯誤的。

2.4 測試

@RestController
@RequestMapping("/meeting/chat")
public class MeetingChatController {
  private final MeetingTools meetingTools ;
  private final ChatClient chatClient ;
  public MeetingChatController(ChatClient chatClient) {
    this.meetingTools = meetingTools ;
    this.chatClient = chatClient ;
  }


  @GetMapping
  public ResponseEntity<?> chat(String message) {
    Prompt prompt = new Prompt(message) ;
    String content = this.chatClient
        .prompt(prompt)
        // 設置系統文本中的占位符參數
        .system(p -> p.param("date", new Date()))
        .tools(meetingTools)
        .call()
        .content() ;
    return ResponseEntity.ok(content) ;
  }
}

創建會議

http://localhost:8080/meeting/chat?message=給我預約今天12:30點的會議,預約人是趙宏,會議緊急程度為緊急;大概需要20分鐘,會議主題線上P1事故的處理結果,備注無。參會人員:田七,趙六,Pack

圖片圖片

查詢指定會議詳細

圖片圖片

查詢所有會議

圖片圖片

刪除會議

圖片圖片

責任編輯:武曉燕 來源: Springboot全家桶實戰案例源碼
相關推薦

2017-03-30 19:28:26

HBase分布式數據

2016-12-16 11:05:00

分布式互斥線程

2017-02-21 13:00:27

LoadAverage負載Load

2018-07-31 16:10:51

Redo Undo數據庫數據

2022-07-18 06:16:07

單點登錄系統

2020-05-21 19:46:19

區塊鏈數字貨幣比特幣

2017-07-06 08:12:02

索引查詢SQL

2018-06-26 05:23:19

線程安全函數代碼

2020-07-17 07:44:25

云計算邊緣計算IT

2020-07-09 07:37:06

數據庫Redis工具

2018-12-12 22:51:24

Java包裝語言

2016-09-12 17:28:45

云存儲應用軟件存儲設備

2011-02-21 17:48:35

vsFTPd

2017-12-26 16:24:36

接口代碼數據

2015-11-12 10:32:40

GitHub控制系統分布式

2021-08-06 08:50:45

加密貨幣比特幣區塊鏈

2018-03-27 09:28:33

緩存策略系統

2020-06-11 08:04:12

WDMDWDMMWDM

2013-11-15 07:24:50

4G LTE圖解

2011-04-19 09:27:25

Spring
點贊
收藏

51CTO技術棧公眾號

国产麻豆精品一区二区| 成人久久久久| 在线观看日韩国产| 四虎一区二区| www.国产黄色| 国产精品入口66mio| 日韩在线播放一区| 高清中文字幕mv的电影| 午夜激情成人网| 亚洲免费在线观看视频| http;//www.99re视频| 天堂网中文字幕| 欧美二区视频| 国产亚洲精品久久久| 性一交一黄一片| 成人a在线观看高清电影| 亚洲成人一区二区| 自拍偷拍亚洲色图欧美| 欧美欧美欧美| 国产一区二区三区美女| 国产ts人妖一区二区三区| 国产又黄又爽又无遮挡| 国产a久久精品一区二区三区| 欧美一区二区三区不卡| 成人午夜激情av| 欧美一级鲁丝片| 夜夜嗨av一区二区三区| 一本久久a久久精品vr综合 | 亚洲人av在线影院| 男人女人拔萝卜视频| 欧美成人家庭影院| 色乱码一区二区三区88| 亚洲人精品午夜射精日韩 | 老女人性生活视频| 色999久久久精品人人澡69| 欧美日韩在线一区| 国产成人无码a区在线观看视频| 二区在线播放| 中文字幕一区日韩精品欧美| 欧美一区二区三区精美影视| 无码国产精品高潮久久99| 国产.欧美.日韩| 97netav| 夜夜爽8888| 美日韩一区二区三区| 国产91精品最新在线播放| 一区二区三区福利视频| 99精品视频网| 2025国产精品视频| 久久久午夜影院| 一区二区三区导航| 欧美一级电影在线| 91久久国产综合久久91| 久久精品观看| 国产精品丝袜久久久久久高清| 国产区一区二区三| 久久久夜精品| 国产精品入口免费视频一| 日批视频免费观看| 另类调教123区| 成人黄色影片在线| 国产毛片在线视频| 国产一区二区三区在线观看精品 | 色综合综合网| 亚洲午夜色婷婷在线| 一区二区三区在线观看免费视频| 精品黄色一级片| www.亚洲一区| 欧美极品aaaaabbbbb| 影音先锋国产精品| 全亚洲最色的网站在线观看| www.五月婷婷.com| 精品一区二区三区久久久| 91视频网页| 香蕉久久国产av一区二区| 久久久青草青青国产亚洲免观| 日本中文不卡| 97影院秋霞午夜在线观看| 一区二区三区中文在线观看| 日韩免费在线观看av| 黄色激情在线播放| 欧美性一区二区| 奇米777在线视频| 久久成人福利| 色久欧美在线视频观看| 免费一级全黄少妇性色生活片| 亚洲精品影院在线观看| 国产精品久久久久久久av大片| 亚洲最新av网站| 99热这里都是精品| 亚洲精品视频一区二区三区| 制服丝袜在线播放| 色屁屁一区二区| 亚洲热在线视频| 日韩中文av| 另类色图亚洲色图| 手机在线看片1024| 国产一区999| 欧美黑人3p| a级影片在线| 日本高清免费不卡视频| 亚洲三级在线视频| 久久综合欧美| 久久久久中文字幕| 一级特黄录像免费看| aaa亚洲精品| 男女啪啪的视频| 二吊插入一穴一区二区| 精品福利二区三区| 视频国产一区二区| 视频在线观看91| 久久国产精品高清| 在线视频中文字幕第一页| 欧美综合亚洲图片综合区| 北京富婆泄欲对白| 欧美1区2区3区| 国产精品永久免费| 九色视频在线观看免费播放| 亚洲一区二区免费视频| 一级淫片在线观看| 色97色成人| 国产成人精品综合久久久| 亚洲精品久久久久久无码色欲四季| 中文字幕乱码一区二区免费| 无码专区aaaaaa免费视频| 日韩区一区二| 视频一区视频二区国产精品| www.国产com| 99久久综合国产精品| 久久久久久久9| 日本成人精品| 欧美成人免费小视频| 在线免费观看一级片| 91网址在线看| 男人操女人逼免费视频| 超碰97久久国产精品牛牛| 色先锋资源久久综合5566| 天堂网av手机版| 99精品欧美一区二区三区综合在线| 成人免费在线视频播放| 国产一区二区三区| 久久影院中文字幕| 国产精品伊人久久| 亚洲欧洲制服丝袜| 日韩高清在线一区二区| 亚洲激情中文| 亚洲尤物视频网| av观看在线| 精品久久国产老人久久综合| 少妇久久久久久被弄高潮| 国产精品一区二区男女羞羞无遮挡| 欧美 日韩 国产 在线观看| 亚洲aⅴ网站| 久久色在线播放| www.麻豆av| 亚洲午夜在线视频| 黄色性生活一级片| 可以看av的网站久久看| 先锋在线资源一区二区三区| 久久伊人国产| 美乳少妇欧美精品| 少妇高潮一区二区三区69| 无码av免费一区二区三区试看| 国产精品久久无码| 日韩在线卡一卡二| 日本一区二区免费高清视频| 国产日本亚洲| 国模视频一区二区三区| 日本黄在线观看| 欧美色综合久久| 亚洲色婷婷一区二区三区| 成人久久视频在线观看| 人妻有码中文字幕| 久久一区二区三区电影| 99r国产精品视频| 亚洲性受xxx喷奶水| 中文字幕亚洲国产| 亚洲男人天堂久久| 欧美性一级生活| 青青草精品在线视频| 99精品视频一区| 亚洲一区精品视频在线观看| 国产精品v一区二区三区| 久久久久资源| 国产剧情一区二区在线观看| 久久免费视频在线| 性开放的欧美大片| 亚洲福利视频二区| 亚洲天堂网视频| 亚洲.国产.中文慕字在线| 中文字幕伦理片| 成人av免费在线观看| 午夜在线观看av| 亚洲激情社区| 精品久久免费观看| 任你弄精品视频免费观看| 成人精品网站在线观看| 天天综合av| 美女av一区二区| 国产福利在线视频| 亚洲成人黄色在线| 91theporn国产在线观看| 欧美日韩国产综合新一区| 久久福利免费视频| 久久蜜臀精品av| youjizz.com日本| 黄网站免费久久| 日本老熟妇毛茸茸| 一本一本久久| 少妇久久久久久被弄到高潮| 欧美一级精品| 美女视频久久| 精品五月天堂| av在线不卡一区| 国产美女亚洲精品7777| 国产精品影片在线观看| 日韩精品99| 97在线视频观看| 久久亚洲导航| 欧美xxxx做受欧美.88| 在线国产91| 怡红院精品视频| 欧美精品久久久久久久久久丰满| 精品福利一二区| 国产aⅴ爽av久久久久成人| 欧美色老头old∨ideo| 国内自拍视频在线播放| 精品久久久久久亚洲国产300| www.av视频| 亚洲乱码国产乱码精品精的特点| 欧美福利在线视频| 欧美国产1区2区| 青娱乐国产视频| 国产区在线观看成人精品| 3d动漫精品啪啪一区二区下载 | 免费一区视频| 日韩av黄色网址| 亚洲麻豆视频| 欧美久久久久久久久久久久久 | 26uuu另类亚洲欧美日本一| 国产99re66在线视频| 欧美精品18videos性欧美| a级片国产精品自在拍在线播放| 精品国产一区久久久| 免费黄网站在线播放| 日韩中文在线视频| 好了av在线| 久久亚洲一区二区三区四区五区高| 欧洲日本在线| 欧美成人精品在线播放| 性爱视频在线播放| 久久久久免费精品国产| h片在线观看视频免费| 国产做受高潮69| 美女露胸视频在线观看| 日本欧美一二三区| 日本一区免费网站| 国产精品一区电影| 亚洲热av色在线播放| 91精品国产91久久久久青草| 91在线一区| 欧美精品v日韩精品v国产精品| 国产精品中文字幕亚洲欧美| 亚洲国产一区二区精品视频| 国产精品99一区二区三| 国产又粗又猛又爽又黄的网站| 最新国产乱人伦偷精品免费网站| 六月丁香婷婷激情| 日本女人一区二区三区| 在线观看中文av| 成人激情小说乱人伦| 右手影院亚洲欧美| 国产精品久久看| 国产亚洲欧美精品久久久www| 黄色一区二区在线观看| 亚洲av无码乱码国产精品fc2| 欧美人动与zoxxxx乱| 国产 日韩 欧美 精品| 亚洲男人的天堂网站| 久草资源在线| 97视频在线观看免费高清完整版在线观看 | 东京热加勒比无码少妇| 看国产成人h片视频| 国产高潮失禁喷水爽到抽搐| 久久久精品人体av艺术| 成人在线观看高清| 欧美日韩一区二区精品| 91theporn国产在线观看| 亚洲精品国产福利| 欧美日本一道| 5278欧美一区二区三区| 99精品女人在线观看免费视频| 精品国产乱码久久久久软件| 日韩午夜电影网| 日韩av综合在线观看| 久久精品国产一区二区三 | 欧美精品羞羞答答| 免费看日本黄色| 免费精品99久久国产综合精品| av免费观看不卡| 中文字幕在线视频一区| 在线观看亚洲天堂| 日韩美女一区二区三区四区| 国产精品久久久久一区二区国产 | 一区二区三区在线观看www| 亚洲人成高清| 樱花草www在线| 欧美极品aⅴ影院| 日韩精品无码一区二区| 91精品国产一区二区三区| 黄色软件在线观看| 97碰碰碰免费色视频| 玖玖精品一区| 在线观看一区二区三区三州| 老**午夜毛片一区二区三区| zjzjzjzjzj亚洲女人| 亚洲色图.com| 在线观看中文字幕网站| 一区二区成人av| 色戒汤唯在线观看| 国产伦一区二区三区色一情| 91精品精品| 欧美一级xxxx| 国产精品对白交换视频| 亚洲av无码乱码国产精品fc2| 精品偷拍一区二区三区在线看| 爱看av在线| 成人三级在线| 欧美暴力喷水在线| 天堂av2020| 亚洲女人小视频在线观看| 中文字幕在线播出| 色偷偷av一区二区三区乱| 欧美色片在线观看| 欧美一级二级三级九九九| 亚洲一区二区三区高清不卡| xxxx黄色片| 午夜私人影院久久久久| 少妇av在线播放| 欧美亚洲激情在线| 神马香蕉久久| www.亚洲天堂网| 中文在线免费一区三区高中清不卡| 国产又大又粗又爽| 在线午夜精品自拍| 久久免费影院| 麻豆md0077饥渴少妇| 国产一区999| 国产无套内射又大又猛又粗又爽 | av免费观看一区二区| 国产精品高潮在线| 日韩精品诱惑一区?区三区| av亚洲天堂网| 1024精品合集| 亚洲精品免费在线观看视频| 欧美精品成人91久久久久久久| 粉嫩一区二区三区四区公司1| 人人干视频在线| 久久精品视频在线看| 少妇又紧又色又爽又刺激视频 | 人人狠狠综合久久亚洲| 国精产品视频一二二区| 欧美一区二区三区视频免费| 丝袜美女在线观看| 久久99欧美| 轻轻草成人在线| 日韩一区二区三区四区在线| 欧美刺激脚交jootjob| 成人bbav| 先锋影音欧美| 国产成a人无v码亚洲福利| 久久不卡免费视频| 中文字幕精品国产| 日韩精品久久久久久久软件91| 国产自产在线视频| 国产午夜精品美女毛片视频| 国产精品视频久久久久久| 久久久久国产精品www| 国产videos久久| 一区二区三区国产好的精华液| 亚洲一区二区综合| 国产一区二区影视| 99国精产品一二二线| 久久国产一二区| 国产大片免费看| 亚洲人精品午夜在线观看| 亚洲日韩中文字幕一区| 欧美日韩一道本| 国产精品久久久久久久久久免费看| 亚洲第九十九页| 国产精品欧美激情在线播放| 午夜精品偷拍| 欧美福利第一页| 亚洲福利视频免费观看| 91精品在线免费视频| av动漫在线观看| 一区二区三区四区不卡视频 | 日韩成人高清| 99精品视频网站| 国产欧美日本一区二区三区|