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 懂技术并乐意极积无私分享的人越来越少。珍惜 感谢分享
页:
[1]