Skip to content

思考工具节点

思考工具节点为 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

配置示例

javascript
// 1. 默认名称
toolName: "THINK_TOOL"

// 2. 按用途命名
toolName: "reasoning_scratchpad"

// 3. 注册多个思考工具用于不同目的
toolName: "planning_think"
toolName: "calculation_think"
toolName: "comparison_think"

命名建议

  • 通用场景使用默认的 THINK_TOOL
  • 如需注册多个思考工具,使用按用途命名的名称:math_reasoningdecision_log
  • 保持名称简洁且具有描述性

工具描述 (toolDescription)

描述 AI Agent 应何时以及如何使用此思考工具。

字段属性

  • 必填字段
  • 支持表达式
  • 支持多行文本
  • 有合理的预填默认值

默认值

使用此工具来思考某些事情。它不会获取新信息或更改数据库,只是将思考内容追加到日志中。当需要复杂推理或某些缓存记忆时使用它。

自定义示例

javascript
// 1. 默认值(大多数情况推荐)
toolDescription: "使用此工具来思考某些事情。它不会获取新信息或更改数据库,只是将思考内容追加到日志中。当需要复杂推理或某些缓存记忆时使用它。"

// 2. 数学计算导向
toolDescription: "使用此工具逐步完成数学计算。记录中间结果并在最终确定前验证。当用户要求计算、对比或数值分析时使用。"

// 3. 决策导向
toolDescription: "使用此工具在做决策前权衡选项。记录每个选项的利弊,考虑边界情况,记录最终推理过程。当需要在多个工具或回复策略间选择时使用。"

// 4. 规划导向
toolDescription: "使用此工具规划下一步行动。列出完成用户请求所需的步骤,确定需要哪些工具,注明任何假设。在开始复杂的多步骤任务前使用。"

何时自定义

  • 如果你希望 AI 以特定方式使用思考工具
  • 如果你有多个思考工具用于不同推理风格
  • 大多数情况下默认描述就够用了

高级设置

节点描述 (nodeDescription)

为节点添加自定义描述,用于文档记录:

yaml
nodeDescription: "AI Agent 的通用推理暂存区。"

工作原理

内部机制

当 AI Agent 调用思考工具时:

  1. AI 调用工具,传入 thought 字符串参数
  2. 思考内容被记录到执行追踪中 — 无外部调用,无状态更改
  3. 思考内容返回给 AI Agent 作为工具输出
  4. AI 继续推理,已记录的思考内容作为可用上下文
javascript
// 内部执行(简化)
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 何时使用该工具:

javascript
// 默认值 — 适用于通用推理场景
toolDescription: "使用此工具来思考某些事情。它不会获取新信息或更改数据库,只是将思考内容追加到日志中。当需要复杂推理或某些缓存记忆时使用它。"

2. 将思考工具放在工具列表前面

如果你为 AI Agent 注册了多个工具,将思考工具列在第一位。这会鼓励 AI 先推理再行动:

AI Agent
  Tools:
    1. 思考工具        ← 先推理
    2. HTTP 请求工具   ← 再获取数据
    3. 代码工具        ← 再处理

3. 在系统提示中鼓励使用

在 AI Agent 的系统提示中强化思考工具的使用:

javascript
systemPrompt: `你是一个细心且有方法论的助手。

在回答复杂问题前:
1. 使用思考工具拆分问题
2. 确定需要什么信息
3. 规划工具调用
4. 执行并验证

对于多步骤问题,不要跳过思考步骤。`

4. 为不同目的使用多个思考工具

对于复杂的 Agent,注册多个带有不同描述的思考工具:

javascript
Tools:
  ├─ 思考工具 (规划)
toolDescription: "在复杂任务开始时用于规划方法。"

  ├─ 思考工具 (计算)
toolDescription: "用于逐步完成数学或逻辑步骤。"

  └─ 思考工具 (决策)
       toolDescription: "在做出最终推荐前用于权衡选项。"

5. 利用思考日志进行调试

思考内容被记录——利用它们理解和改进你的 AI Agent 行为:

  • AI 为什么选择了工具 X 而非工具 Y? → 查看思考日志中的推理
  • AI 为什么给出了错误答案? → 检查推理步骤是否有缺陷
  • 如何改进系统提示? → 找出 AI 思考中的模式

6. 不要过度要求思考

对于简单、直接的请求,AI 应该直接回答:

javascript
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 成本正常生成的一部分额外增加一轮工具调用
调试无法检查完整的思考历史

下一步

相关资源