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

这个功能也没毛病!

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

相关推荐
小七-七牛开发者7 小时前
Codex 实践系列 Vol.04:用 Goal 和 Plan 管住一个长任务
ai·大模型·agent·claude·token·工作流·claudecode·ai coding
熊猫钓鱼>_>8 小时前
AI 3D 虚拟盲盒工坊:用腾讯云混元3D + TTS Skills 打造会说话的三维收藏品
人工智能·大模型·llm·agent·tts·混元3d·多skill协同
thesky1234569 小时前
27届大模型面试准备(二十五):推理服务化与投机解码——vLLM、PagedAttention、Medusa 与连续批处理
大模型·vllm·eagle·pagedattention·medusa·推理服务化·投机解码
NutShell Wang9 小时前
国产全模态开源潮:从语言模型到视频模型,中国开源生态再升级
人工智能·语言模型·开源·大模型·音视频·多模态·vibe coding
赵大仁11 小时前
Tool Calling 工程化:Schema 设计、鉴权、失败重试
ai·大模型·agent·工程化·tool calling
码字的特恩11 小时前
微软确认暂不为 Windows 11 加入透明效果自定义功能,建议用户使用第三方工具
人工智能·windows·算法·microsoft·计算机·大模型·编程
程序猿编码12 小时前
不用PyTorch,不用CUDA,我用C++手写了一个能跑GPT和Whisper的推理库
c++·pytorch·gpt·大模型·whisper
AI大佬的小弟13 小时前
大模型名词精讲06:Top-P(核采样)
大模型·top-p·temperature·ai入门·核采样·采样策略·ai调参
thesky1234561 天前
27届大模型面试准备(二十三):数据工程与合成数据——配方、去重、质量过滤与数据飞轮
大模型·合成数据·数据去重·数据工程·minhash·数据配比·模型坍缩