偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

超實用!用FunctionCall實現(xiàn)快遞AI助手

人工智能 其他數(shù)據(jù)庫
昨天晚上直播,我們用 RAG(Retrieval-Augmented Generation,檢索增強生成)實現(xiàn)了數(shù)據(jù)庫 AI 助手,今天我們準(zhǔn)備換一個技術(shù)使用 function call 來實現(xiàn)快遞 AI 助手。

昨天晚上直播,我們用 RAG(Retrieval-Augmented Generation,檢索增強生成)實現(xiàn)了數(shù)據(jù)庫 AI 助手,今天我們準(zhǔn)備換一個技術(shù)使用 function call 來實現(xiàn)快遞 AI 助手。

執(zhí)行效果

快遞 AI 助手的業(yè)務(wù)邏輯很清晰,就是我通過 LLM 大語言模型的對話來查詢我的快遞詳情,例如,我問 AI 我有幾個“運送中”的快遞,他把這些快遞查詢并展示出來,效果如下圖所示:

圖片圖片

什么是 function call?

定義: Function Call(也稱為 Tool Call)它允許大模型與一組 API 或工具進行交互,從而增強其功能。

也就是說 Function Call 和 RAG、MCP 等類似都是用于增強 AI 能力邊界的。

function call 執(zhí)行流程

執(zhí)行流程如下:

圖片圖片

其中,Tool 既為 Function Call。

當(dāng)然如果你上圖看的不是很懂的話,也可以參考阿里云提供的 function call 的工作流程:

快遞 AI 助手實現(xiàn)

具體實現(xiàn)步驟:

  1. 添加大模型依賴
  2. 配置大模型參數(shù)
  3. 創(chuàng)建 function call
  4. 調(diào)用 function call 實現(xiàn)快遞查詢

接下來,我們一步步來看,我們以阿里云的百煉(通義千問)大模型對接為例。

1.添加大模型依賴

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>

2.配置大模型參數(shù)

spring:
  ai:
    openai:
      base-url: https://dashscope.aliyuncs.com/compatible-mode/
      api-key: ${ALIYUN-AK}
      chat:
        options:
          model: deepseek-v3

3.創(chuàng)建 function call

這里就不連接數(shù)據(jù)庫查詢快遞信息了,生成級別需要連接數(shù)據(jù)庫,這里演示效果,構(gòu)建測試數(shù)據(jù)即可,如下代碼所示:

import org.springframework.ai.tool.annotation.Tool;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

publicclass ExpressService {

    @Tool(description = "用于查詢我的快遞")
    public List<Express> getExpress(String state) {
        // 生成測試數(shù)據(jù)
        List<Express> data = getData();
        // 根據(jù)狀態(tài)過濾(如果state為null或空則返回全部)
        return state == null || state.isEmpty()
                ? data
                : data.stream()
                .filter(e -> e.state().equalsIgnoreCase(state))
                .collect(Collectors.toList());
    }

    /**
     * 生成測試快遞數(shù)據(jù)
     */
    private List<Express> getData() {
        List<Express> data = new ArrayList<>();
        LocalDateTime now = LocalDateTime.now();
        data.add(new Express(1001L, "北京", "西安", now.minusDays(12), "已簽收"));
        data.add(new Express(1002L, "廣州", "西安", now.minusDays(12), "已簽收"));
        data.add(new Express(1003L, "杭州", "西安", now.minusDays(3), "運送中"));
        data.add(new Express(1004L, "深圳", "西安", now.minusDays(3), "運送中"));
        data.add(new Express(1005L, "南京", "西安", now.minusDays(1), "待發(fā)貨"));
        return data;
    }


    /**
     * 快遞類
     *
     * @param id
     * @param from
     * @param to
     * @param createtime
     * @param state
     */
    record Express(long id, String from, String to,
                   LocalDateTime createtime, String state) {
    }
}

4.調(diào)用 function call

調(diào)用大模型可以使用 ChatModel 和 ChatClient,這里使用 ChatClient 調(diào)用:

@RequestMapping("/tool")
public Flux<String> tool(@RequestParam("msg") String msg) {
    return chatClient.prompt(msg)
            .tools(new ExpressService(),
                    new DateTimeTools())
            .stream().content();
}

最終執(zhí)行效果如下:

圖片圖片

小結(jié)

大模型應(yīng)用開發(fā)是以后程序開發(fā)的主流方向,他也會巔峰以往的開發(fā)形式,早早掌握大模型的開發(fā)知識,對于后期漲薪或找工作都有巨大的幫助。程序員群體注定是一個活到老學(xué)到老的群體,因為學(xué)習(xí)的本質(zhì)在于擴展自己的能力邊界,讓自己變得更值錢,所以各位動起來,讓我們一起擁抱這場 AI 盛宴吧。

責(zé)任編輯:武曉燕 來源: 磊哥和Java
相關(guān)推薦

2025-07-02 00:00:00

2024-07-11 15:26:23

2019-05-21 15:28:00

Tomcat腳本權(quán)限

2023-05-05 17:11:11

前端Mousetrap方式

2023-11-02 10:14:50

TinykeysWeb應(yīng)用

2024-08-12 08:41:40

2024-11-15 11:30:58

2023-08-09 12:21:58

軟件工具AI

2018-09-27 14:14:36

Infor AI

2024-01-04 15:09:03

蜜蜂AI助手鴻蒙操作系統(tǒng)

2022-05-25 08:21:15

2025-06-06 00:00:00

JavaHTTPMCP

2020-08-31 08:25:06

Python時間模塊開發(fā)

2025-05-23 10:41:00

2022-03-03 10:49:46

Python自動追蹤代碼

2023-11-09 11:31:43

GitHub開發(fā)

2019-01-14 12:28:21

華為云

2025-04-21 08:13:58

ChatGPTAINLP

2023-05-16 09:53:18

ChatGPT人工智能
點贊
收藏

51CTO技術(shù)棧公眾號