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

这个功能也没毛病!

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

相关推荐
lhxcc_fly4 小时前
0.LangChain--大模型篇
langchain·大模型·llm·openai·deepseek
硅基捕手维克托5 小时前
在策略上下文蒸馏:OPCD 把上下文知识直接焊进参数里 | 微软研究院
大模型·知识蒸馏·模型蒸馏·上下文蒸馏·在策略蒸馏·微软研究院·大模型蒸馏
IvanCodes5 小时前
Gemini 3.1 Pro 正式发布:一次低调更新,还是谷歌的关键反击?
人工智能·大模型·llm
sg_knight16 小时前
如何为 Claude Code 配置代理与网络环境
网络·ai·大模型·llm·claude·code·claude-code
laplace012318 小时前
IcePop技术
人工智能·大模型·agent·claude·rag·skills·icepop
山顶夕景20 小时前
【LLM】ROLL团队的Agentic RL训练坑点
大模型·llm·强化学习·rl·agentic rl
马克Markorg1 天前
基于LLM的大模型的RAG(检索增强生成)实现对比
python·大模型·agent·rag·企业级知识库的框架·rag 知识库
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-02-18)
人工智能·ai·大模型·github·ai教程
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-02-20)
人工智能·ai·大模型·github·ai教程