院儿饯 发表于 2025-12-4 07:55:00

Solon AI 开发学习11 - chat - 工具调用与定制(Tool Call)

Tool call(或 Function call)能够让大语言模型在生成时,“按需”调用外部的工具,进而连接外部的数据和系统。通过定义一组函数作为模型可访问的工具(也叫函数工具),并根据对话历史在适当的时候使用它们。然后在应用端执行这些函数,并将结果反馈给模型。
可以实现最新的数据状态(比如,联网查询时实天气)或者指令交互(比如,做运维操作)。是 AI 交互系统的基础技术。
相关接口:
接口或类描述备注FunctionTool函数工具接口为 ChatModel 提供工具ToolProvider工具提供者接口为 ChatModel 提供批量工具FunctionToolDesc函数工具描述类@ToolMapping工具映射注解MethodFunctionTool方法工具MethodToolProvider方法工具提供者分析出对象中的 @ToolMapping 函数,并构建出方法工具集合@Param参数映射注解1、FunctionTool (函数工具声明)接口与注解

工具,目前主要是指函数工具 FunctionTool(未来可能有不同类型的工具)。接口需要声明工具的类型和名字,描述,输入架构(由输入参数的名字、描述、类型,组合构成),及以处理方法。
//工具接口
public interface ChatTool {
    //工具类型
    String type();
}

//函数工具接口
public interface FunctionTool extends ChatTool {
    //工具类型
    default String type() { return "function"; }

    //名字
    String name();

    //描述
    String description();
   
    //是否直接返回给调用者(v3.2.1 后支持)
    boolean returnDirect();

    //输入架构
    ONode inputSchema();
   
    //输出架构
    default String outputSchema() { return null;}

    //处理
    String handle(Map<String, Object> args) throws Throwable;
}开发时,也可以使用注解简化工具声明(不需要 Bean 容器驱动):
@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ToolMapping {    //名字    String name() default "";    //描述    String description();    //是否直接返回给调用者    boolean returnDirect() default false;    //结果转换器    Class

别萧玉 发表于 5 天前

懂技术并乐意极积无私分享的人越来越少。珍惜

哈妙思 发表于 3 天前

感谢分享
页: [1]
查看完整版本: Solon AI 开发学习11 - chat - 工具调用与定制(Tool Call)