14.Tools工具的介绍和使用

目录

一.期望实现的效果

二.准备工作

1.创建预约表

2.定义实体类

3.编写Mapper、Service、Controller这三层代码

4.测试效果

三.原理

四.具体实现

1.准备、配置系统提示词

2.准备工具方法

3.配置工具方法

五.测试效果

1.测试【添加预约】功能

2.测试【根据手机号查询预约】功能


声明:以前叫function calling,现在叫Tools工具。

一.期望实现的效果

(志愿填报系统AI智能客服)当我们问AI客服和志愿填报有关的问题时,AI客服都要询问是否需要预约一对一指导服务,并且要求用户提供相关的个人信息,然后进行预约操作(说白了就是往预约表中插入一条数据)。

二.准备工作

思路:我们先自己把sql、后端代码写好(说白了就是crud)。后续才能谈通过tools工具调用这些sql。

1.创建预约表

2.定义实体类

和预约表是对应的。

java 复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Reservation {
    private Integer id;//主键id
    private String name;//预约人姓名
    private String gender;//预约人性别
    private String phone;//预约人手机号
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime time;//预计沟通时间
    private String province;//省份
    private Integer score;//预估分数
}

3.编写Mapper、Service、Controller这三层代码

mapper

java 复制代码
@Mapper
public interface ReservationMapper {
    //1、添加预约信息
    @Insert("insert into reservation " +
            "values (null, #{name}, #{gender}, #{phone}, #{time}, #{province}, #{score}) ")
    int addOneReservation(Reservation reservation);

    //2、根据手机号查询预约信息
    @Select("select * " +
            "from reservation " +
            "where phone = #{phone}")
    Reservation queryOneReservationByPhone(String phone);
}

service、serviceImpl

java 复制代码
public interface ReservationService {
    //1、添加预约信息
    Result addOneReservation(Reservation reservation);

    //2、根据手机号查询预约信息
    Result queryOneReservationByPhone(String phone);
}
java 复制代码
@Service
public class ReservationServiceImpl implements ReservationService {
    @Autowired
    private ReservationMapper reservationMapper;

    public Result addOneReservation(Reservation reservation) {
        try{
            int i = reservationMapper.addOneReservation(reservation);
            return new Result(200, "成功添加"+i+"条预约信息~");
        }catch(Exception e){
            return new Result(500, "添加失败,错误信息:"+e.getMessage());
        }
    }


    public Result queryOneReservationByPhone(String phone) {
        try{
            Reservation reservation = reservationMapper.queryOneReservationByPhone(phone);
            return new Result(200, "查询成功", reservation);
        }catch(Exception e){
            return new Result(500, "查询失败,错误信息:"+e.getMessage());
        }
    }
}

controller

java 复制代码
@RestController//表明这是一个controller层,并且自动将对象转为JSON格式返回
@RequestMapping("/api/reservation")//该controller的访问路径
public class ReservationController {
    @Autowired
    private ReservationService reservationService;

    /**
     * 添加一条预约信息
     */
    @PostMapping("/addOneReservation")
    public Result addOneReservation(@RequestBody Reservation reservation){
        return reservationService.addOneReservation(reservation);
    }

    /**
     * 根据手机号查询预约信息
     */
    @GetMapping("/queryReservationByPhone")
    public Result queryOneReservationByPhone(String phone){
        return reservationService.queryOneReservationByPhone(phone);
    }
    
}

4.测试效果

接口1:添加一条报考服务

可见此时确实多了一条报考服务。

接口2:根据手机号,查询报考服务

三.原理

原理就是下图这个流程图。

我们不用担心,我们只需要了解下图的流程即可。

灰色部分(核心)由langchain4j帮我们完成,我们只需要会用就行(详情见【四】)。

四.具体实现

1.准备、配置系统提示词

这一步主要是给AI大模型一个身份(此时的身份是AI智能志愿填报助手)。

并让它在每个问题后,主动询问用户是否需要预约服务、如需预约则要用户提供个人信息。

2.准备工具方法

新建Tool工具类

编写代码

java 复制代码
@Component
public class ReservationTool {
    @Autowired
    private ReservationService reservationService;

    //1.工具方法:添加志愿报考预约
    @Tool("预约志愿填报服务")
    public Result addReservation(
            @P("考生姓名") String name,
            @P("考生性别") String gender,
            @P("考生手机号") String phone,
            @P("预约沟通时间,格式为:yyyy-MM-dd HH:mm:ss") String time,
            @P("考生所在省份") String province,
            @P("考生预估分数") Integer score){
        Reservation reservation = new Reservation(null, name, gender, phone, LocalDateTime.parse(time), province, score);
        return reservationService.addOneReservation(reservation);
    }

    //2.工具方法:根据手机号查询预约信息
    @Tool("根据手机号查询预约报考服务单")
    public Result queryReservationByPhone(@P("考生手机号") String phone){
        return reservationService.queryOneReservationByPhone(phone);
    }
}

代码解读:

①@Tool用于声明工具方法的作用

②@P用于声明工具方法入参的含义

3.配置工具方法

五.测试效果

1.测试【添加预约】功能

然后去查看数据库的预约表,看看是否真的多出一条预约记录

可见此时没毛病,的确帮我们进行了预约,完美实现!

2.测试【根据手机号查询预约】功能

这个功能也没毛病!

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

相关推荐
前端小超人rui13 小时前
Prompt 提示词原理/组成/编写原则/编写技巧
人工智能·大模型·prompt
哥本哈士奇(aspnetx)13 小时前
LangChain DeepAgents 学习笔记
大模型
Mr.朱鹏14 小时前
9-检索增强生成RAG详解
python·gpt·langchain·大模型·llm·rag
Soari15 小时前
挑战 100ms 延迟极限:深度拆解 dograh,构建企业级开源 WebRTC 实时语音智能体平台
开源·大模型·webrtc·实时音视频·voiceagent·语音智能体·dograh
AI玫瑰助手15 小时前
PDF 转 Markdown 主力方案怎么选:PaddleOCR-VL-1.5、MinerU、HunyuanOCR 与 MonkeyOCR 实测对比
pdf·大模型·知识库·表格·md·文字识别·paddleocr
AI原来如此16 小时前
[特殊字符]2026AI Agent入门学习路径
学习·ai·大模型·ai编程
魔乐社区17 小时前
小参数・大码力・易部署 | Qwen3.6-27B上线魔乐社区,基于昇腾的部署教程来了
人工智能·开源·大模型
damo王18 小时前
极简Agent plan指南
大模型·agent·token·向量模型·open claw·coding plan·agent plan
四六的六19 小时前
我用什么技术做了TLDR Scholar——AI论文速读产品完整技术栈拆解
大模型·个人开发·ai编程·next.js·技术干货·独立开发·ai工具
DogDaoDao19 小时前
【GitHub】SkyReels-V2 无限时长电影级视频生成模型:技术架构与核心原理深度解析
人工智能·大模型·aigc·音视频·ai agent·生成视频·skyreels-v2