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/3/30 13:44:49

Nginx之rewrite重写功能

目录 一、rewrite概述 1、rewrite功能 2、跳转场景 二、标准配置指令 1、rewrite日志记录指令 2、未初始化变量告警日志记录指令 3、rewrite 指令 3.1 正则表达式 三、rewrite模块使用实例 1.基于域名的跳转 2.基于客户端 IP 访问跳转 3.?基于旧域名跳转到新域名后…

作者头像 李华
网站建设 2026/4/4 18:47:56

arduino寻迹小车小白指南:轻松融入机器人课堂

从零开始做一辆“会思考”的小车&#xff1a;Arduino寻迹项目实战教学你有没有试过&#xff0c;写几行代码&#xff0c;就能让一个小车自己沿着黑线跑起来&#xff1f;不是遥控&#xff0c;也不是预设轨道——它真的能“看”路、“判断”方向&#xff0c;甚至在转弯时微微调整速…

作者头像 李华
网站建设 2026/4/6 2:04:47

【MiniMax】基于FastAPI + LangGraph + LLM大语言模型的通用Agent多智能体系统

基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用 文章目录 基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用 内容简介 第一部分:理论基础与技术栈概览 第1章 从大语言模型…

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

vivado2022.2安装全流程图文并茂的系统学习资料

Vivado 2022.2 安装实战全攻略&#xff1a;从零搭建高效 FPGA 开发环境 你是否曾因为 Vivado 安装失败而耽误项目进度&#xff1f;是否在下载器卡在 0% 时束手无策&#xff1f;又或者&#xff0c;好不容易装上了却提示“License Checkout Failed”&#xff1f; 别担心&#x…

作者头像 李华
网站建设 2026/4/14 17:14:17

STM32 GPIO控制有源蜂鸣器操作指南

蜂鸣器也能玩出花&#xff1f;用STM32一个GPIO口搞定报警提示音你有没有遇到过这样的场景&#xff1a;调试一块新板子&#xff0c;上电后啥反应都没有——LED不闪、屏幕不亮、串口没输出。这时候要是有个“滴”一声的启动音&#xff0c;至少能告诉你&#xff1a;芯片是活的&…

作者头像 李华
网站建设 2026/4/15 11:08:05

核谱回归(Kernel Spectral Regression)算法详解与MATLAB实现

核谱回归(Kernel Spectral Regression)算法详解与MATLAB实现 在机器学习和数据降维领域,谱回归(Spectral Regression, SR)是一种高效的子空间学习方法,它通过将传统的谱嵌入问题转化为一系列回归问题,大大降低了计算复杂度。当数据分布复杂、呈现非线性结构时,我们常常…

作者头像 李华