> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-add-new-agent.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 工具

> 连接外部服务和 API

<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处，请参考[英文原版](/en/use-dify/nodes/tools)。</Note>

将 [Dify 工具](/zh/use-dify/workspace/tools)作为独立节点添加到你的工作流中。

这让你的工作流能够与外部服务和 API 交互，以访问实时数据并执行操作，如网页搜索、数据库查询或内容处理。

## 添加和配置节点

1. 在画布上，点击**添加节点** > **工具**，然后从可用工具中选择一个操作。

2. 可选：如果工具需要身份认证，选择一个已有凭据或创建新凭据。

   <Info>
     要更改默认凭据，请前往**工具**或**插件**。
   </Info>

3. 完成其他必需的工具设置。

## 为工具准备输入

工具可能要求特定格式的输入，而这些格式不一定与你的上游节点输出完全匹配。你可能需要重新格式化数据、提取特定信息或组合多个节点的输出。

无需手动添加中间节点或修改上游输出，你可以**在需要的地方直接准备输入**。

有两种方式可用：

| 方式                                                                                                | 适用场景                      | 工作原理                                                                   |
| :------------------------------------------------------------------------------------------------ | :------------------------ | :--------------------------------------------------------------------- |
| **组装变量**                                                                                          | 数据在上游输出中可用，但需要格式转换、提取或组合。 | <ol><li>你描述需求。</li><li>系统自动创建一个内部**代码**节点来处理转换。</li></ol>              |
| **从 LLM 的<Tooltip tip="对话历史包含执行过程中产生的用户消息、助手消息和工具消息。可通过节点的 `context` 输出变量查看。">对话历史</Tooltip>中提取** | 数据隐藏在 LLM 的对话历史中，需要解读和提取。 | <ol><li>你描述需求。</li><li>系统自动创建一个内部 **LLM** 节点来读取该对话历史并提取所需数据。</li></ol> |

### 组装变量

<Frame caption="">
  <img src="https://mintcdn.com/dify-6c0370d8-add-new-agent/ao2U4YysjV33M8QA/images/assemble_variables.png?fit=max&auto=format&n=ao2U4YysjV33M8QA&q=85&s=dc86206311aceeb392a6bf56502fd3f7" alt="组装变量" width="2384" height="1418" data-path="images/assemble_variables.png" />
</Frame>

当数据存在于清晰、结构化的上游输出中但需要转换时使用——例如提取子字符串、组合多个输出或更改数据类型。

<Accordion title="示例：组合多个节点的输出">
  三个上游 LLM 节点各自生成了一段产品描述。下游工具需要一个包含所有描述的单一数组。

  选择**组装变量**并描述："组合 LLM1、LLM2 和 LLM3 的文本输出。"

  系统生成的代码会将输出合并为工具期望的数组格式。
</Accordion>

<Note>
  在组装变量之前，请先运行相关的上游节点以使其输出数据可用。
</Note>

1. 在任何接受变量的工具输入字段中，输入 `/` 并从下拉菜单中选择**组装变量**。

2. 用自然语言描述你的需求，AI 会生成转换数据的代码。生成的代码会自动适配输入字段期望的格式。

3. 点击**运行**测试代码。这会打开内部代码节点并使用可用的上游数据运行。

4. 检查代码节点的输出，验证是否符合预期：

   * 如果结果正确，直接退出即可。代码会自动保存和应用。

   * 如果不正确，点击代码字段中的代码生成器图标继续用 AI 优化，或直接编辑代码。

   <Frame caption="代码生成器图标">
     <img src="https://mintcdn.com/dify-6c0370d8-add-new-agent/ao2U4YysjV33M8QA/images/code_generator_icon.png?fit=max&auto=format&n=ao2U4YysjV33M8QA&q=85&s=ae9d0caa602c930c45092e6c40723c11" alt="代码生成器图标" width="1010" height="624" data-path="images/code_generator_icon.png" />
   </Frame>

<Info>
  之后如需重新打开**组装变量**界面：

  1. 点击已组装变量旁的**查看内部**。
  2. 选择内部代码节点。
  3. 点击代码生成器图标。
</Info>

### 从 LLM 的对话历史中提取

<Frame caption="">
  <img src="https://mintcdn.com/dify-6c0370d8-add-new-agent/4xSf8KIlOPU8MjLk/images/extract_from_llm_chat_history.png?fit=max&auto=format&n=4xSf8KIlOPU8MjLk&q=85&s=ade6a58516abf8bb0c744a660881ad80" alt="从 LLM 的对话历史中提取" width="1022" height="774" data-path="images/extract_from_llm_chat_history.png" />
</Frame>

当你需要的信息隐藏在 LLM 的对话历史（即执行过程中产生的用户、助手和工具消息）中时使用。你可以通过 LLM 的 `context` 输出变量查看其对话历史。

<Accordion title="示例：从混合输出中提取代码">
  上游 LLM 节点生成了代码，但其输出包含自然语言的解释和注释。下游的代码解释器工具需要纯净的、可执行的代码。

  无需修改上游 LLM 让它只输出代码，而是在代码解释器的输入字段中输入 `/` 并选择该 LLM 节点，然后描述："仅提取可执行的代码。"

  系统将创建一个内部 LLM 节点，自动添加所选 LLM 节点的对话历史，并以代码解释器期望的格式提取代码。
</Accordion>

<Note>
  在从对话历史中提取之前，请先运行相关的上游 Agent 或 LLM 节点以使其 `context` 数据可用。
</Note>

1. 在任何接受变量的输入字段中，输入 `/` 并选择一个上游 Agent 或 LLM 节点。

2. 描述你想从其对话历史中提取的内容。

3. 点击**查看内部**并测试运行内部 LLM 节点。

   该节点自动导入上游节点的对话历史，并使用结构化输出来匹配所需格式。

4. 检查输出并根据需要优化。
