建站技术分享地产集团网站建设
张小明 2026/1/1 7:01:37
建站技术分享,地产集团网站建设,学怎么做建筑标书哪个网站,网站数据库默认地址Spring AI 的工具调用功能支持通过 声明式#xff08;Tool 注解#xff09;、编程式#xff08;MethodToolCallback/FunctionToolCallback#xff09;及动态#xff08;Bean 注解#xff09; 三种方式定义工具#xff0c;工具类型涵盖 信息检索 和 执行操作 两类核心场景…Spring AI 的工具调用功能支持通过声明式Tool 注解、编程式MethodToolCallback/FunctionToolCallback及动态Bean 注解三种方式定义工具工具类型涵盖信息检索和执行操作两类核心场景可通过ChatClient或ChatModel配置工具含默认工具与运行时工具由ToolCallingManager管理工具执行生命周期框架控制或用户控制模式并提供 JSON Schema 自动生成、结果转换、ToolContext 上下文传递、异常处理及动态工具解析等能力模型仅负责请求工具调用实际执行由应用程序完成保障安全性与灵活性。标题一、工具调用基础概念定义与核心价值工具调用函数调用是AI应用通过与API交互扩展模型能力的模式模型仅负责请求调用并提供参数应用程序执行工具并返回结果模型无法直接访问工具API关键安全原则。两大核心场景信息检索从外部源数据库、网络、文件等获取实时/特定信息如天气、新闻支持检索增强生成RAG。执行操作自动化人工任务如发送邮件、创建数据库记录、设置闹钟。依赖组件需支持工具调用的AI模型参考“聊天模型对比指南”且需从已弃用的FunctionCallback迁移至ToolCallback API。二、工具定义的三种方式定义方式核心实现配置关键适用场景声明式Tool注解方法添加Tool注解自动生成ToolCallback可配置name、description、returnDirect、resultConverter参数用ToolParam标注描述/必需性快速定义工具无需手动构建回调编程式MethodToolCallback方法转工具、FunctionToolCallback函数转工具需手动构建ToolDefinition、ToolMetadata指定工具名称/描述/输入类型需自定义工具执行逻辑场景动态式Bean注解函数类型Function/Supplier等Spring Bean由SpringBeanToolCallbackResolver动态解析Bean名称为工具名Description提供描述需动态注册、跨请求共享的通用工具工具参数与JSON Schema自动生成Spring AI通过JsonSchemaGenerator为工具输入参数生成JSON Schema供模型理解调用方式。自定义支持可通过ToolParam、SwaggerSchema、Jackson注解配置参数描述、必需性默认所有参数必需Nullable可设为可选。三、工具的配置与使用配置载体ChatClient通过tools()运行时工具或defaultTools()默认工具跨实例共享传入工具实例/名称。ChatModel通过ToolCallingChatOptions的toolCallbacks()运行时工具或defaultOptions()默认工具跨请求共享配置。优先级运行时工具完全覆盖默认工具。快速入门示例信息检索工具DateTimeTools类的getCurrentDateTime方法获取用户时区当前时间通过ChatClient.tools()传入模型可回答“明天是哪天”。执行操作工具DateTimeTools类的setAlarm方法ISO-8601格式时间参数结合当前时间工具可实现“10分钟后设置闹钟”。四、核心组件与关键机制核心接口ToolCallback工具定义与执行核心接口含getToolDefinition工具名称/描述/输入Schema、getToolMetadata、call执行逻辑方法。ToolCallingManager管理工具执行完整生命周期负责解析工具定义、执行工具调用默认实现为DefaultToolCallingManager。ToolDefinition定义工具名称、描述、输入Schema支持从方法/函数自动生成或手动构建。关键能力扩展结果转换通过ToolCallResultConverter将工具结果序列化为字符串默认Jackson转JSON支持自定义实现。ToolContext传递额外上下文数据如tenantId不发送给模型仅工具执行时使用。直接返回returnDirect工具结果可直接返回调用方true或传回模型false默认多工具调用需全部设为true才生效。五、工具执行与异常处理两种执行模式框架控制执行默认ChatModel通过ToolCallingManager自动拦截工具调用请求执行后返回结果给模型全程透明。用户控制执行设置ToolCallingChatOptions的internalToolExecutionEnabledfalse需手动检查ChatResponse中的工具调用通过ToolCallingManager执行并维护会话历史。异常处理异常类型工具调用失败抛出ToolExecutionException。处理机制ToolExecutionExceptionProcessor将异常转为模型可处理的字符串默认或抛出给调用方可通过spring.ai.tools.throw-exception-on-error配置默认false。六、约束与可观测性不支持的类型方法工具Optional、异步类型CompletableFuture、响应式类型Mono/Flux、函数式类型。函数工具基本类型、Optional、集合类型、异步/响应式类型。可观测性日志org.springframework.ai包DEBUG级别日志记录工具调用关键操作。追踪通过spring.ai.tool观测项记录执行时间、传播追踪信息工具参数/结果可导出为span属性默认禁用。七、工具解析核心接口ToolCallbackResolver负责运行时将工具名称解析为ToolCallback实例。默认实现DelegatingToolCallbackResolver委托SpringBeanToolCallbackResolver解析函数Bean和StaticToolCallbackResolver解析静态ToolCallback Bean。