贵港市网站建设_网站建设公司_加载速度优化_seo优化
2026/1/11 1:17:02 网站建设 项目流程

一、工具执行

工具执行是使用提供的输入参数调用工具并返回结果的过程。工具执行由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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询