第 8 章 · Tool Calling 与 Tool Search

大模型Tool Calling技术:从原理到实战应用 Tool Calling(工具调用)是让大语言模型具备执行外部工具能力的核心技术。其工作原理是通过意图识别、参数提取和执行反馈三个阶段,使AI能够像程序员一样调用API。这项技术的核心价值在于突破了大模型仅能文本生成的局限,实现了与真实世界的交互。在工程实践中,Tool Calling通过标准化接口定义和流式调用机制,显著降低了开发门槛。典型应用场景包括智能客服(订单查询)、数据分析(SQL执行)和智能家居控制等。以阿里云通义千问Omni为例,其兼容OpenAI的接口设计使得集成天气查询、股票价格获取等工具 阅读详情

版本:Spring AI 2.0.1

目标:弄清工具如何声明、如何挂到 ChatClient、运行时如何循环执行,以及工具很多时怎样用 Tool Search 做渐进披露。

模型本身不能查库、发邮件、调内部接口。它能做的是:在回答里带上「请调用某某工具、参数是这些」;真正执行发生在你的 JVM 里,结果再写回对话,模型据此继续推理或给出最终文本。

这个过程可以记成:

用户问题
  → 模型返回带 toolCalls 的 AssistantMessage
  → 本地执行工具(或 MCP 等供应线)
  → ToolResponseMessage 回灌
  → 再调模型
  → … 直到纯文本回答,或触达调用上限

用 ChatClient 时,这个 while 通常藏在默认的 ToolCallingAdvisor 里。工具特别多时,循环外还可能先走一层 Tool Search:只把「元工具 + 搜到的少量工具」暴露给模型,而不是一次塞进几百个 schema。

本章顺序:为什么要工具 → 声明与挂载 → 上下文与 returnDirect → 运行时循环与上限 → Tool Search → 常见坑。


8.1 为什么需要工具

没有工具时,模型只能根据 Prompt 里已有的信息编答案。问「订单 10086 现在什么状态」,若 Prompt 里没有这笔订单,它只能猜或拒答。

挂上工具之后,分工变成:

谁做什么
模型决定要不要调工具、调哪个、参数怎么填;最后组织自然语言
应用按定义执行工具、做鉴权与审计、把结果变成模型可读的字符串

消息层的形态在第 3 章已经见过,这里再对齐一次,避免和「ChatClient 里自动循环」脱节:

注意:ToolResponseMessage 的 id 必须和对应 ToolCall.id 对齐,否则供应商侧对不上轮次。Advisor 路径一般会帮你处理好;自管循环时不要手滑丢掉 id。


8.2 你会碰到的关键类型

类型作用
@Tool / @ToolParam声明式暴露方法
ToolCallback / ToolCallbackProvider运行时回调,或懒提供一组回调
ToolDefinition / ToolMetadata名称、描述、schema、returnDirect 等元数据
ToolCallingManager真正执行本轮 toolCalls
ToolCallingAdvisorChatClient 默认工具循环
ToolSearchTool / ToolIndex / ToolSearchToolCallingAdvisor海量工具检索与渐进披露

依赖上:普通 @Tool + ChatClient,通常有 model / chat client starter 就够;Tool Search 再引入对应的 tool-search 与 advisor starter。MCP 也可以作为一条 ToolCallback 供应线,本章只把它当挂载来源,不展开传输与 Server 细节。


8.3 用 @Tool 声明工具

@Component
public class WeatherTools {
​
    @Tool(description = "查询城市当前气温,城市名用中文或英文均可")
    public String getWeather(
            @ToolParam(description = "城市名,如 北京") String city) {
        return "{\"city\":\"" + city + "\",\"tempC\":28}";
    }
}

要点:

  • name 默认用方法名;跨模型兼容时尽量只用字母数字、下划线、连字符、点(如 get_weather、search-docs)

  • description / @ToolParam 写清楚,比在 system 里「拜托记得调某某工具」有效得多

  • 必填 / 可选会影响 JSON Schema;再叠上供应商 strict 时,可选字段更容易触发 400

返回值默认会经 ToolCallResultConverter 转成模型可读字符串。自定义转换器适合脱敏、摘要、统一错误包装。原则是:给模型看的内容要短、稳、可解析,不要把堆栈、PII、二进制原样灌进去。


8.4 挂到 ChatClient:tools(...) 怎么分发

ChatClient 2.0 的统一入口是 tools(...) / defaultTools(...)。旧的 toolCallbacks(...) 已废弃。

@Configuration
class AiConfig {
​
    @Bean
    ChatClient chatClient(ChatClient.Builder builder, WeatherTools weatherTools) {
        return builder
                .defaultTools(weatherTools)
                .build();
    }
}
​
// 单次请求再挂别的工具时:
String answer = chatClient.prompt()
        .user("北京今天多少度?")
        .tools(weatherTools)   // 见下文「覆盖」语义
        .call()
        .content();

tools(Object...) 的分发规则:

  1. ToolCallback → 直接注册

  2. ToolCallbackProvider → 懒解析成一组回调

  3. 数组 / Collection → 展开后再按上面规则分发

  4. 其它对象 → 当作带 @Tool 的 POJO;若没有任何注解方法则抛异常

覆盖语义很重要:

请求级 tools(...) 会整组覆盖该次请求的 defaultTools,不是 merge。需要「默认里的 A、B,再临时加一个 C」时,把 A、B、C 完整列表一起传入。

部分 Provider Options 也能带工具相关字段。建议只选一条主路径:优先把工具挂在 ChatClient DSL 上,避免 Options 与 DSL 两边同时塞、分不清谁覆盖谁。


8.5 ToolContext:给应用看,不给模型看

chatClient.prompt()
        .user("查一下订单 10086")
        .tools(orderTools)
        .toolContext(Map.of(
                "tenantId", tenantId,
                "userId", userId))
        .call()
        .content();

工具方法可通过框架支持的方式读取上下文,例如注入 ToolContext 参数:

@Component
public class OrderTools {
​
    @Tool(description = "按订单号查询状态;租户从上下文读取,不要让用户传入租户 ID")
    public String findOrder(
            @ToolParam(description = "订单号") String orderId,
            ToolContext ctx) {
        String tenantId = String.valueOf(ctx.getContext().get("tenantId"));
        // 按 tenantId + orderId 查库,返回简短 JSON
        return "{\"orderId\":\"" + orderId + "\",\"status\":\"SHIPPED\"}";
    }
}

原则:

  • 敏感租户 / 用户身份不进模型参数 schema,放进 ToolContext

  • 进程级常量可用 defaultToolContext;每请求变化的值用请求级 toolContext

  • ToolContext 不是给模型填的字段,模型看不到这份 Map


8.6 returnDirect:要不要再回灌模型

@Tool(returnDirect = true)(或元数据里等价配置)表示:工具结果直接作为对用户的响应,不再回灌模型润色。

适合:

  • 结果已经是最终 JSON / 文件 URL

  • 延迟敏感,不需要模型改写

  • 合规要求原始结果不得经模型二次改写

默认 false 更常见:结果回灌后,由模型组织最终回答。若 returnDirect=true 又想得到 DTO,应在应用层自行解析工具返回值,而不是指望 call().entity(...) 再走一遍结构化抽取。

同一轮里多个工具都 returnDirect 时,框架会按「全部为 true 才直接返回」一类规则收敛;写业务时尽量避免一轮里混用「有的要润色、有的要直出」,排障会轻松很多。


8.7 运行时:Advisor 循环、上限与 fallback

默认路径:ToolCallingAdvisor

ChatClient 默认常会装配 ToolCallingAdvisor(旧名 ToolCallAdvisor 已废弃)。它在链里大致做:

  1. 调模型

  2. 若有 toolCalls:交给 ToolCallingManager 执行 → 得到更新后的对话历史 → 再调模型

  3. 累加 Usage(多轮 tool 通常按整次 ChatClient 调用累计)

  4. 直到无 toolCalls,或某工具 returnDirect,或触达上限

也可自定义 Manager、order,以及 eligibility checker——在「模型想调、但业务不允许」时拦一刀。

调用上限

DefaultToolCallingManager 默认有保险丝(数量以 2.0.1 默认为准,可配置):

  • 每个 tool 大约最多 40 次

  • 总计大约 150 次

  • 超限抛出 ToolCallLimitExceededException(也可配置成返回错误响应而非抛异常)

调高上限前,先检查是不是工具描述诱导模型反复重试,或参数校验失败被模型理解成「再调一次」。

解析 fallback 默认关闭

2.0.1 起,工具解析 fallback 默认关闭:通常只执行当前请求 / defaultTools 上挂的工具。若出现「容器里有 Tool Bean,模型也选了名字,但没执行」,先确认是否显式挂载,再考虑:

spring.ai.tools.resolution.fallback.enabled=true

默认改成显式挂载,是为了避免容器里躺着的危险工具被模型名一撞就执行。开启 fallback 前要清楚:解析器能看到的工具,都可能被执行。

自管循环(可选)

需要逐步审批、把中间轮次推给前端、或在两轮之间插入业务判断时,可以关掉自动 Advisor,自己驱动循环。普通业务优先用默认 Advisor;自管时不要和默认循环叠两套。

单次请求关闭自动注册:

.advisors(AdvisorParams.toolCallingAdvisorAutoRegister(false))

全局关闭可用:

spring.ai.chat.client.tool-calling.enabled=false

理解用的同步骨架(与官方文档同构;生产请按场景补错误处理与超时):

ToolCallingManager toolCallingManager = ToolCallingManager.builder().build();
ToolCallback[] tools = ToolCallbacks.from(new WeatherTools());
ChatOptions options = ToolCallingChatOptions.builder()
        .toolCallbacks(tools)
        .build();
​
Prompt prompt = new Prompt(
        List.of(new UserMessage("北京和上海今天气温?")),
        options);
​
ChatClientResponse response = chatClient.prompt()
        .messages(prompt.getInstructions())
        .options(options)
        .advisors(AdvisorParams.toolCallingAdvisorAutoRegister(false))
        .call()
        .chatClientResponse();
​
int guard = 0;
while (response.chatResponse() != null
        && response.chatResponse().hasToolCalls()
        && guard++ < 8) {
    ToolExecutionResult result =
            toolCallingManager.executeToolCalls(prompt, response.chatResponse());
    if (result.returnDirect()) {
        // 工具结果即最终响应,按业务取 conversationHistory 末尾即可
        break;
    }
    prompt = new Prompt(result.conversationHistory(), options);
    response = chatClient.prompt()
            .messages(result.conversationHistory())
            .options(options)
            .advisors(AdvisorParams.toolCallingAdvisorAutoRegister(false))
            .call()
            .chatClientResponse();
}
​
String answer = response.chatResponse().getResult().getOutput().getText();

要点:executeToolCalls 返回的是 ToolExecutionResult,下一轮 Prompt 用 result.conversationHistory(),不要自己零散拼 Assistant / Tool 消息却丢了 id。自管时记得设 maxRounds(上面的 guard),避免和 Manager 上限两套逻辑打架时不好排查。


8.8 Tool Search 与渐进披露

工具一多,每个 schema 都会进上下文:更贵、更慢,也更容易选错。Tool Search 的思路是渐进披露:

先暴露元工具 toolSearchTool(+ 少数常驻工具)
  → 模型调用搜索
  → 动态加入相关业务工具的完整定义
  → 再发起真正的业务调用

常见索引实现:

实现特点更适合
RegexToolIndex规则匹配目录可控、要确定性
LuceneToolIndex全文检索描述中等规模、关键词明确
VectorToolIndex语义检索描述口语化、同义表达多

会话里搜出来的工具会缓存;还要有 eviction 策略,避免候选工具无限堆积、把窗口再次撑爆。上图里的「回灌」在工程上主要指:工具结果回到对话、以及会话内候选集的维护,不是每次调用都自动重训索引。索引质量靠 description 与选型,目录变更时重建 Index。

和「每次请求手工 tools(subset)」相比:

  • 手工筛选:简单可控,但筛选逻辑容易散落在业务代码

  • Tool Search:目录可更大,模型自助查找,但多一轮 search,索引要维护

实践上常见组合是:先按租户 / 权限砍可见工具集,再对可见集建 Index,最后用 ToolSearchToolCallingAdvisor 渐进披露。

写 description 时要让工具「可被搜到」:说清做什么、不做什么、输入单位、失败时返回什么;避免十个工具都叫「处理订单」。

装配示意(类名与 Bean 以你引入的 starter 为准):

ToolIndex index = /* Regex / Lucene / Vector 之一,写入可见工具集 */;
​
ChatClient client = builder
        .defaultAdvisors(
                ToolSearchToolCallingAdvisor.builder()
                        .toolIndex(index)
                        // 按需:eviction、maxResults、session 键等
                        .build())
        .build();

失败时先看这几类原因:

  • 模型从不 search:system 未说明用法,或又把全量工具挂回了 default

  • 搜到了仍调错:描述撞车,或向量索引质量不够

  • 上下文仍爆:eviction / 窗口裁剪未跟上


8.9 MCP 作为工具源(挂载视角)

MCP 可以把远程或本地 Server 上的 tools 桥成 Spring AI 的 ToolCallback / ToolCallbackProvider,并可做过滤。

chatClient.prompt()
        .user(question)
        .tools(mcpToolCallbackProvider)  // 可与本地 @Tool POJO 混合
        .call()
        .content();

把 MCP 目录放进 ToolIndex,就能同时做「远程工具 + 渐进披露」;远端目录变更时重建索引即可。本章只需记住:对 ChatClient 来说,MCP 首先是一条 ToolCallback 供应线,挂法与本地工具同一套 tools(...) 语义。


8.10 常见坑

现象先看什么
模型从不调工具description 是否清楚;工具是否挂到当前请求 / defaultTools;模型是否支持 tool calling
Bean 在容器里却不执行2.0.1 fallback 默认关;是否显式 .tools(...) / defaultTools
请求级加了一个工具,默认工具全没了tools(...) 是覆盖不是 merge,把完整列表传入
调了但参数乱 / 400schema 与 strict;可选字段;参数名是否稳定
死循环或很快超限description 是否诱导重试;校验失败是否返回了可理解的错误串;是否调高了无意义的上限
returnDirect 后拿不到润色文案预期如此;要自然语言就别开 returnDirect,或应用层自己拼
租户串了是否误把 tenant 放进模型参数;ToolContext 是否每请求传入
Tool Search 从不触发是否仍挂了全量 tools;system 是否说明先 search;advisor 是否为 Search 版
自管循环消息错乱是否使用 conversationHistory();Tool 响应 id 是否与 ToolCall 对齐;是否叠了两套循环

8.11 小结

工具把「模型决定调用」和「应用负责执行」拆开。日常路径是:@Tool 声明 → defaultTools / tools 挂载 → ToolCallingAdvisor 自动循环。先把挂载、覆盖语义、ToolContext 和调用上限搞对,再考虑 returnDirect 与 Tool Search。目录一大就渐进披露,并且继续用权限裁剪可见集,而不是把整库 schema 一次性塞进 Prompt。

Kimi大模型能力开源解析:Agent工作流、Tool Calling与Memory设计 大模型Agent是当前AI工程化的核心范式,其本质是将语言模型与工具调用、记忆管理、推理编排深度耦合的技术体系。理解Agent运行时原理,关键在于掌握Tool Calling的契约化接口设计、Memory的分层持久化机制,以及Rethink思考引擎的可干预四步流程。这些能力决定了模型能否在金融研报分析、药物分子解析、法律合同审查等垂直场景中实现确定性交付。Kimi K2.6虽未开源模型权重,却系统性公开了上述Agent基础设施的设计逻辑与实操规范,为开发者提供了可验证、可集成、可审计的产业级AI落地路径。 阅读详情

相关推荐

手把手构建生产级AI Agent:Memory、Tool Calling与安全防护实战

AI Agent并非简单调用大模型API,而是融合记忆(Memory)、工具调用(Tool Calling)、流程编排(Orchestration)与安全防护(Safety Layer)的闭环系统。其核心原理在于为LLM配备可持久化状态、可执行动作和可验证输出的能力,从而突破无状态、无工具、无护栏的传统调用局限。该架构显著提升任务完成率、降低幻觉风险,并支撑金融、制造等高要求场景的稳定交付。本文聚焦Python工程实践,详解Redis内存管理、Pydantic工具契约、有限状态机编排及四层安全过滤等关键技术

weixin_33676492的博客 738

Tool Calling与Tool Search实战:从幻觉调用到混合检索的工程体系

大模型应用开发中,Tool Calling让模型能够调用外部API和函数,但工具数量膨胀后,上下文窗口限制和注意力衰减会导致选择准确率下降。Tool Search通过向量检索与关键词匹配的混合策略,动态筛选候选工具,解决工具过多时的选择难题。这套检索层与执行层分离的架构,配合参数校验、超时重试和结构化错误回传,能显著提升Agent和工作流自动化的可靠性。本文从线上事故出发,详解工具定义契约、调用协议、混合检索实现及常见问题排查,帮助开发者构建稳定的工具调用链路。

weixin_32181267的博客 237

Claude原生Tool Calling实战:构建可控电商价格监控Agent

AI Agent本质上是具备工具调用能力的自主执行单元,其核心原理在于模型对结构化JSON Schema的生成与语义解析能力。相比抽象层过厚的传统框架(如LangChain),原生Tool Calling提供参数强校验、错误精准反馈和上下文可追溯等技术价值,显著提升生产环境下的稳定性与可观测性。典型应用场景包括电商竞品价格监控、自动化数据采集与告警、跨系统任务编排等需要真实世界操作的工程任务。本文聚焦Claude 3.5的anthropic.tool_use协议,详解从Pydantic Schema定义、容

weixin_33816300的博客 408

Tool Calling 解析

Tool Calling 是大模型基于工具定义生成结构化调用指令,由 Agent Runtime 执行。模型仅负责决策“调用谁、传什么参数”,不直接执行工具。其核心是 LLM(决策者)、Tool(能力)、Runtime(执行者)的协同,形成可复用的 Agent Loop。通过结构化 Schema 约束输出,确保可靠调用。在 LangGraph 中,这一过程由 State、Node、Edge 等组件精确管理,体现为分步推理与状态流转。

军哥聊AI 262

【科研导航】【计算机视觉与图像处理】从顶刊到潜力股:跨学科(电子/电气/信息)SCI期刊投稿全景图

本文全面解析了计算机视觉与图像处理领域的SCI期刊投稿策略,涵盖从顶刊到潜力股的各类期刊特点。重点介绍了IEEE Transactions系列、Elsevier旗舰期刊以及二区优质期刊的审稿偏好和投稿技巧,特别适合电子/电气/信息交叉学科的研究者。文章还提供了三区、四区期刊的实用投稿建议,帮助科研新手快速找到适合的发表平台。

weixin_30897233的博客 81

华为BEM战略解码体系完整版(85页PPT)(文末有下载方式)

在部门层面,战略解码的核心是将公司战略逐层分解到部门,确保部门目标能够有效支撑公司战略。战略解码的关键原则包括:对公司战略和业务目标的支撑、指标选取考虑部门责任特色、对公司业务流程的支撑、战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码体系的核心目标是将公司战略逐层分解,确保战略目标能够通过可衡量的。在公司层面,战略解码的第一步是战略澄清,明确公司的使命、愿景、战略目标及。

AI_data_cloud的博客 2400

Tool / Function Calling 总结

"合肥": {"weather": "晴"},"北京": {"weather": "多云"city,{"error": "未找到该城市"}它只是一个普通 Python 函数。tools = ["description": "查询指定城市当前天气","city": {"description": "城市名称,例如合肥、北京"},},

qq_63922556的博客 336

单相PWM整流器搭建训练——(一)拓扑原理介绍

单相整流器是一种将交流电转换为直流电的设备,主要由变压器、整流元件和滤波电路组成。变压器将输入的交流电压转换为适合整流的较低电压,整流元件(如二极管)利用其单向导电性将交流电转换为脉动直流电,最后滤波电路去除脉动直流电中的纹波,输出较为平滑的直流电,从而实现交流到直流的转换,广泛应用于各类电源设备中。

DikouNass的博客 1587

王仕宇是如何使用 AI Tool Calling 的

这个模型聪不聪明?这个 AI 能用什么工具?输出文字很多任务最终还是得你自己完成。文件工具浏览器搜索ShellGit数据库图片视频支付企业 API的大模型,即使模型本身没有发生变化,它的实际价值也可能完全不同。“让 AI 给我一个答案。“怎么让 AI 把这件事情做完。Tool Calling,就是让大模型从会说话,开始真正拥有做事的能力。理解判断推理决策搜索读取执行修改查询生成操作AI Agent我认为未来真正有价值的 AI 应用,很可能并不是再做一个聊天框。

JavaPub 206

103:vue+cesium 设置球体水部分颜色为黄色

本示例在 Vue + cesium 项目中设置球体水部分颜色为黄色。这里的操作是将球体内部设置为空的,在地球内部添加一个黄色的圆球,这样水的部分就被突出出来了。直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果.

大剑师兰特的GIS世界 625

Pytorch实现EdgeCNN(基于PyTorch实现)

本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都附带有完整的代码。

优快云 精品推荐 1万+

Spring AI / Tool Calling

摘要 工具调用(Tool Calling)是AI应用中的关键模式,使模型能够与外部API或工具交互以增强能力。Spring AI提供了工具调用API,支持两种主要用途: 信息检索:从外部源(如数据库、Web服务)获取实时数据 执行操作:触发系统操作(如发送邮件、创建工作流) 工具调用流程包括:模型请求工具调用→应用执行→结果返回模型。Spring AI通过@Tool注解和ToolCallback接口简化工具定义,支持声明式和编程式方法。典型应用场景包括获取实时信息(如日期时间)或执行自动化任务(如设置闹钟)

记录 分享 成就 373

5.3-集群电源模式解析

DSU-120 DynamIQ™集群支持9种电源模式,包括正常运行(ON)、完全断电(OFF)、三种数据保持模式(FUNC_RET、FULL_RET、MEM_RET)、两种调试模拟模式(OFF_EMU、MEM_RET_EMU),以及系统恢复模式(WARM_RST、DBG_RECOV)。这些模式通过智能管理电源状态,在保持数据完整性的同时实现功耗优化,并为系统调试和故障恢复提供支持。不同模式在RAM保持、逻辑断电和调试能力方面各有侧重,满足从正常运行到深度调试等不同场景需求。

baron-周贺贺-代码改变世界ctw 117

Day18:Agent Tool系统工程化——从Tool Calling到企业级工具管理架构

简单理解:一个统一管理所有工具的地方。工具仓库TOOLS│├── searchday18│├── tools│作用:统一管理工具。Day6学习:如何让LLM调用一个工具。Day18学习:如何设计一个可以管理大量工具的Agent Tool系统。LLM↓ToolLLM↓↓↓Executor↓Registry↓这一步,是从“会调用API”走向“会设计AI Agent系统”的关键阶段。

Dave1205的博客 220

VHDL语法学习笔记:一文掌握VHDL语法

今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货。 VHDL语法学习笔记 一、VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,诞生于 1982 年。 1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言。自 IEEE 公布了 VHDL 的标准版本 IEEE-1076(简称 87 版)...

2万+

记录:解决Ubuntu20.04安装ros报错E: Unable to locate package ros-kinetic-desktop-full【亲测有效】

报错:E: Unable to locate package ros-kinetic-desktop-full.尝试好久一直都无法下载,最后得知真相的我眼泪哗哗的直流。

**My Coding Family** 6万+

Tool Calling与Tool Search实战:从函数调用到Agent工具检索全解析

大模型本质是文本生成器,其知识受训练语料限制,无法主动访问外部系统,常因信息缺失产生幻觉。函数调用(Function Calling)通过结构化协议为模型提供调用外部工具的出口,而工具检索(Tool Search)则解决工具数量庞大时模型选择准确率下降与成本攀升的问题。本文深入解析Tool Calling的完整链路,包括JSON Schema定义、模型决策、工具执行与结果回填,并清晰区分两类Tool Search:一是将网络搜索封装为工具,为Agent提供实时信息入口;二是基于语义向量的动态工具检索,在工具

weixin_30558697的博客 231

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

普通Java方法秒变大模型工具:Agents-Flex Tool Calling完整链路实战

**Agents-Flex** 是一款轻量级 Java AI Agent 开发框架,它的 **Tool Calling(函数调用)** 能力可以让任意普通 Java 方法"秒变"大模型可调用的工具——只需两个注解 `@ToolDef` 和 `@ToolParam`,模型就能理解你的方法用途、自动填参并触发执行。本文带你完整走通从"定义 Java 方法"到"模型生成 ToolCall、框架执行、结果

gitblog_00871的博客 286

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LangChain生产级AI员工:RAG+Agent+Tool Calling实战架构

LangChain作为面向复杂工作流的AI编排引擎,其核心价值在于将模糊的人类决策过程转化为可验证、可回溯、可插拔的工程化能力。RAG解决知识时效性与语义召回问题,Agent提供结构化推理协议(如ReAct),Tool Calling实现业务系统安全联动——三者协同构成AI员工的‘感知-决策-执行’闭环。技术选型需兼顾鲁棒性(如Chroma持久化+cosine距离)、可解释性(Thought链记录)与工程约束(Pydantic参数校验、HyDE查询重写)。典型应用场景包括跨系统工单查询、政策合规问答、多步骤

weixin_30443075的博客 440

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Tool Calling与Tool Search实战:从工具检索到调用链路的工程化设计

在大模型应用开发中,Function Calling与Tool Use是实现智能体与外部能力交互的核心机制。其基本原理是让模型输出结构化的调用意图,由外部系统执行并回填结果。然而当工具数量增长时,全量塞入上下文会导致模型注意力稀释、调用准确率下降。Tool Search通过向量检索与关键词检索的混合策略,按需筛选最相关的Top-K工具,显著提升调用精度。这一技术方案在智能体开发、知识助手、自动化工作流等场景中具有重要工程价值,尤其适用于需要接入大量外部API的复杂系统。

weixin_32501329的博客 142

LangChain4j全集-07-Tool Search

{name:工具名specification:给模型看的工具说明executor:真正执行工具的逻辑searchableText:用于搜索的文本的作用就是:当系统里工具很多时,先根据用户问题搜索出最相关的一小部分工具,再把这些工具提供给大模型,避免工具过多导致 token 成本高、模型选错工具、响应变慢。.build();其中用户问题 → 搜索相关工具 → 返回 ToolSpecification + ToolExecutor如果工具少,用就够了;

qq_35659915的博客 227

大模型工具调用实践:从Tool Calling到Tool Search的演进与工程落地

大模型驱动的智能体系统正在快速落地于客服、RPA、企业助手等场景,而函数调用(Function Calling)能力成为连接大模型与实际业务系统的关键桥梁。Tool Calling 本质上是大模型基于上下文生成结构化调用意图的过程,其稳定性直接决定了智能体的可靠性。然而,当工具数量从个位数增长到数十个,全量注入策略会带来 token 成本飙升、选择准确率下降等问题。Tool Search 应运而生,它借鉴检索增强生成(RAG)的思路,在调用前先通过向量召回、关键词匹配或意图分类,从工具库中筛选出最相关的候选

weixin_32830601的博客 304

面向AI Agent的Web Search API与传统搜索API有何不同?

随着LLM与Agent应用的普及,Web Search API成为模型获取实时信息的关键组件。它不同于传统搜索API面向人类浏览器的结果展示,而是为AI Agent提供结构化、低token、可引用的JSON数据。核心原理在于字段设计、去重逻辑、时效控制与引用机制,让模型能直接消费搜索结果作为上下文证据。技术价值在于降低token消耗、减少解析成本、提高答案可溯源性。应用场景包括实时新闻、技术文档、商品对比等,常与Function Calling、RAG等工程范式结合。本文围绕Keenable这类Agent专

weixin_34150830的博客 565

Easy-Vibe AI Agent 原理与实践:从 Tool Calling 到多 Agent 协作的完整技术指南

> 本文是 Datawhale easy-vibe 开源教程「AI 附录」中《AI Agent 原理与工具调用》章节的深度技术解读。文章以 [docs/de-de/appendix/8-artificial-intelligence/ai-agents.md](https://link.gitcode.com/i/283757e8a2b8e0ff7e57db65a1703e4a)(中文对照版见 [

gitblog_00355的博客 212

Qwen3.8 Max 系统提示词解析:code_interpreter / web_search / web_extractor 三大工具与 XML 化 Function Calling 协议

本文章围绕本仓库(system_prompts_leaks)中捕获的 Qwen3.8 Max 系统提示词原始文件 [Qwen/qwen3.8-max.md](https://link.gitcode.com/i/d863d353520734913be9c971ed5eaa8d) 展开。这份抓取稿虽短,却完整暴露了 Qwen 系对话模型服务端"工具面(tool surface)"的三个关键层:Ope

gitblog_00338的博客 342

Claude 工具数量上千时怎么用嵌入做动态工具发现(tool search)

给 Claude 应用配几十个工具之后,一个常见困境是:把所有工具定义塞进请求的 `tools` 参数会大量占用上下文窗口,同时增加延迟和成本,Claude 也不容易在长列表里挑对工具。claude-cookbooks 仓库的 [tool_search_with_embeddings.ipynb](https://link.gitcode.com/i/123bbe75986d9da92775258

gitblog_01189的博客 493
上一篇: 第 7 章 · AI会话中的窗口记忆与长期记忆
下一篇: 第 9 章 · Model Context Protocol(MCP)
AI深栈
博客等级 码龄14年 1粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值