news 2026/4/15 13:34:24

66_Spring AI 干货笔记之工具调用(工具执行与解析)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
66_Spring AI 干货笔记之工具调用(工具执行与解析)

一、工具执行

工具执行是使用提供的输入参数调用工具并返回结果的过程。工具执行由ToolCallingManager接口处理,该接口负责管理工具执行生命周期。

publicinterfaceToolCallingManager{/** * 从模型的工具调用选项中解析工具定义。 */List<ToolDefinition>resolveToolDefinitions(ToolCallingChatOptionschatOptions);/** * 执行模型请求的工具调用。 */ToolExecutionResultexecuteToolCalls(Promptprompt,ChatResponsechatResponse);}

如果您使用任何Spring AI Spring Boot Starters,DefaultToolCallingManager是ToolCallingManager接口的自动配置实现。您可以通过提供自己的ToolCallingManager bean来自定义工具执行行为。

@BeanToolCallingManagertoolCallingManager(){returnToolCallingManager.builder().build();}

默认情况下,Spring AI在每个ChatModel实现内部透明地为您管理工具执行生命周期。但您可以选择退出此行为并自己控制工具执行。本节描述了这两种场景。

1.1 框架控制的工具执行

使用默认行为时,Spring AI将自动拦截来自模型的任何工具调用请求,调用工具并将结果返回给模型。所有这些都由每个使用ToolCallingManager的ChatModel实现透明地完成。

框架控制的工具执行生命周期

  • 当我们希望向模型提供工具时,我们在聊天请求(Prompt)中包含其定义,并调用将请求发送给AI模型的ChatModel API。

  • 当模型决定调用工具时,它会发送一个响应(ChatResponse),其中包含工具名称和根据定义的架构建模的输入参数。

  • ChatModel将工具调用请求发送给ToolCallingManager API。

  • ToolCallingManager负责识别要调用的工具并使用提供的输入参数执行它。

  • 工具调用的结果返回给ToolCallingManager。

  • ToolCallingManager将工具执行结果返回给ChatModel。

  • ChatModel将工具执行结果发送回AI模型(ToolResponseMessage)。

  • AI模型使用工具调用结果作为附加上下文生成最终响应,并通过ChatClient将其发送回调用者(ChatResponse)。

目前,与模型交换的有关工具执行的内部消息不向用户公开。如果您需要访问这些消息,则应使用用户控制的工具执行方法。

确定工具调用是否有资格执行的逻辑由ToolExecutionEligibilityPredicate接口处理。默认情况下,工具执行资格通过检查ToolCallingChatOptions的internalToolExecutionEnabled属性是否设置为true(默认值),以及ChatResponse是否包含任何工具调用来确定。

publicclassDefaultToolExecutionEligibilityPredicateimplementsToolExecutionEligibilityPredicate{@Overridepublicbooleantest(ChatOptionspromptOptions,ChatResponsechatResponse){returnToolCallingChatOptions.isInternalToolExecutionEnabled(promptOptions)&&chatResponse!=null&&chatResponse.hasToolCalls();}}

在创建ChatModel bean时,您可以提供自己的ToolExecutionEligibilityPredicate实现。

1.2 用户控制的工具执行

有些情况下,您可能希望自己控制工具执行生命周期。您可以通过将ToolCallingChatOptions的internalToolExecutionE

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 13:15:30

Nginx中$http_host、$host、$proxy_host的区别

知识巩固&#xff01; 网上看到这篇文章&#xff0c;这里转载记录一下。 简介 变量 是否显示端口 值是否存在 host 浏览器请求的ip&#xff0c;不显示端口 否 "Host:value"显示 值为a:b的时候&#xff0c;只显示a http_host 浏览器请求的ip和端口号 是 “Host:value”…

作者头像 李华
网站建设 2026/4/15 13:14:46

【2026亲测】彻底禁止Windows 10/11自动更新,让电脑暂停更新10年!

你是否厌倦了Windows系统在工作或游戏时突然弹出的“正在更新”提示&#xff1f;虽然微软推送更新是为了安全&#xff0c;但在实际体验中&#xff0c;频繁的强制重启、更新后的驱动不兼容、甚至突如其来的“蓝屏死机”&#xff0c;让无数用户头疼不已。 更让人无奈的是&#xf…

作者头像 李华
网站建设 2026/4/15 13:14:47

STM32使用HAL库实现I2C通信完整指南

STM32 HAL库I2C通信实战指南&#xff1a;从协议到代码的完整闭环你有没有遇到过这样的场景&#xff1f;明明按照例程配置了STM32的I2C&#xff0c;可HAL_I2C_Master_Transmit()就是返回HAL_ERROR&#xff1b;逻辑分析仪抓出来一看&#xff0c;SDA线卡在低电平不动——总线“挂死…

作者头像 李华
网站建设 2026/4/15 13:15:29

和谐哈希(Harmonious Hashing)编码过程详解

和谐哈希(Harmonious Hashing,简称HamH)是一种经典的无监督线性哈希方法,其核心设计在于通过主成分分析(PCA)降维后引入一个正交旋转矩阵,使最终的投影方向尽可能均衡地分布在各维度上。这种“和谐”特性能够有效避免某些比特位信息冗余或失效,从而提升二进制码的整体区…

作者头像 李华
网站建设 2026/4/15 12:20:16

奇偶校验在嵌入式系统中的作用:入门必读

奇偶校验&#xff1a;嵌入式通信中的“第一道防线”是如何工作的&#xff1f; 你有没有遇到过这样的情况&#xff1a;传感器数据突然跳变&#xff0c;串口打印出乱码&#xff0c;或者远程设备莫名其妙重启&#xff1f;在大多数情况下&#xff0c;问题的根源并不在代码逻辑&…

作者头像 李华