AIGC宇宙 AIGC宇宙

AI实战案例:快速实现快递查询助手!

昨晚直播,咱们用 RAG(Retrieval-Augmented Generation,检索增强生成)实现了数据库 AI 助手,今天我们准备换一个技术使用 function call 来实现快递 AI 助手。 执行效果快递 AI 助手的业务逻辑很清晰,就是我通过 LLM 大语言模型的对话来查询我的快递详情,例如,我问 AI 我有几个“运送中”的快递,他把这些快递查询并展示出来,效果如下图所示:什么是 function call? 定义: Function Call(也称为 Tool Call)它允许大模型与一组 API 或工具进行交互,从而增强其功能。

昨晚直播,咱们用 RAG(Retrieval-Augmented Generation,检索增强生成)实现了数据库 AI 助手,今天我们准备换一个技术使用 function call 来实现快递 AI 助手。

执行效果

快递 AI 助手的业务逻辑很清晰,就是我通过 LLM 大语言模型的对话来查询我的快递详情,例如,我问 AI 我有几个“运送中”的快递,他把这些快递查询并展示出来,效果如下图所示:

图片

什么是 function call?

定义: Function Call(也称为 Tool Call)它允许大模型与一组 API 或工具进行交互,从而增强其功能。

也就是说 Function Call 和 RAG、MCP 等类似都是用于增强 AI 能力边界的

function call 执行流程

执行流程如下:

图片

其中,Tool 既为 Function Call。

当然如果你上图看的不是很懂的话,也可以参考阿里云提供的 function call 的工作流程:

快递 AI 助手实现

具体实现步骤:

  1. 添加大模型依赖
  2. 配置大模型参数
  3. 创建 function call
  4. 调用 function call 实现快递查询

接下来,我们一步步来看,我们以阿里云的百炼(通义千问)大模型对接为例。

1.添加大模型依赖

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

2.配置大模型参数

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

3.创建 function call

这里就不连接数据库查询快递信息了,生成级别需要连接数据库,这里演示效果,构建测试数据即可,如下代码所示:

复制
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) {
        // 生成测试数据
        List<Express> data = getData();
        // 根据状态过滤(如果state为null或空则返回全部)
        return state == null || state.isEmpty()
                ? data
                : data.stream()
                .filter(e -> e.state().equalsIgnoreCase(state))
                .collect(Collectors.toList());
    }

    /**
     * 生成测试快递数据
     */
    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), "待发货"));
        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.调用 function call

调用大模型可以使用 ChatModel 和 ChatClient,这里使用 ChatClient 调用:

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

最终执行效果如下:

图片

小结

大模型应用开发是以后程序开发的主流方向,他也会巅峰以往的开发形式,早早掌握大模型的开发知识,对于后期涨薪或找工作都有巨大的帮助。程序员群体注定是一个活到老学到老的群体,因为学习的本质在于扩展自己的能力边界,让自己变得更值钱,所以各位动起来,让我们一起拥抱这场 AI 盛宴吧。

相关资讯

腾讯云上线DeepSeek全系API接口并打通联网搜索

腾讯云宣布完成对深度求索(DeepSeek)大模型的深度整合——正式上线DeepSeek-R1和V3原版模型的API接口,并创新性接入自研大模型知识引擎,同步开放联网搜索能力。 凭借腾讯云在推理并发和生成速率等方面的优化,用户可以获得更加稳定、安全、低门槛的使用体验。 开发者只需在云上简单三步即可实现API接口调用,并通过大模型知识引擎提供的文档解析、拆分、embedding、多轮改写等能力,灵活构建专属的AI服务。
2/8/2025 2:09:00 PM
AI在线

微信搜索接入DeepSeek大模型 称AI不会使用朋友圈聊天等信息

近日,微信宣布其搜索功能接入 DeepSeek-R1模型,目前处于灰度测试阶段。 部分用户在微信搜索框选择 AI 搜索时,可体验到 DeepSeek-R1提供的深度思考功能。 微信方面表示,引入大模型旨在提升搜索的智能化和精准度,更好地理解用户搜索意图,分析处理复杂查询。
2/19/2025 11:18:00 AM
AI在线

DeepSeek-R1 登顶 Hugging Face:以10000 赞力压 150 万个模型

今日凌晨,全球最大开源平台之一 Hugging Face 的首席执行官 Clement Delangue 在社交平台发文宣布,DeepSeek-R1在 Hugging Face 上获得了超过10000个赞,成为该平台近150万个模型中最受欢迎的大模型。 这一里程碑式的成就标志着 DeepSeek-R1在全球 AI 社区中的广泛认可与影响力。 DeepSeek-R1的崛起速度令人瞩目。
2/24/2025 9:30:00 AM
AI在线
testab