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.测试【根据手机号查询预约】功能

这个功能也没毛病!

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

相关推荐
Shining05965 小时前
推理引擎方向(二)《大模型原理与结构》
人工智能·rnn·深度学习·学习·其他·大模型·infinitensor
HinsCoder9 小时前
【OpenClaw】——小龙虾极简接入Discord教程
ai·大模型·agent·discord·channel·openclaw·龙虾
python零基础入门小白11 小时前
多智能体强化学习:从基础到实战,掌握协作与竞争的艺术!
人工智能·学习·chatgpt·大模型·产品经理·ai大模型·大模型学习
xixixi7777713 小时前
拥抱AI大模型时代:开发者如何利用智能编程工具提升效率
人工智能·python·ai·大模型·aigc·代码
xixixi7777714 小时前
2026网络安全新战场:AI对抗、勒索软件升级与防御实战
人工智能·安全·机器学习·信息安全·大模型
示申○言舌14 小时前
基于知识库(RAG)系统打造由大模型(LLM)驱动NPC游戏的技术设想
游戏·unity·大模型·知识库·rag·智能npc·npc记忆
CoderJia程序员甲17 小时前
GitHub 热榜项目 - 日榜(2026-03-13)
ai·大模型·llm·github·ai教程
WWZZ202517 小时前
具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人3
机器人·大模型·具身智能·isaac
智海观潮18 小时前
只用一周时间通过AI工具重写Next.js,Cloudflare推出vinext重建前端开发边界
开发语言·javascript·人工智能·大模型·web
翔云12345619 小时前
OpenClaw与大模型通信过程:详细图文教程(2026最新)
ai·大模型·openclaw