思考工具节点
思考工具节点为 AI Agent 提供专用的思考和推理能力。与获取数据或执行操作的工具不同,思考工具不会获取新信息或更改数据库——它仅将思考内容记录到执行日志中。这为 AI Agent 提供了结构化的方式进行中间推理步骤,提升复杂多步骤任务的决策质量。
核心概念
什么是思考工具?
思考工具是一个极简但强大的推理辅助:
- 无副作用 — 不获取数据、不调用 API、不修改状态
- 结构化思考 — 为 AI 提供正式的"出声思考"渠道
- 执行透明 — 思考内容被记录,使 AI 的推理过程可追溯
- 缓存记忆 — 在多步骤任务中作为中间结论的暂存区
AI 何时使用它
用户: "对比 25 人团队使用方案 A 和方案 B 的总成本"
AI Agent 推理过程:
1. [思考工具] "方案 A: ¥15/人 × 25 = ¥375; 方案 B: ¥400 固定最多 30 人"
2. [HTTP 工具] 查询方案 A 当前折扣
3. [思考工具] "方案 A 打 9 折 = ¥337.50。方案 B = ¥400。方案 A 更便宜。"
4. → "方案 A 每月 ¥337.50,方案 B 每月 ¥400。方案 A 更便宜。"使用场景
典型应用
- 复杂计算 — 在回答前拆解多步骤数学运算
- 选项对比 — 权衡多个方案的优缺点
- 行动规划 — 在执行一系列工具调用前列出步骤
- 中间总结 — 在长时间研究过程中记录阶段性发现
- 决策记录 — 记录工具选择背后的推理
- 记忆辅助 — 存储临时结论供后续步骤参考
Tool 与 Action 版本对比
思考工具仅作为 Tool 节点存在——没有对应的 Action 节点,因为其设计目的就是在工具调用上下文中支持 AI Agent 推理。
| 特性 | 思考工具 |
|---|---|
| 数据访问 | 无 — 不获取外部数据 |
| 副作用 | 无 — 不更改任何状态 |
| 参数 | 单一 thought 字符串参数 |
| 输出 | 原样返回思考内容 |
| 执行日志 | 思考内容追加到日志,可追溯 |
节点配置
基础设置
工具调用名称 (toolName)
AI Agent 用于调用此工具的唯一标识符。
字段属性:
- 必填字段
- 同一工作流内必须唯一
- 不支持表达式
- 格式要求:
- 只能包含字母、数字和下划线
- 必须以字母开头
- 不能与工作流中其他工具节点的调用名称重复
- 重复名称会在 UI 中标红显示错误
默认值:THINK_TOOL
配置示例:
// 1. 默认名称
toolName: "THINK_TOOL"
// 2. 按用途命名
toolName: "reasoning_scratchpad"
// 3. 注册多个思考工具用于不同目的
toolName: "planning_think"
toolName: "calculation_think"
toolName: "comparison_think"命名建议:
- 通用场景使用默认的
THINK_TOOL - 如需注册多个思考工具,使用按用途命名的名称:
math_reasoning、decision_log - 保持名称简洁且具有描述性
工具描述 (toolDescription)
描述 AI Agent 应何时以及如何使用此思考工具。
字段属性:
- 必填字段
- 支持表达式
- 支持多行文本
- 有合理的预填默认值
默认值:
使用此工具来思考某些事情。它不会获取新信息或更改数据库,只是将思考内容追加到日志中。当需要复杂推理或某些缓存记忆时使用它。自定义示例:
// 1. 默认值(大多数情况推荐)
toolDescription: "使用此工具来思考某些事情。它不会获取新信息或更改数据库,只是将思考内容追加到日志中。当需要复杂推理或某些缓存记忆时使用它。"
// 2. 数学计算导向
toolDescription: "使用此工具逐步完成数学计算。记录中间结果并在最终确定前验证。当用户要求计算、对比或数值分析时使用。"
// 3. 决策导向
toolDescription: "使用此工具在做决策前权衡选项。记录每个选项的利弊,考虑边界情况,记录最终推理过程。当需要在多个工具或回复策略间选择时使用。"
// 4. 规划导向
toolDescription: "使用此工具规划下一步行动。列出完成用户请求所需的步骤,确定需要哪些工具,注明任何假设。在开始复杂的多步骤任务前使用。"何时自定义:
- 如果你希望 AI 以特定方式使用思考工具
- 如果你有多个思考工具用于不同推理风格
- 大多数情况下默认描述就够用了
高级设置
节点描述 (nodeDescription)
为节点添加自定义描述,用于文档记录:
nodeDescription: "AI Agent 的通用推理暂存区。"工作原理
内部机制
当 AI Agent 调用思考工具时:
- AI 调用工具,传入
thought字符串参数 - 思考内容被记录到执行追踪中 — 无外部调用,无状态更改
- 思考内容返回给 AI Agent 作为工具输出
- AI 继续推理,已记录的思考内容作为可用上下文
// 内部执行(简化)
AI 调用: THINK_TOOL(thought = "方案 A 成本 375,方案 B 成本 400")
工具返回: "方案 A 成本 375,方案 B 成本 400"
AI 继续: "方案 A 便宜 ¥25。应推荐方案 A。"执行透明度
思考内容在执行日志中可见,使 AI Agent 的推理过程可审计:
[2024-01-15 14:30:01] 工具调用: THINK_TOOL
→ thought: "分析用户请求:对比配送选项"
[2024-01-15 14:30:02] 工具调用: calculate_shipping
→ items: [SKU-1, SKU-2], destination: "200120"
[2024-01-15 14:30:03] 工具调用: THINK_TOOL
→ thought: "标准: ¥5.99 (3-5天), 加急: ¥14.99 (1-2天)。用户似乎关注成本,推荐标准配送。"
[2024-01-15 14:30:04] AI 回复: "标准配送 ¥5.99..."工作流示例
示例 1:复杂计算
Chat 触发器
→ AI Agent 节点
System Prompt: "你是财务助手。使用思考工具在回答前逐步完成计算。"
User Prompt: $('Chat 触发器').message
Tools:
├─ 思考工具 (THINK_TOOL)
│ toolDescription: "使用此工具逐步完成计算。"
│
└─ 代码工具 (计算器)
toolName: "calculate"
→ Answer 节点
用户: "如果我投资 ¥50,000,年化 7%,按月复利,10 年后有多少?"
AI 执行:
1. THINK_TOOL: "公式: A = P(1 + r/n)^(nt)。P=50000, r=0.07, n=12, t=10"
2. THINK_TOOL: "r/n = 0.07/12 = 0.005833... nt = 12×10 = 120"
3. calculate: (1 + 0.07/12)^120 → 2.00966...
4. THINK_TOOL: "A = 50000 × 2.00966 = ¥100,483"
5. → "10 年后,你将拥有约 ¥100,483"示例 2:多选项对比
Chat 触发器
→ AI Agent 节点
System Prompt: "你是产品顾问。使用思考工具在推荐前对比选项。"
User Prompt: $('Chat 触发器').message
Tools:
├─ 思考工具 (THINK_TOOL)
├─ HTTP 请求工具 (产品搜索 API)
└─ HTTP 请求工具 (评价 API)
→ Answer 节点
用户: "对比 ¥2000 以内最好的 3 款降噪耳机"
AI 执行:
1. 产品搜索 → 返回 5 款型号
2. THINK_TOOL: "¥2000 以内前 3: Sony WH-1000XM4 (¥1,899), Bose QC45 (¥1,899), Sennheiser M4 (¥1,699)"
3. 评价 API → 查询 3 款评价
4. THINK_TOOL: "Sony: 降噪最强, 30h 续航。Bose: 最舒适, 24h。Sennheiser: 音质最佳, 60h 续航, 最便宜。"
5. THINK_TOOL: "推荐: Sennheiser 性价比+续航, Sony 纯粹降噪。"
6. → 详细对比含推荐示例 3:执行前规划
Chat 触发器
→ AI Agent 节点
System Prompt: "你是任务自动化 Agent。执行复杂请求前先规划。"
User Prompt: $('Chat 触发器').message
Tools:
├─ 思考工具 (THINK_TOOL)
├─ 子工作流工具 (数据管道)
├─ 子工作流工具 (报表生成器)
└─ HTTP 请求工具 (邮件 API)
→ Answer 节点
用户: "生成周度销售报表并邮件发送给市场团队"
AI 执行:
1. THINK_TOOL: "计划: (1) 通过数据管道获取销售数据, (2) 通过报表生成器生成报表, (3) 发送至 marketing@company.com"
2. 数据管道 → 返回周度销售数据
3. THINK_TOOL: "数据已收到: 1,250 笔交易, ¥894,000 总收入。传给报表生成器。"
4. 报表生成器 → 返回格式化报表
5. THINK_TOOL: "报表已生成。发送至 marketing@company.com。"
6. 邮件 API → 发送报表
7. → "周度销售报表已生成并发送给市场团队。"示例 4:调试与自我纠正
Chat 触发器
→ AI Agent 节点
System Prompt: "你是数据分析师。使用思考工具检查你的推理。"
User Prompt: $('Chat 触发器').message
Tools:
├─ 思考工具 (THINK_TOOL)
└─ 代码工具 (数据分析)
→ Answer 节点
用户: "从这个数据集来看,平均客户生命周期价值是多少?"
AI 执行:
1. 数据分析 → 返回结果
2. THINK_TOOL: "平均 CLV 为 ¥8,470。但数据集中有异常值——3 个客户消费超 ¥50 万。需要检查中位数。"
3. 数据分析 (调整后) → 返回中位数
4. THINK_TOOL: "中位数 CLV 为 ¥3,200。平均值被异常值拉高了。应同时报告但强调中位数。"
5. → "平均 CLV 为 ¥8,470,但中位数为 ¥3,200。平均值受少数高消费客户影响偏高..."最佳实践
1. 使用默认描述
对于大多数工作流,默认工具描述就很好用。它清晰地告诉 AI 何时使用该工具:
// 默认值 — 适用于通用推理场景
toolDescription: "使用此工具来思考某些事情。它不会获取新信息或更改数据库,只是将思考内容追加到日志中。当需要复杂推理或某些缓存记忆时使用它。"2. 将思考工具放在工具列表前面
如果你为 AI Agent 注册了多个工具,将思考工具列在第一位。这会鼓励 AI 先推理再行动:
AI Agent
Tools:
1. 思考工具 ← 先推理
2. HTTP 请求工具 ← 再获取数据
3. 代码工具 ← 再处理3. 在系统提示中鼓励使用
在 AI Agent 的系统提示中强化思考工具的使用:
systemPrompt: `你是一个细心且有方法论的助手。
在回答复杂问题前:
1. 使用思考工具拆分问题
2. 确定需要什么信息
3. 规划工具调用
4. 执行并验证
对于多步骤问题,不要跳过思考步骤。`4. 为不同目的使用多个思考工具
对于复杂的 Agent,注册多个带有不同描述的思考工具:
Tools:
├─ 思考工具 (规划)
│ toolDescription: "在复杂任务开始时用于规划方法。"
│
├─ 思考工具 (计算)
│ toolDescription: "用于逐步完成数学或逻辑步骤。"
│
└─ 思考工具 (决策)
toolDescription: "在做出最终推荐前用于权衡选项。"5. 利用思考日志进行调试
思考内容被记录——利用它们理解和改进你的 AI Agent 行为:
- AI 为什么选择了工具 X 而非工具 Y? → 查看思考日志中的推理
- AI 为什么给出了错误答案? → 检查推理步骤是否有缺陷
- 如何改进系统提示? → 找出 AI 思考中的模式
6. 不要过度要求思考
对于简单、直接的请求,AI 应该直接回答:
systemPrompt: `在以下情况使用思考工具:
- 任务需要 2+ 步骤
- 需要对比选项
- 不确定最佳方法
- 涉及计算
以下情况跳过思考工具:
- 简单的事实性问题("你叫什么名字?")
- 直接的、单工具查询("订单 #12345 的状态?")
- 问候和闲聊`常见问题
Q1: 思考工具会访问外部数据吗?
A:不会。思考工具完全自包含。它接收一个思考字符串并原样返回。它不调用任何 API、不查询任何数据库、不修改任何状态。其唯一目的是将 AI 的推理记录到执行日志中。
Q2: 何时使用思考工具 vs. 让 AI 内部思考?
A:AI 可以内部推理(在其思维链中),但思考工具提供:
- 透明度 — 思考内容在执行日志中可见,便于调试
- 结构化 — 强制显式的推理步骤
- 持久性 — 思考内容在执行上下文中跨工具调用保持
- 可审计性 — 你可以审查 AI 的"思考"过程
当你需要了解 AI 的推理过程时使用思考工具。
Q3: 一个工作流中能有多个思考工具吗?
A:可以。你可以注册多个思考工具节点,使用不同的工具名称和描述。当你想让 AI 为不同目的使用不同推理风格时很有用(例如规划 vs. 计算 vs. 决策)。
Q4: 使用思考工具会消耗额外的 credit 吗?
A:思考工具本身不消耗 credit(无 API 调用)。但它计入 AI Agent 的 maxIterations 限制。它还会在对话上下文中增加 token,可能略微增加后续 LLM API 调用的成本。
Q5: 思考工具的输出能否被下游节点使用?
A:思考工具的输出主要供 AI Agent 内部使用。虽然从技术上讲可以通过 $("思考工具").output 访问,但它不是为下游处理设计的。如果需要为下游节点存储数据,请使用 代码工具 或 变量赋值节点。
Q6: 思考工具与 AI 的内部推理有何不同?
A:
| 方面 | 内部推理 | 思考工具 |
|---|---|---|
| 可见性 | 隐藏(模型内部状态) | 日志中可见 |
| 持久性 | 工具调用之间可能丢失 | 保留在执行追踪中 |
| 审计追踪 | 不可用 | 完全可审计 |
| Token 成本 | 正常生成的一部分 | 额外增加一轮工具调用 |
| 调试 | 无法检查 | 完整的思考历史 |
下一步
- AI Agent 节点 — 了解主 AI Agent 节点
- 代码工具节点 — 添加自定义代码执行工具
- 子工作流工具节点 — 将子流程注册为工具
相关资源
- 使用节点 — 了解节点类型和连接方式
- AI Agent 工具节点 — 将任务委派给子 Agent
- 调试工作流 — 使用思考日志进行调试