mirror of
https://github.com/langgenius/dify-docs.git
synced 2026-03-27 13:28:32 +07:00
Add ai-translated zh docs
This commit is contained in:
@@ -54,11 +54,11 @@
|
||||
"en/use-dify/nodes/trigger/webhook-trigger"
|
||||
]
|
||||
},
|
||||
"en/use-dify/nodes/agent",
|
||||
"en/use-dify/nodes/llm",
|
||||
"en/use-dify/nodes/knowledge-retrieval",
|
||||
"en/use-dify/nodes/answer",
|
||||
"en/use-dify/nodes/output",
|
||||
"en/use-dify/nodes/agent",
|
||||
"en/use-dify/nodes/question-classifier",
|
||||
"en/use-dify/nodes/ifelse",
|
||||
"en/use-dify/nodes/human-input",
|
||||
@@ -447,11 +447,11 @@
|
||||
"zh/use-dify/nodes/trigger/webhook-trigger"
|
||||
]
|
||||
},
|
||||
"zh/use-dify/nodes/agent",
|
||||
"zh/use-dify/nodes/llm",
|
||||
"zh/use-dify/nodes/knowledge-retrieval",
|
||||
"zh/use-dify/nodes/answer",
|
||||
"zh/use-dify/nodes/output",
|
||||
"zh/use-dify/nodes/agent",
|
||||
"zh/use-dify/nodes/question-classifier",
|
||||
"zh/use-dify/nodes/ifelse",
|
||||
"zh/use-dify/nodes/human-input",
|
||||
@@ -607,6 +607,7 @@
|
||||
"zh/use-dify/workspace/readme",
|
||||
"zh/use-dify/workspace/model-providers",
|
||||
"zh/use-dify/workspace/plugins",
|
||||
"zh/use-dify/workspace/tools",
|
||||
"zh/use-dify/workspace/app-management",
|
||||
"zh/use-dify/workspace/team-members-management",
|
||||
"zh/use-dify/workspace/personal-account-management",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Classifier"
|
||||
title: "Question Classifier"
|
||||
description: "Intelligently categorize user input to route workflow paths"
|
||||
icon: "sitemap"
|
||||
---
|
||||
|
||||
@@ -22,7 +22,7 @@ All your tools can be managed on the **Tools** page.
|
||||
<Tabs>
|
||||
<Tab title="Plugin Tool">
|
||||
|
||||
[Plugin tools](/en/use-dify/workspace/plugins) are ready-to-use integrations provided by Dify and the community for common utilities and popular third-party services.
|
||||
[Plugin](/en/use-dify/workspace/plugins) tools are ready-to-use integrations provided by Dify and the community for common utilities and popular third-party services.
|
||||
|
||||
In addition to built-in plugin tools (like CurrentTime) available out of the box, you can explore and install more from [Dify Marketplace](https://marketplace.dify.ai/).
|
||||
|
||||
|
||||
21
zh/use-dify/build/collaboration.mdx
Normal file
21
zh/use-dify/build/collaboration.mdx
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: 与工作区成员协作
|
||||
sidebarTitle: 协作
|
||||
description: 实时协作构建工作流
|
||||
icon: "users"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/build/collaboration)。</Note>
|
||||
|
||||
拥有编辑权限及以上的工作区成员可以同时编辑同一个工作流。右键点击画布并选择**添加评论**来分享想法。
|
||||
|
||||
要更快地添加多条评论,按 `C` 键进入评论模式。如果你在评论中 `@` 提及其他人,他们将收到邮件通知。
|
||||
|
||||
<Info>
|
||||
对于自托管部署,协作功能默认关闭。要启用它,请设置以下环境变量:
|
||||
|
||||
- `ENABLE_COLLABORATION_MODE` = `true`
|
||||
- `SERVER_WORKER_CLASS` = `geventwebsocket.gunicorn.workers.GeventWebSocketWorker`
|
||||
|
||||
使用自定义域名部署时,还需将 `NEXT_PUBLIC_SOCKET_URL` 设置为你的 WebSocket 服务器 URL。
|
||||
</Info>
|
||||
108
zh/use-dify/build/file-system.mdx
Normal file
108
zh/use-dify/build/file-system.mdx
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: 文件系统
|
||||
icon: "folder-tree"
|
||||
keyword: skills, skill
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/build/file-system)。</Note>
|
||||
|
||||
每个使用[沙盒运行时](/zh/use-dify/build/runtime#沙盒运行时)的应用都有一个文件系统,LLM 可以在其中按需读取、写入和处理文件。
|
||||
|
||||
文件系统包含两类文件:
|
||||
|
||||
- **资源**:你提供的持久文件,例如技能(Skill)。
|
||||
|
||||
- **产物**:LLM 在每次运行期间生成的临时文件。
|
||||
|
||||
<Frame caption=""><img src="/images/workflow_file_system.png" alt="文件系统"/></Frame>
|
||||
|
||||
## 资源
|
||||
|
||||
资源是你为工作流创建或导入的文件。LLM 可以读取但不能修改它们。资源在多次运行之间持久保存,并在导出应用时一起包含。
|
||||
|
||||
### 技能(Skill)
|
||||
|
||||
[技能(Skill)](https://agentskills.io/home)将指令、知识、脚本和其他参考资料打包用于特定任务——定义一次,跨工作流复用。
|
||||
|
||||
例如,你无需每次都重复风格指南并上传品牌素材来让 LLM 生成营销文案,只需创建一个 `marketing-copy` Skill 并将所有内容包含在内,在需要时直接引用即可。
|
||||
|
||||
#### 创建或导入 Skill
|
||||
|
||||
你可以导入已有的 Skill、使用我们提供的 Skill 模板,或直接在文件系统中创建自定义 Skill。
|
||||
|
||||
每个 Skill 都需要一个 `SKILL.md` 文件,定义任务内容、使用时机以及执行步骤。
|
||||
|
||||
在 `SKILL.md` 中,你可以引用任何可用的资源——脚本、模板、上下文材料或 [Dify 工具](/zh/use-dify/workspace/tools)——并指定使用的时机和方式。
|
||||
|
||||
<Frame caption=""><img src="/images/workflow_skill.png" alt="Skill"/></Frame>
|
||||
|
||||
#### 在提示词中引用 Skill
|
||||
|
||||
在提示词编辑器中输入 `/`,然后从**文件**选项卡中选择一个 Skill 文件夹。
|
||||
|
||||
LLM 会先读取 Skill 的 frontmatter(名称、描述和元数据),仅在需要时才加载完整内容。这节省了 Token 并提高了效率,尤其是在使用多个 Skill 时。
|
||||
|
||||
## 产物
|
||||
|
||||
产物是 LLM 在执行过程中生成的文件——报告、图片或其他任何输出。LLM 对产物拥有完整的读写权限。
|
||||
|
||||
你可以在 **Skills** 选项卡或画布底部的**变量检查**面板中预览和下载产物。
|
||||
|
||||
### 产物生命周期
|
||||
|
||||
产物在测试和生产环境中具有不同的生命周期。导出应用时不包含产物。
|
||||
|
||||
<Tabs>
|
||||
<Tab title="测试运行 / 预览">
|
||||
产物在多次测试运行之间持久保存。要清除它们,请点击**变量检查**面板中的**全部重置**。
|
||||
</Tab>
|
||||
<Tab title="生产环境">
|
||||
产物的范围限定在每次运行中,运行完成后自动清除。
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<Info>
|
||||
你可能还会在**产物**下看到 `.bashrc` 和 `.profile` 等系统文件。这些是沙盒环境的一部分,在多次运行之间持久保存。
|
||||
</Info>
|
||||
|
||||
### 向终端用户输出产物
|
||||
|
||||
产物存储在沙盒环境中,无法直接暴露给终端用户。要输出产物,你需要通过另一个 Agent 节点来提取:
|
||||
|
||||
1. 在生成文件的节点下游添加一个 Agent 节点。
|
||||
|
||||
2. 关闭 **Agent 模式**并启用**结构化输出**。
|
||||
|
||||
3. 添加一个文件类型的结构化输出变量。
|
||||
|
||||
4. 通过**添加对话历史**导入上游 Agent 的对话历史。这让 LLM 可以定位文件路径。
|
||||
|
||||
5. 在用户消息中,指示模型提取并输出文件(例如"输出生成的 PDF 文件")。
|
||||
|
||||
6. 在回答节点或输出节点中,引用 Agent 节点的文件输出变量。
|
||||
|
||||
## 支持的文件类型和操作
|
||||
|
||||
文件系统中的所有文件都可以下载。部分文件还可以预览或编辑。
|
||||
|
||||
<Tabs>
|
||||
<Tab title="可编辑">
|
||||
<Info>
|
||||
只有资源可以编辑。
|
||||
</Info>
|
||||
- **文本**: TXT, MD, MDX, HTML, HTM, XML, CSV
|
||||
- **代码**: Python, JavaScript, JSON, YAML 以及所有 [Monaco Editor](https://microsoft.github.io/monaco-editor/) 支持的语言
|
||||
- **配置**: PROPERTIES, VTT
|
||||
</Tab>
|
||||
<Tab title="仅预览">
|
||||
- **文档**: PDF, DOCX, DOC, XLSX, XLS, PPTX, PPT, EPUB
|
||||
- **图片**: JPG, JPEG, PNG, GIF, WEBP, SVG
|
||||
- **数据**: CSV, TSV, SQLite (.sqlite, .db) - 仅表格预览
|
||||
- **邮件**: EML, MSG
|
||||
</Tab>
|
||||
<Tab title="仅下载">
|
||||
- **音频**: MP3, M4A, WAV, WEBM, AMR
|
||||
- **视频**: MP4, MOV, MPEG, MPGA
|
||||
- **其他**: 自定义文件扩展名
|
||||
</Tab>
|
||||
</Tabs>
|
||||
72
zh/use-dify/build/runtime.mdx
Normal file
72
zh/use-dify/build/runtime.mdx
Normal file
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: 运行时
|
||||
icon: "cube"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/build/runtime)。</Note>
|
||||
|
||||
运行时是工作流运行的执行环境,它设定了 LLM 可以访问和执行的边界。
|
||||
|
||||
Dify 提供两种运行时环境:**沙盒运行时**和**经典运行时**,各自针对不同的使用场景进行了优化。
|
||||
|
||||
## 概览
|
||||
|
||||
<Tabs>
|
||||
<Tab title="沙盒运行时">
|
||||
<Check>
|
||||
**适用场景:** 需要 LLM 自主解决问题的复杂任务。功能更强大,但速度更慢、Token 消耗更高。
|
||||
</Check>
|
||||
|
||||
沙盒运行时使 LLM 能够在隔离环境中**执行命令**。你能在终端中用命令完成的任何操作,它们都能做到:
|
||||
|
||||
- **运行脚本和程序** - 执行代码来处理数据、生成输出或执行任意计算
|
||||
|
||||
- **按需安装所需工具** - 使用 pip 或其他包管理器按需下载库和工具
|
||||
|
||||
- **访问外部资源** - 从 URL 获取文件、克隆仓库或从外部来源检索数据
|
||||
|
||||
- **处理文件** - 访问[文件系统](/zh/use-dify/build/file-system)中的资源(如[技能(Skill)](/zh/use-dify/build/file-system#技能skill)),跨格式处理文件,并使用脚本和已安装工具生成多模态产物
|
||||
|
||||
<Tip>
|
||||
在沙盒运行时中,Agent 节点同时承担了 LLM 和 Agent 的角色。
|
||||
|
||||
对于不需要这些高级功能的简单快速任务,可以关闭 **[Agent 模式](/zh/use-dify/nodes/agent#启用命令执行agent-模式)** 来获得更快的响应和更低的 Token 成本。
|
||||
</Tip>
|
||||
|
||||
**LLM 成为真正的 Agent**。只要模型具有强大的工具调用和推理能力,它就能自主决定运行什么命令并执行它们来完成任务。
|
||||
|
||||
LLM 的能力越强,就越需要在沙盒中运行。隔离环境在赋予它们足够自由度的同时,确保了安全运行。
|
||||
|
||||
<Info>
|
||||
默认沙盒提供商:
|
||||
|
||||
- Dify Cloud 使用 E2B。
|
||||
|
||||
- 自托管部署使用 SSH VM。
|
||||
|
||||
在**设置** > **沙盒提供商**中选择和配置其他提供商。
|
||||
</Info>
|
||||
|
||||
</Tab>
|
||||
<Tab title="经典运行时">
|
||||
|
||||
<Check>
|
||||
**适用场景:** 简单快速的任务。功能较少,但速度更快、效率更高。
|
||||
</Check>
|
||||
|
||||
在经典运行时中,LLM 做它们最擅长的事:分析信息、生成文本、推理问题,并智能地使用预配置的工具来完成任务。
|
||||
|
||||
可以把它想象成给某人一套特定的工具包——他们很有能力,但**仅限于你提供的工具范围**。
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 快速对比
|
||||
|
||||
| 维度 | 沙盒运行时 | 经典运行时 |
|
||||
|:------------------------------|:-------------------------------------|:------------------------------------|
|
||||
| **适用场景** | 复杂的自主问题解决 | 简单、明确的任务 |
|
||||
| **LLM 自主性** | 运行所需的任何命令 | 使用你配置的工具 |
|
||||
| **文件系统** | ✅ | ❌ |
|
||||
| **技能(Skill)** | ✅ | ❌ |
|
||||
| **应用导出格式** | `.zip`(DSL + 资源文件) | `.yml`(DSL 文件) |
|
||||
@@ -1,117 +1,383 @@
|
||||
---
|
||||
title: "智能代理"
|
||||
title: "Agent"
|
||||
description: "赋予 LLM 自主控制工具的能力,以执行复杂任务"
|
||||
icon: "robot"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/agent)。</Note>
|
||||
|
||||
|
||||
智能代理节点让你的大型语言模型自主控制工具,使其能够迭代决定使用哪些工具以及何时使用它们。智能代理不是预先规划每一步,而是动态地推理问题,根据需要调用工具来完成复杂任务。
|
||||
|
||||
<Frame caption="智能代理节点配置界面">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/1f4d803ff68394d507abd3bcc13ba0f3.png" alt="Agent node interface" />
|
||||
</Frame>
|
||||
|
||||
## 智能代理策略
|
||||
|
||||
智能代理策略定义了你的智能代理如何思考和行动。选择最适合你的模型能力和任务需求的方法。
|
||||
|
||||
<Frame caption="可用的智能代理策略选项">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/f14082c44462ac03955e41d66ffd4cca.png" alt="Agent strategies selection" />
|
||||
</Frame>
|
||||
|
||||
<Tabs>
|
||||
<Tab title="函数调用">
|
||||
使用大型语言模型的原生函数调用能力,通过工具参数直接传递工具定义。大型语言模型使用其内置机制决定何时以及如何调用工具。
|
||||
|
||||
最适合像 GPT-4、Claude 3.5 和其他具有强大函数调用支持的模型。
|
||||
<Tab title="沙盒运行时">
|
||||
|
||||
在[沙盒运行时](/zh/use-dify/build/runtime#沙盒运行时)中,Agent 节点赋予 LLM 自主执行命令的能力:调用工具、运行脚本、访问外部资源、操作[文件系统](/zh/use-dify/build/file-system)以及创建多模态输出。
|
||||
|
||||
这也带来了权衡:更长的响应时间和更高的 Token 消耗。要更快更高效地处理简单任务,可以关闭 **[Agent 模式](#启用命令执行agent-模式)** 来禁用这些功能。
|
||||
|
||||
## 选择模型
|
||||
|
||||
从你已配置的提供商中选择最适合任务的模型。
|
||||
|
||||
选择后,你可以调整模型参数来控制其生成响应的方式。可用的参数和预设因模型而异。
|
||||
|
||||
## 编写提示词
|
||||
|
||||
指导模型如何处理输入和生成响应。输入 `/` 可插入变量或文件系统中的资源,输入 `@` 可引用 [Dify 工具](/zh/use-dify/workspace/tools)。
|
||||
|
||||
如果你不确定从哪里开始或想优化现有的提示词,可以试试我们的 AI 辅助提示词生成器。
|
||||
|
||||
<Columns>
|
||||
<Frame caption="提示词生成器图标">
|
||||
<img src="/images/prompt_generator_icon.png" alt="提示词生成器图标"/>
|
||||
</Frame>
|
||||
<Frame caption="提示词生成器界面">
|
||||
<img src="/images/prompt_generator_interface.png" alt="提示词生成器界面"/>
|
||||
</Frame>
|
||||
</Columns>
|
||||
|
||||
### 指定指令和消息
|
||||
|
||||
定义系统指令并点击**添加消息**来添加用户/助手消息。它们会按顺序在单个提示词中发送给模型。
|
||||
|
||||
可以把它想象成直接与模型对话:
|
||||
|
||||
- **系统指令**设定模型响应的规则——角色、语气和行为准则。
|
||||
|
||||
- **用户消息**是你发送给模型的内容——问题、请求或要模型完成的任务。
|
||||
|
||||
- **助手消息**是模型的回复。
|
||||
|
||||
### 将输入与规则分离
|
||||
|
||||
在系统指令中定义角色和规则,然后在用户消息中传递实际的任务输入。例如:
|
||||
|
||||
|
||||
```bash wrap
|
||||
# System instruction
|
||||
You are a children's story writer. Write a story based on the user's input. Use simple language and a warm tone.
|
||||
|
||||
# User message
|
||||
Write a bedtime story about a rabbit who makes friends with a shy hedgehog.
|
||||
```
|
||||
|
||||
虽然将所有内容放在系统指令中看起来更简单,但将角色定义与任务输入分离可以为模型提供更清晰的结构。
|
||||
|
||||
### 模拟对话历史
|
||||
|
||||
你可能会想:既然助手消息是模型的回复,为什么要手动添加它们?
|
||||
|
||||
通过交替添加用户和助手消息,你可以在提示词中创建模拟的对话历史。模型会将这些视为之前的对话,这有助于引导其行为。
|
||||
|
||||
### 从上游 LLM 导入对话历史
|
||||
|
||||
点击**添加对话历史**,从上游 Agent 节点导入对话历史。这让模型了解上游发生了什么,并从该节点中断的地方继续。
|
||||
|
||||
对话历史包括**用户**消息、**助手**消息和<Tooltip tip="工具消息是模型调用工具后返回的结果。例如,bash 工具的命令执行结果。">**工具**消息</Tooltip>。你可以在 Agent 节点的 `context` 输出变量中查看。
|
||||
|
||||
<Info>
|
||||
系统指令不包含在内,因为它们是节点特定的。
|
||||
</Info>
|
||||
|
||||
这在串联多个 Agent 节点时非常有用:
|
||||
|
||||
- 不导入对话历史时,下游节点只接收上游节点的最终输出,不知道它是如何得出结论的。
|
||||
|
||||
- 导入对话历史后,它可以看到整个过程:用户问了什么、调用了哪些工具、返回了什么结果、模型是如何推理的。
|
||||
|
||||
**在自动添加的用户消息中指定你的新任务。** 导入的历史会被添加到当前节点消息的前面,因此模型将其视为一个连续的对话。由于导入的历史通常以助手消息结束,模型需要一条后续的用户消息来知道下一步该做什么。
|
||||
|
||||
<Accordion title="示例 1:处理上游 LLM 生成的文件">
|
||||
|
||||
假设两个 Agent 节点按顺序运行:Agent A 分析数据并生成图表图片,保存到沙盒的输出文件夹。Agent B 创建包含这些图表的最终报告。
|
||||
|
||||
如果 Agent B 只接收 Agent A 的最终文本输出,它知道分析结论但不知道生成了什么文件或文件存储在哪里。
|
||||
|
||||
通过导入 Agent A 的对话历史,Agent B 可以从工具消息中看到确切的文件路径,从而可以在报告中访问和嵌入这些图表。
|
||||
|
||||
以下是 Agent B 导入 Agent A 对话历史后看到的完整消息序列:
|
||||
|
||||
```bash wrap
|
||||
# Agent B's own system instruction
|
||||
1. System: "You are a report designer. Create professional reports with embedded visuals."
|
||||
|
||||
# from Agent A
|
||||
2. User: "Analyze the Q3 sales data and create visualizations."
|
||||
|
||||
# from Agent A
|
||||
3. Tool: [bash] Created bar chart: /output/q3_sales_by_region.png
|
||||
4. Tool: [bash] Created trend line: /output/q3_monthly_trend.png
|
||||
|
||||
# from Agent A
|
||||
5. Assistant: "I've analyzed the Q3 sales data and created two charts..."
|
||||
|
||||
# Agent B's own user message
|
||||
6. User: "Create a PDF report incorporating the generated charts."
|
||||
```
|
||||
|
||||
Agent B 确切地知道哪些文件存在以及它们的位置,因此可以直接将它们嵌入报告。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="示例 2:向终端用户输出产物">
|
||||
|
||||
在示例 1 的基础上,假设你想将生成的 PDF 报告交付给终端用户。由于产物无法直接暴露给终端用户,你需要第三个 Agent 节点来提取文件。
|
||||
|
||||
Agent C 配置:
|
||||
|
||||
- **Agent 模式**:已关闭
|
||||
|
||||
- **结构化输出**:已启用,包含一个文件类型的输出变量
|
||||
|
||||
- **对话历史**:从 Agent B 导入
|
||||
|
||||
- **用户消息**:"Output the generated PDF."
|
||||
|
||||
以下是 Agent C 导入 Agent B 对话历史后看到的完整消息序列:
|
||||
```bash wrap
|
||||
# Agent C's own system instruction (optional)
|
||||
1. System: (none)
|
||||
|
||||
# User and tool messages from Agent A (omitted for brevity)
|
||||
2. ...
|
||||
|
||||
# from Agent B
|
||||
3. User: "Create a PDF report incorporating the generated charts."
|
||||
|
||||
# from Agent B
|
||||
4. Tool: [bash] Created report: /output/q3_sales_report.pdf
|
||||
|
||||
# from Agent B
|
||||
5. Assistant: "I've created a PDF report with the charts embedded..."
|
||||
|
||||
# Agent C's own user message
|
||||
6. User: "Output the generated PDF."
|
||||
```
|
||||
|
||||
Agent C 从导入的对话历史中定位文件路径,并将其作为文件变量输出。然后你可以在回答节点或输出节点中引用该变量,将文件交付给终端用户。
|
||||
|
||||
</Accordion>
|
||||
|
||||
### 使用 Jinja2 创建动态提示词
|
||||
|
||||
使用 [Jinja2](https://jinja.palletsprojects.com/en/stable/) 模板在提示词中添加条件、循环和其他逻辑。例如,根据变量值定制不同的指令。
|
||||
|
||||
<Accordion title="示例:根据用户级别设置条件系统指令">
|
||||
```jinja2 wrap
|
||||
You are a
|
||||
{% if user_level == "beginner" %}patient and friendly
|
||||
{% elif user_level == "intermediate" %}professional and efficient
|
||||
{% else %}senior expert-level
|
||||
{% endif %} assistant.
|
||||
|
||||
{% if user_level == "beginner" %}
|
||||
Please explain in simple and easy-to-understand language. Provide examples when necessary. Avoid using technical jargon.
|
||||
{% elif user_level == "intermediate" %} You may use some technical terms, but provide appropriate explanations. Offer practical advice and best practices.
|
||||
{% else %} You may delve into technical details and use professional terminology. Focus on advanced use cases and optimization solutions.
|
||||
{% endif %}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
默认情况下,你需要将所有可能的指令发送给模型,描述条件,然后让模型自行决定遵循哪些——这种方法通常不可靠。
|
||||
|
||||
使用 Jinja2 模板,只有符合定义条件的指令会被发送,确保行为可预测并减少 Token 使用。
|
||||
|
||||
## 启用命令执行(Agent 模式)
|
||||
|
||||
开启 **Agent 模式**,让模型使用内置的 bash 工具在沙盒运行时中执行命令。
|
||||
|
||||
这是所有高级功能的基础:当模型调用其他 Dify 工具、执行文件操作、运行脚本或访问外部资源时,它都是通过调用 bash 工具来执行底层命令。
|
||||
|
||||
对于不需要这些功能的简单快速任务,可以关闭 **Agent 模式** 以获得更快的响应和更低的 Token 成本。
|
||||
|
||||
**调整最大迭代次数**
|
||||
|
||||
**高级设置**中的**最大迭代次数**限制了模型对单次请求可以重复其推理-行动循环(思考、调用工具、处理结果)的次数。
|
||||
|
||||
对于需要多次工具调用的复杂多步任务,增加此值。较高的值会增加延迟和 Token 成本。
|
||||
|
||||
## 启用对话记忆(仅对话流)
|
||||
|
||||
<Note>
|
||||
记忆是节点特定的,不会在不同对话之间持久保存。
|
||||
</Note>
|
||||
|
||||
启用**记忆**以保留最近的对话,使 LLM 能够连贯地回答后续问题。
|
||||
|
||||
会自动添加一条用户消息来传递当前用户查询和任何上传的文件。这是因为记忆通过存储最近的用户-助手交互来工作。如果用户查询没有通过用户消息传递,用户侧将没有内容可记录。
|
||||
|
||||
**窗口大小**控制保留多少条最近的交互。例如,`5` 保留最近 5 轮用户查询和 LLM 响应。
|
||||
|
||||
## 添加上下文
|
||||
|
||||
在**高级设置** > **上下文**中,为 LLM 提供额外的参考信息以减少幻觉并提高响应准确性。
|
||||
|
||||
典型模式:从知识检索节点[传递检索结果](/zh/use-dify/nodes/knowledge-retrieval#与-llm-节点搭配使用),实现检索增强生成(RAG)。
|
||||
|
||||
## 处理多模态输入
|
||||
|
||||
要让支持多模态的模型处理图片、音频、视频或文档,可选择以下任一方式:
|
||||
|
||||
- 在提示词中直接引用文件变量。
|
||||
|
||||
- 在**高级设置**中启用 **Vision** 并在那里选择文件变量。
|
||||
|
||||
**分辨率**仅控制图片处理的细节级别:
|
||||
|
||||
- **高**:对复杂图片更准确,但消耗更多 Token
|
||||
|
||||
- **低**:对简单图片处理更快,消耗更少 Token
|
||||
|
||||
对于不具备相关多模态能力的模型,使用**[上传文件至沙盒](/zh/use-dify/nodes/upload-file-to-sandbox)**节点将文件上传到沙盒。Agent 节点随后可以执行命令来安装工具和运行脚本处理这些文件——即使是模型原生不支持的文件类型。
|
||||
|
||||
## 将思考过程和工具调用与响应分离
|
||||
|
||||
要获得不包含模型思考过程和工具调用的干净响应,请使用 `generations.content` 输出变量。
|
||||
|
||||
`generations` 变量本身包含所有中间步骤和最终响应。
|
||||
|
||||
## 强制结构化输出
|
||||
|
||||
在指令中描述输出格式可能产生不一致的结果。要获得更可靠的格式化,启用结构化输出以强制执行定义好的 JSON schema。
|
||||
|
||||
<Info>
|
||||
对于不支持原生 JSON 的模型,Dify 会将 schema 包含在提示词中,但不保证严格遵循。
|
||||
</Info>
|
||||
|
||||
<Frame caption=""><img src="/images/structured_output.png" alt="结构化输出"/></Frame>
|
||||
|
||||
1. 在**输出变量**旁,开启**结构化**开关。一个 `structured_output` 变量将出现在输出变量列表末尾。
|
||||
|
||||
2. 点击**配置**,使用以下方法之一定义输出 schema。
|
||||
|
||||
- **可视化编辑器**:使用无代码界面定义简单结构。对应的 JSON schema 会自动生成。
|
||||
|
||||
- **JSON Schema**:直接编写 schema,适用于包含嵌套对象、数组或验证规则的复杂结构。
|
||||
|
||||
- **AI 生成**:用自然语言描述需求,让 AI 生成 schema。
|
||||
|
||||
- **JSON 导入**:粘贴一个现有的 JSON 对象,自动生成对应的 schema。
|
||||
|
||||
<Tip>
|
||||
使用文件类型的结构化输出变量从沙盒中提取产物,使其可供终端用户使用。详见[向终端用户输出产物](/zh/use-dify/build/file-system#向终端用户输出产物)。
|
||||
</Tip>
|
||||
|
||||
## 错误处理
|
||||
|
||||
为临时问题(如网络波动)配置自动重试,并设置备用错误处理策略以在错误持续时保持工作流运行。
|
||||
|
||||
<Frame caption=""><img src="/images/node_handle_errors.png" alt="错误处理"/></Frame>
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="推理与行动 (ReAct)">
|
||||
使用结构化提示词来引导大型语言模型通过明确的推理步骤。遵循**思维 → 行动 → 观察**循环进行透明的决策制定。
|
||||
|
||||
适用于可能没有原生函数调用能力的模型,或者当你需要明确推理轨迹时。
|
||||
<Tab title="经典运行时">
|
||||
|
||||
在经典运行时中,Agent 节点赋予 LLM 对工具的自主控制能力,使其能够迭代决定使用哪些工具以及何时使用。Agent 不是预先规划每一步,而是动态推理问题,根据需要调用工具来完成复杂任务。
|
||||
|
||||
<Frame caption="Agent 节点配置界面">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/1f4d803ff68394d507abd3bcc13ba0f3.png" alt="Agent node interface" />
|
||||
</Frame>
|
||||
|
||||
## Agent 策略
|
||||
|
||||
Agent 策略定义了 Agent 如何思考和行动。选择最适合你的模型能力和任务需求的方法。
|
||||
|
||||
<Frame caption="可用的 Agent 策略选项">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/f14082c44462ac03955e41d66ffd4cca.png" alt="Agent strategies selection" />
|
||||
</Frame>
|
||||
|
||||
<Tabs>
|
||||
<Tab title="函数调用(Function Calling)">
|
||||
使用 LLM 的原生函数调用能力,通过 tools 参数直接传递工具定义。LLM 使用其内置机制决定何时以及如何调用工具。
|
||||
|
||||
最适合 GPT-4、Claude 3.5 等具有强大函数调用支持的模型。
|
||||
</Tab>
|
||||
|
||||
<Tab title="ReAct(推理 + 行动)">
|
||||
使用结构化提示词引导 LLM 通过明确的推理步骤。遵循**思考 → 行动 → 观察**循环进行透明的决策。
|
||||
|
||||
适用于可能没有原生函数调用能力的模型,或者当你需要明确的推理轨迹时。
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<Info>
|
||||
从**市场 → Agent 策略**安装其他策略,或向[社区仓库](https://github.com/langgenius/dify-plugins)贡献自定义策略。
|
||||
</Info>
|
||||
|
||||
<Frame caption="函数调用策略配置">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/10505cd7c6f0b3ba10161abb88d9e36b.png" alt="Function calling setup" />
|
||||
</Frame>
|
||||
|
||||
## 配置
|
||||
|
||||
### 模型选择
|
||||
|
||||
选择支持你所选 Agent 策略的 LLM。更强大的模型能更好地处理复杂推理,但每次迭代成本更高。如果使用函数调用策略,请确保你的模型支持函数调用。
|
||||
|
||||
### 工具配置
|
||||
|
||||
配置 Agent 可以访问的工具。每个工具需要:
|
||||
|
||||
**授权** - 在工作区中配置的外部服务的 API 密钥和凭据
|
||||
|
||||
**描述** - 清楚说明工具的作用以及何时使用(这指导 Agent 的决策)
|
||||
|
||||
**参数** - 工具接受的必需和可选输入,带有适当的验证
|
||||
|
||||
### 指令和上下文
|
||||
|
||||
使用自然语言指令定义 Agent 的角色、目标和上下文。使用 Jinja2 语法引用上游工作流节点的变量。
|
||||
|
||||
**查询**指定 Agent 应处理的用户输入或任务。这可以是来自先前工作流节点的动态内容。
|
||||
|
||||
<Frame caption="Agent 配置参数">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/54c8e4f0eaa7379bd8c1b5ac6305b326.png" alt="Agent configuration interface" />
|
||||
</Frame>
|
||||
|
||||
### 执行控制
|
||||
|
||||
**最大迭代次数**设置安全限制以防止无限循环。根据任务复杂性进行配置——简单任务需要 3-5 次迭代,而复杂研究可能需要 10-15 次。
|
||||
|
||||
**记忆**控制 Agent 使用 TokenBufferMemory 记住多少条先前消息。更大的记忆窗口提供更多上下文,但会增加 Token 成本。这使得对话连续性成为可能,用户可以引用之前的操作。
|
||||
|
||||
### 工具参数自动生成
|
||||
|
||||
工具可以将参数配置为**自动生成**或**手动输入**。自动生成的参数(`auto: false`)由 Agent 自动填充,而手动输入参数需要明确的值,这些值成为工具永久配置的一部分。
|
||||
|
||||
<video controls src="https://assets-docs.dify.ai/2025/04/1801b96763eb8f22f1e2158645897885.mp4" width="100%" />
|
||||
|
||||
## 输出变量
|
||||
|
||||
Agent 节点提供全面的输出,包括:
|
||||
|
||||
**最终答案** - Agent 对查询的最终响应
|
||||
|
||||
**工具输出** - 执行期间每次工具调用的结果
|
||||
|
||||
**推理轨迹** - 逐步决策过程(使用 ReAct 策略时特别详细),在 JSON 输出中可用
|
||||
|
||||
**迭代计数** - 使用的推理循环次数
|
||||
|
||||
**成功状态** - Agent 是否成功完成任务
|
||||
|
||||
**Agent 日志** - 带有元数据的结构化日志事件,用于调试和监控工具调用
|
||||
|
||||
## 用例
|
||||
|
||||
**研究与分析** - Agent 可以自主搜索多个来源,综合信息,并提供全面的答案。
|
||||
|
||||
**故障排除** - 诊断任务,Agent 需要收集信息、测试假设,并根据发现调整方法。
|
||||
|
||||
**多步数据处理** - 复杂的工作流,其中下一个操作取决于中间结果。
|
||||
|
||||
**动态 API 集成** - API 调用序列取决于无法预先确定的响应和条件的场景。
|
||||
|
||||
## 最佳实践
|
||||
|
||||
**清晰的工具描述**帮助 Agent 了解何时以及如何有效使用每个工具。
|
||||
|
||||
**适当的迭代限制**防止成本失控,同时为复杂任务提供足够的灵活性。
|
||||
|
||||
**详细的指令**提供关于 Agent 角色、目标以及任何约束或偏好的上下文。
|
||||
|
||||
**记忆管理**根据你的用例需求平衡上下文保留与 Token 效率。
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<Info>
|
||||
从**应用市场 → 智能代理策略**安装其他策略,或向[社区仓库](https://github.com/langgenius/dify-plugins)贡献自定义策略。
|
||||
</Info>
|
||||
|
||||
<Frame caption="函数调用策略配置">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/10505cd7c6f0b3ba10161abb88d9e36b.png" alt="Function calling setup" />
|
||||
</Frame>
|
||||
|
||||
## 配置
|
||||
|
||||
### 模型选择
|
||||
|
||||
选择支持你所选智能代理策略的大型语言模型。更强大的模型能更好地处理复杂推理,但每次迭代成本更高。如果使用函数调用策略,请确保你的模型支持函数调用。
|
||||
|
||||
### 工具配置
|
||||
|
||||
配置你的智能代理可以访问的工具。每个工具需要:
|
||||
|
||||
**授权** - 在工作空间中配置的外部服务的 API 密钥和凭据
|
||||
|
||||
**描述** - 清楚说明工具的作用以及何时使用它(这指导智能代理的决策制定)
|
||||
|
||||
**参数** - 工具接受的必需和可选输入,带有适当的验证
|
||||
|
||||
### 指令和上下文
|
||||
|
||||
使用自然语言指令定义智能代理的角色、目标和上下文。使用 Jinja2 语法引用上游工作流节点的变量。
|
||||
|
||||
**查询**指定智能代理应该处理的用户输入或任务。这可以是来自先前工作流节点的动态内容。
|
||||
|
||||
<Frame caption="智能代理配置参数">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/54c8e4f0eaa7379bd8c1b5ac6305b326.png" alt="Agent configuration interface" />
|
||||
</Frame>
|
||||
|
||||
### 执行控制
|
||||
|
||||
**最大迭代次数**设置安全限制以防止无限循环。根据任务复杂性进行配置 - 简单任务需要 3-5 次迭代,而复杂研究可能需要 10-15 次。
|
||||
|
||||
**记忆**控制智能代理使用 TokenBufferMemory 记提供更多上下文,但会增加标记成本。这使得对话连续性成为可能,用户可以引用以前的行动。
|
||||
|
||||
### 工具参数自动生成
|
||||
|
||||
工具可以将参数配置为**自动生成**或**手动输入**。自动生成的参数(`auto: false`)由智能代理自动填充,而手动输入参数需要明确的值,这些值成为工具永久配置的一部分。
|
||||
|
||||
<video controls src="https://assets-docs.dify.ai/2025/04/1801b96763eb8f22f1e2158645897885.mp4" width="100%" />
|
||||
|
||||
## 输出变量
|
||||
|
||||
智能代理节点提供全面的输出,包括:
|
||||
|
||||
**最终答案** - 智能代理对查询的最终响应
|
||||
|
||||
**工具输出** - 执行期间每次工具调用的结果
|
||||
|
||||
**推理轨迹** - 逐步决策过程(推理与行动策略特别详细)在 JSON 输出中可用
|
||||
|
||||
**迭代计数** - 使用的推理循环次数
|
||||
|
||||
**成功状态** - 智能代理是否成功完成任务
|
||||
|
||||
**智能代理日志** - 带有元数据的结构化日志事件,用于调试和监控工具调用
|
||||
|
||||
## 用例
|
||||
|
||||
**研究与分析** - 智能代理可以自主搜索多个来源,综合信息,并提供全面的答案。
|
||||
|
||||
**故障排除** - 诊断任务,智能代理需要收集信息、测试假设,并根据发现调整其方法。
|
||||
|
||||
**多步数据处理** - 复杂的工作流,其中下一个行动取决于中间结果。
|
||||
|
||||
**动态 API 集成** - API 调用序列取决于无法预先确定的响应和条件的场景。
|
||||
|
||||
## 最佳实践
|
||||
|
||||
**清晰的工具描述**帮助智能代理了解何时以及如何有效使用每个工具。
|
||||
|
||||
**适当的迭代限制**防止失控成本,同时为复杂任务提供足够的灵活性。
|
||||
|
||||
**详细的指令**提供关于智能代理角色、目标以及任何约束或偏好的上下文。
|
||||
|
||||
**记忆管理**根据你的用例要求平衡上下文保留与标记效率。
|
||||
|
||||
16
zh/use-dify/nodes/command.mdx
Normal file
16
zh/use-dify/nodes/command.mdx
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: 命令执行
|
||||
icon: "rectangle-terminal"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/command)。</Note>
|
||||
|
||||
<Info>
|
||||
此节点仅在使用沙盒运行时的应用中可用。
|
||||
</Info>
|
||||
|
||||
使用命令执行节点在工作流中直接执行 Shell 命令。
|
||||
|
||||
虽然 Agent 节点可以自主执行命令,但当你明确知道要运行什么命令且不需要 LLM 推理时,命令执行节点是更好的选择。它们更快且不消耗 Token。
|
||||
|
||||
命令默认在根目录运行。要使用不同的工作目录,输入一个已有路径或一个将在执行过程中由上游节点创建的路径。
|
||||
@@ -5,29 +5,25 @@ icon: "database"
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/knowledge-retrieval)。</Note>
|
||||
|
||||
## 简介
|
||||
使用知识检索节点将已有知识库集成到你的工作流中。该节点在指定知识库中检索与查询相关的信息,并将检索结果作为上下文内容输出,供下游节点(如 LLM)使用。
|
||||
|
||||
你可以通过知识检索节点将已有知识库集成到 Chatflow 或 Workflow 应用中。该节点在指定知识库中检索与查询相关的信息,并将检索结果作为上下文内容传递给下游节点(如 LLM)使用。
|
||||
以下是在对话流中使用知识检索节点的示例:
|
||||
|
||||
知识检索节点在 Chatflow 中的典型用例如下:
|
||||
1. **用户输入**节点收集用户查询。
|
||||
|
||||
1. **用户输入** 节点收集用户问题。
|
||||
2. **知识检索**节点在选定的知识库中搜索与用户查询相关的内容,并输出检索结果。
|
||||
|
||||
2. **知识检索** 节点在指定知识库中检索与用户问题相关的内容,并输出检索结果。
|
||||
3. **LLM** 节点根据用户查询和检索到的知识生成响应。
|
||||
|
||||
3. **LLM** 节点基于用户问题和检索结果生成回复。
|
||||
|
||||
4. **直接回答** 节点将 LLM 的回复输出给用户。
|
||||
4. **回答**节点将 LLM 的响应返回给用户。
|
||||
|
||||

|
||||
|
||||
<Info>
|
||||
使用知识检索节点前,确保至少有一个可用的知识库。了解如何创建知识库,阅读 [知识库](/zh/use-dify/knowledge/readme#创建知识库)。
|
||||
</Info>
|
||||
使用知识检索节点前,请确保至少有一个可用的知识库。了解如何创建知识库,请参阅[知识库](/zh/use-dify/knowledge/readme#创建知识库)。
|
||||
|
||||
<Note>
|
||||
在 Dify Cloud 上,知识检索操作受订阅计划的频率限制。详见 [知识库请求频率限制](/zh/use-dify/knowledge/knowledge-request-rate-limit)。
|
||||
</Note>
|
||||
<Info>
|
||||
在 Dify Cloud 上,知识检索操作受订阅计划的频率限制。详见[知识库请求频率限制](/zh/use-dify/knowledge/knowledge-request-rate-limit)。
|
||||
</Info>
|
||||
|
||||
## 配置知识检索节点
|
||||
|
||||
@@ -39,96 +35,90 @@ icon: "database"
|
||||
|
||||
- *如何处理检索结果*(节点级检索设置)
|
||||
|
||||
你还可以利用文档元数据实现基于筛选的检索,进一步提升检索精度。
|
||||
你还可以使用文档元数据来启用基于筛选的检索,进一步提升检索精度。
|
||||
|
||||
### 指定查询内容
|
||||
|
||||
设置节点需要在指定知识库中检索的查询内容。
|
||||
设置节点需要在选定知识库中检索的查询内容。
|
||||
|
||||
- **查询文本**:选择一个文本变量。例如,在 Chatflow 中可用 `userinput.query` 引用用户输入,而在 Workflow 中则可选择文本类型的用户输入变量。
|
||||
- **查询文本**:选择一个文本变量。例如,在对话流中使用 `userinput.query` 引用用户输入,或在工作流中使用自定义的文本类型用户输入变量。
|
||||
|
||||
- **查询图片**:选择一个图片变量(如用户通过用户输入节点上传的图片),通过图片进行检索。图片大小限制为 2 MB。
|
||||
- **查询图片**:选择一个图片变量,例如用户通过用户输入节点上传的图片,通过图片进行检索。图片大小限制为 2 MB。
|
||||
|
||||
<Tip>
|
||||
对于自托管部署,可通过环境变量 `ATTACHMENT_IMAGE_FILE_SIZE_LIMIT` 调整图片大小限制。
|
||||
</Tip>
|
||||
|
||||
<Info>
|
||||
当添加了至少一个多模态知识库时,才会出现 **查询图片** 选项。
|
||||
当添加了至少一个多模态知识库时,才会出现**查询图片**选项。
|
||||
|
||||
此类知识库会带有 **Vision** 图标,表示其使用的是多模态嵌入模型。
|
||||
此类知识库带有 **Vision** 标签,表示其使用了多模态嵌入模型。
|
||||
</Info>
|
||||
|
||||
### 选择检索的知识库
|
||||
|
||||
为节点添加一个或多个知识库,用于检索与查询内容相关的信息。
|
||||
添加一个或多个已有知识库,供节点检索与查询相关的内容。
|
||||
|
||||
添加了多个知识库时,会同时检索所有知识库,合并结果并根据 [节点级检索设置](#调整节点级检索设置) 进行处理。
|
||||
当添加了多个知识库时,会同时从所有知识库中检索,然后合并结果并根据[节点级检索设置](#配置节点级检索设置)进行处理。
|
||||
|
||||
<Info>
|
||||
带有 **Vision** 图标的知识库支持跨模态检索——基于语义相关性同时检索文本和图片。
|
||||
带有 **Vision** 标签的知识库支持跨模态检索——基于语义相关性同时检索文本和图片。
|
||||
</Info>
|
||||
|
||||
<Tip>
|
||||
点击已添加知识库对应的 **编辑** 图标,可直接在知识检索节点内修改其设置。了解更多设置说明,阅读 [调整知识库设置](/zh/use-dify/knowledge/manage-knowledge/introduction)。
|
||||
</Tip>
|
||||
你可以点击已添加知识库旁的**编辑**图标来修改其[设置](/zh/use-dify/knowledge/manage-knowledge/introduction)。
|
||||
|
||||
### 调整节点级检索设置
|
||||
### 配置节点级检索设置
|
||||
|
||||
设置节点在获取知识库检索结果后的处理方式。
|
||||
进一步调整节点在从知识库获取检索结果后的处理方式。
|
||||
|
||||
<Info>
|
||||
检索设置分为知识库级和节点级两层。
|
||||
|
||||
可将其理解为先后两道筛选:知识库设置决定初步的检索结果池,而节点设置对结果进行重排序(Rerank)或进一步筛选。
|
||||
检索设置分为知识库级和知识检索节点级两层。
|
||||
|
||||
可以将其理解为两道连续的筛选:知识库设置决定初始结果池,节点设置进一步重排或缩小结果范围。
|
||||
</Info>
|
||||
|
||||
- **Rerank 设置**
|
||||
|
||||
- **权重设置**:语义相似度与关键词匹配的权重。语义权重高则更注重语义相关性,关键词权重高则更偏向精确匹配。
|
||||
- **权重分数**:重排时语义相似度与关键词匹配的相对权重。语义权重越高越偏向语义相关性,关键词权重越高越偏向精确匹配。
|
||||
|
||||
<Info>
|
||||
仅当所有已添加的知识库使用的索引方式均为高质量时,才会出现 **权重设置** 的选项。
|
||||
仅当所有已添加的知识库均为高质量模式时,才可使用**权重分数**。
|
||||
</Info>
|
||||
|
||||
- **Rerank 模型**:根据与查询内容的相关性,对所有结果的相似度分数进行重新评定和排序。
|
||||
- **Rerank 模型**:使用 Rerank 模型根据与查询的相关性对所有结果重新评分和排序。
|
||||
|
||||
<Note>
|
||||
若添加了多模态知识库,需同时选择多模态 Rerank 模型(带有 **Vision** 图标)。否则,检索到的图片将在重排序和最终输出中被排除。
|
||||
</Note>
|
||||
<Note>
|
||||
如果添加了多模态知识库,请同时选择多模态 Rerank 模型(带有 **Vision** 标签)。否则,检索到的图片将被排除在重排序和最终输出之外。
|
||||
</Note>
|
||||
|
||||
- **Top K**:重排序后返回的最大结果数。选择 Rerank 模型时,该值将根据模型的最大输入容量自动调整。
|
||||
- **Top K**:重排后返回的最大结果数。选择 Rerank 模型时,该值将根据模型的最大输入容量(模型一次可处理的文本量)自动调整。
|
||||
|
||||
- **Score 阈值**:返回结果的最低相似度分数。低于该阈值的结果会被过滤。阈值高表示对结果的相关性更严格,阈值低则更宽松。
|
||||
- **Score 阈值**:返回结果的最低相似度分数。低于该阈值的结果将被排除。较高的阈值意味着更严格的相关性,较低的阈值则包含更广泛的匹配。
|
||||
|
||||
### 启用元数据过滤
|
||||
|
||||
可利用已有的文档元数据,将检索范围限定在知识库的特定文档内,以进一步提升检索精度。
|
||||
使用已有的[文档元数据](/zh/use-dify/knowledge/metadata)将检索范围限定在知识库内的特定文档,以提升检索精度。
|
||||
|
||||
启用元数据过滤后,知识检索节点仅会检索符合指定元数据过滤条件的文档,而非整个知识库。尤其适用于内容多样的大型知识库。
|
||||
启用元数据过滤后,知识检索节点仅搜索符合指定元数据条件的文档,而非整个知识库。这在内容多样的大型知识库中尤其有用。
|
||||
|
||||
<Info>
|
||||
了解如何创建与管理文档元数据,阅读 [元数据](/zh/use-dify/knowledge/metadata)。
|
||||
</Info>
|
||||
## 输出
|
||||
|
||||
## 输出变量
|
||||
知识检索节点将检索结果输出为名为 `result` 的变量,它是一个包含检索到的文档分段的数组,包含内容、元数据、标题和其他属性。
|
||||
|
||||
知识检索节点将检索结果输出为 `result` 变量——一个包含分段内容、元数据、标题等属性的文档分段数组。
|
||||
当检索结果包含图片附件时,`result` 变量还包含一个名为 `files` 的字段,其中包含图片详情。
|
||||
|
||||
若检索结果中包含图片附件,`result` 变量中将增加包含图片元数据的 `files` 字段。
|
||||
## 与 LLM 节点搭配使用
|
||||
|
||||
## 搭配 LLM 节点使用知识检索节点
|
||||
要在 LLM 节点中使用检索结果作为上下文:
|
||||
|
||||
如需在 LLM 节点中基于检索结果回答用户问题:
|
||||
1. 在**高级设置** > **上下文**中,选择知识检索节点的 `result` 变量。
|
||||
|
||||
1. 在 **上下文** 字段中,选择知识检索节点的 `result` 变量。
|
||||
2. 在系统指令中,引用 `Context` 变量。
|
||||
|
||||
2. 在提示词字段中,同时引用 `上下文` 变量和用户输入变量(如 Chatflow 中的 `userinput.query`)。
|
||||
|
||||
3. (可选)若 LLM 支持视觉能力(带有 **Vision** 图标),可启用 **Vision**,以便其理解检索到的图片。
|
||||
3. 可选:如果 LLM 支持视觉能力,启用 **Vision** 以便其处理检索结果中的图片附件。
|
||||
|
||||
<Info>
|
||||
启用 **Vision** 后,LLM 会自动处理检索到的图片。无需在 **Vision** 输入字段中再次手动引用 `上下文` 变量。
|
||||
你无需指定任何视觉输入变量。启用 **Vision** 后,LLM 会自动访问检索到的图片。
|
||||
</Info>
|
||||
|
||||
<img src="/images/llm_node_configuration_example.png" alt="LLM 节点配置示例" width="400"/>
|
||||
在对话流中,默认情况下引用知识的响应旁会显示引用来源。你可以在**功能**中关闭**引用和归属**来禁用此功能。
|
||||
|
||||
@@ -1,131 +1,221 @@
|
||||
---
|
||||
title: "大语言模型"
|
||||
description: "调用语言模型进行文本生成和分析"
|
||||
title: "LLM"
|
||||
description: "调用大语言模型进行文本生成和分析"
|
||||
icon: "brain"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/llm)。</Note>
|
||||
|
||||
大型语言模型节点调用语言模型来处理文本、图像和文档。它向你配置的模型发送提示词并捕获其响应,支持结构化输出、上下文管理和多模态输入。
|
||||
LLM 节点调用大语言模型,根据你的指令和上游节点的输入生成响应。
|
||||
|
||||
<Frame caption="大型语言模型节点配置界面">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/85730fbfa1d441d12d969b89adf2670e.png" alt="LLM Node Overview" />
|
||||
</Frame>
|
||||
## 选择模型
|
||||
|
||||
从你已配置的提供商中选择最适合任务的模型。
|
||||
|
||||
选择后,你可以调整模型参数来控制其生成响应的方式。可用的参数和预设因模型而异。
|
||||
|
||||
## 编写提示词
|
||||
|
||||
指导模型如何处理输入和生成响应。输入 `/` 或 `{` 来引用变量。
|
||||
|
||||
如果你不确定从哪里开始或想优化现有的提示词,可以试试我们的 AI 辅助提示词生成器。
|
||||
|
||||
<Columns>
|
||||
<Frame caption="提示词生成器图标">
|
||||
<img src="/images/prompt_generator_icon.png" alt="提示词生成器图标"/>
|
||||
</Frame>
|
||||
<Frame caption="提示词生成器界面">
|
||||
<img src="/images/prompt_generator_interface.png" alt="提示词生成器界面"/>
|
||||
</Frame>
|
||||
</Columns>
|
||||
|
||||
### 指定指令和消息
|
||||
|
||||
定义系统指令并点击**添加消息**来添加用户/助手消息。它们会按顺序在单个提示词中发送给模型。
|
||||
|
||||
可以把它想象成直接与模型对话:
|
||||
|
||||
- **系统指令**设定模型响应的规则——角色、语气和行为准则。
|
||||
|
||||
- **用户消息**是你发送给模型的内容——问题、请求或要模型完成的任务。
|
||||
|
||||
- **助手消息**是模型的回复。
|
||||
|
||||
### 将输入与规则分离
|
||||
|
||||
在系统指令中定义角色和规则,然后在用户消息中传递实际的任务输入。例如:
|
||||
|
||||
```bash wrap
|
||||
# System instruction
|
||||
You are a children's story writer. Write a story based on the user's input. Use simple language and a warm tone.
|
||||
|
||||
# User message
|
||||
Write a bedtime story about a rabbit who makes friends with a shy hedgehog
|
||||
```
|
||||
|
||||
虽然将所有内容放在系统指令中看起来更简单,但将角色定义与任务输入分离可以为模型提供更清晰的结构。
|
||||
|
||||
### 模拟对话历史
|
||||
|
||||
你可能会想:既然助手消息是模型的回复,为什么要手动添加它们?
|
||||
|
||||
通过交替添加用户和助手消息,你可以在提示词中创建模拟的对话历史。模型会将这些视为之前的对话,这有助于引导其行为。
|
||||
|
||||
### 从上游 LLM 导入对话历史
|
||||
|
||||
点击**添加对话历史**,从上游 Agent 或 LLM 节点导入对话历史。这让模型了解上游发生了什么,并从该节点中断的地方继续。
|
||||
|
||||
对话历史包括**用户**消息、**助手**消息和<Tooltip tip="工具消息是模型调用工具后返回的结果。例如,bash 工具的命令执行结果。">**工具**消息</Tooltip>。你可以在 Agent 或 LLM 节点的 `context` 输出变量中查看。
|
||||
|
||||
<Info>
|
||||
在使用大型语言模型节点之前,请先在**系统设置 → 模型供应商**中配置至少一个模型供应商。
|
||||
系统指令不包含在内,因为它们是节点特定的。
|
||||
</Info>
|
||||
|
||||
## 模型选择和参数
|
||||
这在串联多个 Agent 或 LLM 节点时非常有用:
|
||||
|
||||
从你已配置的任何模型供应商中进行选择。不同模型擅长不同任务 - GPT-4 和 Claude 3.5 在复杂推理方面表现良好但成本较高,而 GPT-3.5 Turbo 在能力和经济性之间取得平衡。对于本地部署,使用 Ollama、LocalAI 或 Xinference。
|
||||
- 不导入对话历史时,下游节点只接收上游节点的最终输出,不知道它是如何得出结论的。
|
||||
|
||||
<Frame caption="模型选择和参数配置">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/43f81418ea70d4d79e3705505e777b1b.png" alt="LLM Node Configuration" />
|
||||
</Frame>
|
||||
- 导入对话历史后,它可以看到整个过程:用户问了什么、调用了哪些工具、返回了什么结果、模型是如何推理的。
|
||||
|
||||
模型参数控制响应生成。**温度**范围从 0(确定性)到 1(创造性)。**核采样**通过概率限制词汇选择。**频率惩罚**减少重复。**存在惩罚**鼓励新话题。你也可以使用预设:**精确**、**平衡**或**创意**。
|
||||
**在自动添加的用户消息中指定你的新任务。** 导入的历史会被添加到当前节点消息的前面,因此模型将其视为一个连续的对话。由于导入的历史通常以助手消息结束,模型需要一条后续的用户消息来知道下一步该做什么。
|
||||
|
||||
## 提示词配置
|
||||
<Accordion title="示例:串联研究和报告 LLM">
|
||||
|
||||
你的界面根据模型类型自适应。聊天模型使用消息角色(**系统**用于行为,**用户**用于输入,**助手**用于示例),而完成模型使用简单的文本续写。
|
||||
假设两个 LLM 节点按顺序运行:LLM A 通过调用搜索工具研究一个主题,LLM B 基于研究结果撰写报告。
|
||||
|
||||
在提示词中使用双花括号引用工作流变量:`{{variable_name}}`。变量在到达模型之前会被实际值替换。
|
||||
如果 LLM B 只接收 LLM A 的最终文本输出,它可以总结结论但无法验证或引用具体来源。通过导入 LLM A 的对话历史,LLM B 可以看到每次工具调用的原始数据,并在报告中直接引用。
|
||||
|
||||
```text
|
||||
System: You are a technical documentation expert.
|
||||
User: {{user_input}}
|
||||
以下是 LLM B 导入 LLM A 对话历史后看到的完整消息序列:
|
||||
|
||||
```bash wrap
|
||||
# LLM B's own system instruction
|
||||
1. System: "You are a professional report writer..."
|
||||
|
||||
# from LLM A
|
||||
2. User: "What are the new trends in the EV market?"
|
||||
|
||||
# from LLM A
|
||||
3. Tool: [search results with URLs and raw data]
|
||||
|
||||
# from LLM A
|
||||
4. Assistant: "Based on the search results, the key trends are..."
|
||||
|
||||
# LLM B's own user message
|
||||
5. User: "Write a 500-word market analysis report."
|
||||
```
|
||||
|
||||
LLM B 理解:它已经看到了研究过程(问题、搜索、总结),现在需要基于这些信息撰写报告——包括仅通过文本输出无法获取的原始数据。
|
||||
|
||||
</Accordion>
|
||||
|
||||
### 使用 Jinja2 创建动态提示词
|
||||
|
||||
使用 [Jinja2](https://jinja.palletsprojects.com/en/stable/) 语法创建动态提示词。例如,使用条件判断根据变量值定制不同的指令。
|
||||
|
||||
<Accordion title="Jinja2 示例:根据用户级别设置条件提示词">
|
||||
```jinja2 wrap
|
||||
You are a
|
||||
{% if user_level == "beginner" %}patient and friendly
|
||||
{% elif user_level == "intermediate" %}professional and efficient
|
||||
{% else %}senior expert-level
|
||||
{% endif %} assistant.
|
||||
|
||||
{% if user_level == "beginner" %}
|
||||
Please explain in simple and easy-to-understand language. Provide examples when necessary. Avoid using technical jargon.
|
||||
{% elif user_level == "intermediate" %} You may use some technical terms, but provide appropriate explanations. Offer practical advice and best practices.
|
||||
{% else %} You may delve into technical details and use professional terminology. Focus on advanced use cases and optimization solutions.
|
||||
{% endif %}
|
||||
|
||||
User question: {{ query }}
|
||||
```
|
||||
</Accordion>
|
||||
|
||||
## 上下文变量
|
||||
默认情况下,你需要将所有可能的指令发送给模型,描述条件,然后让模型自行决定遵循哪些——这种方法通常不可靠。
|
||||
|
||||
上下文变量在保持来源归属的同时注入外部知识。这使得大型语言模型可以使用你的特定文档回答问题的检索增强生成应用成为可能。
|
||||
使用 Jinja2 模板,只有符合定义条件的指令会被发送,确保行为可预测并减少 Token 使用。
|
||||
|
||||
<Frame caption="在检索增强生成应用中使用上下文变量">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/5aefed96962bd994f8f05bac96b11e22.png" alt="Context Variables" />
|
||||
</Frame>
|
||||
## 添加上下文
|
||||
|
||||
将知识检索节点的输出连接到你的大型语言模型节点的上下文输入,然后引用它:
|
||||
在**高级设置** > **上下文**中,为 LLM 提供额外的参考信息以减少幻觉并提高响应准确性。
|
||||
|
||||
```text
|
||||
Answer using only this context:
|
||||
{{knowledge_retrieval.result}}
|
||||
典型模式:从知识检索节点[传递检索结果](/zh/use-dify/nodes/knowledge-retrieval#与-llm-节点搭配使用),实现检索增强生成(RAG)。
|
||||
|
||||
Question: {{user_question}}
|
||||
```
|
||||
## 启用对话记忆(仅对话流)
|
||||
|
||||
当使用来自知识检索的上下文变量时,Dify 会自动跟踪引用,以便用户看到信息来源。
|
||||
<Note>
|
||||
记忆是节点特定的,不会在不同对话之间持久保存。
|
||||
</Note>
|
||||
|
||||
## 结构化输出
|
||||
启用**记忆**以保留最近的对话,使 LLM 能够连贯地回答后续问题。
|
||||
|
||||
强制模型返回特定数据格式(如 JSON)以便程序化使用。通过三种方法配置:
|
||||
会自动添加一条用户消息来传递当前用户查询和任何上传的文件。这是因为记忆通过存储最近的用户-助手交互来工作。如果当前查询没有通过用户消息传递,用户侧将没有内容可记录。
|
||||
|
||||
<Tabs>
|
||||
<Tab title="可视化编辑器">
|
||||
用户友好的界面适用于简单结构。添加具有名称和类型的字段,标记必需字段,设置描述。编辑器自动生成 JSON Schema。
|
||||
</Tab>
|
||||
|
||||
<Tab title="JSON Schema">
|
||||
直接编写 Schema,适用于具有嵌套对象、数组和验证规则的复杂结构。
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sentiment": {
|
||||
"type": "string",
|
||||
"enum": ["positive", "negative", "neutral"]
|
||||
}
|
||||
},
|
||||
"required": ["sentiment"]
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
|
||||
<Tab title="AI 生成">
|
||||
用自然语言描述需求,让 AI 生成 Schema。
|
||||
</Tab>
|
||||
</Tabs>
|
||||
**窗口大小**控制保留多少条最近的交互。例如,`5` 保留最近 5 轮用户查询和 LLM 响应。
|
||||
|
||||
<Warning>
|
||||
具有原生 JSON 支持的模型可以可靠地处理结构化输出。对于其他模型,Dify 在提示词中包含 Schema,但结果可能有所不同。
|
||||
</Warning>
|
||||
## 添加 Dify 工具
|
||||
|
||||
## 记忆和文件处理
|
||||
<Info>
|
||||
只有带有 Tool Call 标签的模型才能使用 Dify 工具。
|
||||
|
||||

|
||||
启用记忆以在聊天流对话中的多个大型语言模型调用之间维护上下文。启用后,之前的交互将作为格式化的用户-助手输出包含在后续提示词中。你可以通过编辑 `USER` 模板来自定义用户提示词的内容。记忆是节点特定的,不会在不同对话之间持续存在。
|
||||
<Frame caption="">
|
||||
<img src="/images/tool_call_tag.png" alt="Tool Call 标签"/>
|
||||
</Frame>
|
||||
</Info>
|
||||
|
||||
对于**文件处理**,将文件变量添加到多模态模型的提示词中。GPT-4V 处理图像,Claude 直接处理 PDF,而其他模型可能需要预处理。
|
||||
添加 [Dify 工具](/zh/use-dify/workspace/tools)让模型与外部服务和 API 交互。当任务需要实时数据或超出文本生成范围的操作(如网页搜索或数据库查询)时非常有用。
|
||||
|
||||
### 视觉能力配置
|
||||
你可以禁用或删除已添加的工具,并修改其配置。更清晰的工具描述有助于模型判断何时使用它。
|
||||
|
||||
处理图像时,你可以控制细节级别:
|
||||
- **高细节** - 对复杂图像具有更好的准确性但使用更多令牌
|
||||
- **低细节** - 对简单图像进行更快处理,使用较少令牌
|
||||
**调整最大迭代次数**
|
||||
|
||||
视觉能力的默认变量选择器是 `userinput.files`,它会自动从用户输入节点获取文件。
|
||||
**高级设置**中的**最大迭代次数**限制了模型对单次请求可以重复其推理-行动循环(思考、调用工具、处理结果)的次数。
|
||||
|
||||
<Frame caption="多模态模型的文件处理">
|
||||
<img src="https://assets-docs.dify.ai/2024/11/05b3d4a78038bc7afbb157078e3b2b26.png" alt="File Processing" />
|
||||
</Frame>
|
||||
对于需要多次工具调用的复杂多步任务,增加此值。较高的值会增加延迟和 Token 成本。
|
||||
|
||||
## Jinja2 模板支持
|
||||
## 处理多模态输入
|
||||
|
||||
大型语言模型提示词支持 Jinja2 模板以进行高级变量处理。当你使用 Jinja2 模式(`edition_type: "jinja2"`)时,你可以:
|
||||
要让*支持多模态的*模型处理图片、音频、视频或文档,可选择以下任一方式:
|
||||
|
||||
```jinja2
|
||||
{% for item in search_results %}
|
||||
{{ loop.index }}. {{ item.title }}: {{ item.content }}
|
||||
{% endfor %}
|
||||
```
|
||||
- 在提示词中直接引用文件变量。
|
||||
|
||||
Jinja2 变量与常规变量替换分别处理,允许在提示词中进行循环、条件和复杂数据转换。
|
||||
- 在**高级设置**中启用 **Vision** 并在那里选择文件变量。
|
||||
|
||||
## 流式结果返回
|
||||
**分辨率**仅控制图片处理的细节级别:
|
||||
|
||||
大型语言模型节点默认支持流式结果返回。每个文本块都作为 `RunStreamChunkEvent` 产生,实现实时响应显示。文件输出(图像、文档)在流式传输期间自动处理和保存。
|
||||
- **高**:对复杂图片更准确,但消耗更多 Token
|
||||
|
||||
- **低**:对简单图片处理更快,消耗更少 Token
|
||||
|
||||
## 将思考过程和工具调用与响应分离
|
||||
|
||||
要获得不包含模型思考过程和工具调用(如果有)的干净响应,请引用 `text` 输出变量(开启**启用推理标签分离**)或 `generation.content`。
|
||||
|
||||
`generations` 变量本身包含所有中间步骤和最终响应。
|
||||
|
||||
## 强制结构化输出
|
||||
|
||||
在指令中描述输出格式可能产生不一致的结果。要获得更可靠的格式化,启用结构化输出以强制执行定义好的 JSON schema。
|
||||
|
||||
<Info>
|
||||
对于不支持原生 JSON 的模型,Dify 会将 schema 包含在提示词中,但不保证严格遵循。
|
||||
</Info>
|
||||
|
||||
<Frame caption=""><img src="/images/structured_output.png" alt="结构化输出"/></Frame>
|
||||
|
||||
1. 在**输出变量**旁,开启**结构化**开关。一个 `structured_output` 变量将出现在输出变量列表末尾。
|
||||
|
||||
2. 点击**配置**,使用以下方法之一定义输出 schema。
|
||||
|
||||
- **可视化编辑器**:使用无代码界面定义简单结构。对应的 JSON schema 会自动生成。
|
||||
|
||||
- **JSON Schema**:直接编写 schema,适用于包含嵌套对象、数组或验证规则的复杂结构。
|
||||
|
||||
- **AI 生成**:用自然语言描述需求,让 AI 生成 schema。
|
||||
|
||||
- **JSON 导入**:粘贴一个现有的 JSON 对象,自动生成对应的 schema。
|
||||
|
||||
## 错误处理
|
||||
|
||||
为失败的大型语言模型调用配置重试行为。设置最大重试次数、重试间隔和退避乘数。当重试不足时,定义回退策略,如默认值、错误路由或替代模型。
|
||||
为临时问题(如网络波动)配置自动重试,并设置备用错误处理策略以在错误持续时保持工作流运行。
|
||||
|
||||
<Frame caption=""><img src="/images/node_handle_errors.png" alt="错误处理"/></Frame>
|
||||
|
||||
@@ -1,91 +1,110 @@
|
||||
---
|
||||
title: "工具"
|
||||
description: "连接外部服务和 API"
|
||||
icon: "wrench"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/tools)。</Note>
|
||||
|
||||
将 [Dify 工具](/zh/use-dify/workspace/tools)作为独立节点添加到你的工作流中。
|
||||
|
||||
工具节点通过预构建的集成将你的工作流连接到外部服务和API。与HTTP请求节点不同,工具提供结构化接口、内置错误处理以及为流行服务简化的配置。
|
||||
这让你的工作流能够与外部服务和 API 交互,以访问实时数据并执行操作,如网页搜索、数据库查询或内容处理。
|
||||
|
||||
<Frame caption="工具节点配置界面">
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/0f0255764a3f459f0b3c708db1cb32c9.png" alt="Tools node interface" />
|
||||
</Frame>
|
||||
## 添加和配置节点
|
||||
|
||||
## 工具类型
|
||||
1. 在画布上,点击**添加节点** > **工具**,然后从可用工具中选择一个操作。
|
||||
|
||||
Dify支持多种类型的工具来处理不同的集成需求:
|
||||
2. 可选:如果工具需要身份认证,选择一个已有凭据或创建新凭据。
|
||||
|
||||
<Frame caption="可用的工具类别和选项">
|
||||
<img src="https://assets-docs.dify.ai/2025/04/f37cce4ccbb7456154cfa9eacda6b322.png" alt="Tool categories" />
|
||||
</Frame>
|
||||
<Info>
|
||||
要更改默认凭据,请前往**工具**或**插件**。
|
||||
</Info>
|
||||
|
||||
<Tabs>
|
||||
<Tab title="内置工具">
|
||||
由Dify维护的即用型集成,适用于包括Google Search、天气API、生产力工具和AI服务在内的流行服务。这些工具需要最少的配置,并提供可靠、经过测试的集成。
|
||||
</Tab>
|
||||
|
||||
<Tab title="自定义工具">
|
||||
使用OpenAPI/Swagger规范导入你自己的工具。非常适合内部API、专业服务或内置选项未涵盖的任何API。配置一次即可在多个工作流中重复使用。
|
||||
</Tab>
|
||||
|
||||
<Tab title="工作流工具">
|
||||
将复杂的工作流发布为可重用的工具。这创建了可在不同应用程序间共享的模块化构建块,促进代码重用并简化维护。
|
||||
</Tab>
|
||||
|
||||
<Tab title="MCP工具">
|
||||
来自提供专业能力的外部MCP(模型上下文协议)服务器的工具。连接到不断增长的MCP服务器生态系统以获得扩展功能。
|
||||
</Tab>
|
||||
</Tabs>
|
||||
3. 完成其他必需的工具设置。
|
||||
|
||||
## 配置
|
||||
## 准备工具输入
|
||||
|
||||
### 身份验证
|
||||
工具可能要求特定格式的输入,而这些格式不一定与你的上游节点输出完全匹配。你可能需要重新格式化数据、提取特定信息或组合多个节点的输出。
|
||||
|
||||
许多工具需要API密钥或OAuth身份验证。在工作流中使用这些工具之前,请在你工作空间的**工具**部分配置这些凭据。配置完成后,身份验证将自动处理。
|
||||
无需手动添加中间节点或修改上游输出,你可以**在需要的地方直接准备输入**。
|
||||
|
||||
### 输入参数
|
||||
有两种方式可用:
|
||||
|
||||
工具提供带有验证的结构化表单用于输入配置。使用来自之前工作流节点的变量设置参数。界面自动处理数据类型验证,并为每个参数提供有用的描述。
|
||||
| 方式 | 适用场景 | 工作原理 |
|
||||
|:---------|:---------|:-------------------|
|
||||
| **组装变量** | 数据在上游输出中直接可用且结构清晰,但需要重新格式化、提取或组合 |<ol><li>你描述需求。</li><li>系统自动创建一个内部**代码**节点来处理转换。</li></ol>|
|
||||
| **从 LLM 的对话历史中提取** | 数据嵌入在 LLM 的对话历史中,需要 LLM 来解读和提取 | <ol><li>你描述需求。</li><li>系统自动创建一个内部 **LLM** 节点来读取所选 Agent 或 LLM 节点的对话历史并提取所需数据。</li></ol>|
|
||||
|
||||
### 输出处理
|
||||
### 组装变量
|
||||
|
||||
工具返回结构化数据,这些数据作为变量可用于下游节点。输出模式是预定义的,确保兼容性并降低集成复杂性。
|
||||
<Frame caption=""><img src="/images/assemble_variables.png" alt="组装变量"/></Frame>
|
||||
|
||||
## 相比HTTP请求的优势
|
||||
当数据存在于清晰、结构化的上游输出中但需要转换时使用——例如提取子字符串、组合多个输出或更改数据类型。
|
||||
|
||||
**结构化接口**提供基于表单的配置和内置验证,使设置比手动HTTP请求配置更容易。
|
||||
<Accordion title="示例:组合多个节点的输出">
|
||||
|
||||
**内置错误处理**包括自动重试逻辑和错误管理,降低了处理API故障的复杂性。
|
||||
三个上游 LLM 节点各自生成了一段产品描述。下游工具需要一个包含所有描述的单一数组。
|
||||
|
||||
**类型安全**确保输入和输出模式在工作流节点之间保持数据兼容性。
|
||||
选择**组装变量**并描述:"Combine the text outputs from LLM1, LLM2, and LLM3."
|
||||
|
||||
**文档**为每个工具包含使用示例和详细的参数描述。
|
||||
系统生成的代码会将输出合并为工具期望的数组格式。
|
||||
|
||||
## 错误处理和重试
|
||||
</Accordion>
|
||||
|
||||
为依赖外部服务的工具配置强大的错误处理:
|
||||
<Note>
|
||||
在组装变量之前,请先运行相关的上游节点以使其输出数据可用。
|
||||
</Note>
|
||||
|
||||
<Frame caption="工具重试配置">
|
||||
<img src="https://assets-docs.dify.ai/2024/12/34867b2d910d74d2671cd40287200480.png" alt="Tool retry settings" />
|
||||
</Frame>
|
||||
1. 在任何接受变量的工具输入字段中,输入 `/` 并从下拉菜单中选择**组装变量**。
|
||||
|
||||
**重试设置**自动重试失败的工具执行,最多10次,带有可配置的间隔(最大5000毫秒)。这可以处理临时服务问题或网络问题。
|
||||
2. 用自然语言描述你的需求,AI 会生成转换数据的代码。生成的代码会自动适配输入字段期望的格式。
|
||||
|
||||
<Frame caption="工具错误处理选项">
|
||||
<img src="https://assets-docs.dify.ai/2024/12/39dc3b5881d9a5fe35b877971f70d3a6.png" alt="Tool error handling" />
|
||||
</Frame>
|
||||
3. 点击**运行**测试代码。这会打开内部代码节点并使用可用的上游数据运行。
|
||||
|
||||
**错误处理**定义当工具执行失败时的替代工作流路径,确保即使外部服务不可用时你的工作流也能继续。
|
||||
4. 检查代码节点的输出,验证是否符合预期:
|
||||
|
||||
## 创建自定义工具
|
||||
- 如果结果正确,直接退出即可。代码会自动保存和应用。
|
||||
|
||||
**OpenAPI集成**允许你导入任何带有OpenAPI/Swagger规范的服务。导入后,该服务将作为工具可用,具有与内置选项相同的易用性。
|
||||
- 如果不正确,点击代码字段中的代码生成器图标继续用 AI 优化,或直接编辑代码。
|
||||
|
||||
**工作流发布**将多节点工作流转换为可在工具。这促进了模块化并简化了复杂的工作流管理。
|
||||
<Frame caption="代码生成器图标">
|
||||
<img src="/images/code_generator_icon.png" alt="代码生成器图标"/>
|
||||
</Frame>
|
||||
|
||||
## 工具管理
|
||||
<Info>
|
||||
要稍后重新打开**组装变量**界面:
|
||||
|
||||
1. 点击已组装变量旁的**查看内部**。
|
||||
2. 选择内部代码节点。
|
||||
3. 点击代码生成器图标。
|
||||
</Info>
|
||||
|
||||
### 从 LLM 的对话历史中提取
|
||||
|
||||
<Frame caption=""><img src="/images/extract_from_llm_chat_history.png" alt="从 LLM 的对话历史中提取"/></Frame>
|
||||
|
||||
当你需要的信息嵌入在 LLM 的对话历史中时使用——即执行过程中产生的用户、助手和工具消息。你可以通过 LLM 的 `context` 输出变量查看其对话历史。
|
||||
|
||||
<Accordion title="示例:从混合输出中提取代码">
|
||||
|
||||
上游 LLM 节点生成了代码,但其输出包含自然语言的解释和注释。下游的代码解释器工具需要纯净的、可执行的代码。
|
||||
|
||||
无需修改上游 LLM 让它只输出代码,在代码解释器的输入字段中 `@` 该 LLM 节点并描述:"Extract the executable code only."
|
||||
|
||||
系统创建一个内部 LLM 节点,读取所选 LLM 节点的对话历史,并以代码解释器期望的格式提取代码部分。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Note>
|
||||
在从对话历史中提取之前,请先运行相关的上游 Agent 或 LLM 节点以使其 `context` 数据可用。
|
||||
</Note>
|
||||
|
||||
1. 在任何接受变量的输入字段中,输入 `@` 并选择一个上游 Agent 或 LLM 节点。
|
||||
|
||||
2. 描述你想从其对话历史中提取什么。
|
||||
|
||||
3. 点击**查看内部**并测试运行内部 LLM 节点。该节点导入上游节点的对话历史,并使用结构化输出来匹配所需格式。
|
||||
|
||||
4. 检查输出并根据需要优化。
|
||||
|
||||
通过你工作空间导航中的**工具**访问工具配置。在这里你可以管理身份验证凭据、导入自定义工具、配置MCP服务器以及将工作流发布为工具。
|
||||
|
||||
有关工具创建、管理和将工作流发布为工具的详细指导,请参阅[工具配置指南](/zh/use-dify/nodes/tools)。
|
||||
|
||||
38
zh/use-dify/nodes/upload-file-to-sandbox.mdx
Normal file
38
zh/use-dify/nodes/upload-file-to-sandbox.mdx
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: "上传文件至沙盒"
|
||||
description: "将多模态文件上传至沙盒,让 LLM 可以使用工具和脚本处理它们——即使是模型原生不支持的文件类型"
|
||||
icon: "upload"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/upload-file-to-sandbox)。</Note>
|
||||
|
||||
<Info>
|
||||
此节点仅在使用沙盒运行时的应用中可用。
|
||||
</Info>
|
||||
|
||||
当文件直接传递给 LLM 时,处理能力受限于模型自身的多模态能力。虽然[文档提取](/zh/use-dify/nodes/doc-extractor)节点可以将各种文件类型转换为文本供 LLM 处理,但其支持的格式仍然有限。
|
||||
|
||||
这就是"上传文件至沙盒"节点的用武之地。文件上传后,下游的 [Agent 节点](/zh/use-dify/nodes/agent#沙盒运行时)(启用了 **Agent 模式**)可以执行命令来安装工具和运行脚本,将文件转换为 LLM 可处理的格式。
|
||||
|
||||
<Info>
|
||||
- 处理结果取决于模型的推理能力。
|
||||
- 在生产环境中,这些上传的文件范围限定在每次运行中,不会在沙盒中持久保存。
|
||||
</Info>
|
||||
|
||||
**使用方法:**
|
||||
|
||||
1. 在"上传文件至沙盒"节点中,选择一个文件变量(例如来自用户输入的变量)。支持 `file` 和 `array[file]` 数据类型。
|
||||
|
||||
2. 在下游 Agent 节点的提示词中,引用 `sandbox_path` 和 `file_name` 变量,以便模型定位和处理文件。例如:
|
||||
|
||||
```bash wrap
|
||||
# System instruction
|
||||
You are a data analyst. Analyze uploaded data files and provide insights.
|
||||
|
||||
# User message
|
||||
Analyze the data in "{{Upload File to Sandbox.file_name}}" at {{Upload File to Sandbox.sandbox_path}}.
|
||||
```
|
||||
|
||||
<Info>
|
||||
`file_name` 变量还包含文件扩展名(例如 `data.csv`)。
|
||||
</Info>
|
||||
146
zh/use-dify/publish/publish-to-marketplace.mdx
Normal file
146
zh/use-dify/publish/publish-to-marketplace.mdx
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: "发布到市场"
|
||||
sidebarTitle: "市场"
|
||||
description: "将你的工作流发布到 Dify 市场,与全世界分享"
|
||||
icon: "store"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/publish/publish-to-marketplace)。</Note>
|
||||
|
||||
将你的工作流和对话流应用作为模板发布到 Dify 市场,让其他 Dify 用户可以发现和使用。如果你已加入 [Affiliate Program](https://dify.ai/affiliate-program),还可以从模板中获得收益。
|
||||
|
||||
## 提交模板
|
||||
|
||||
要发布模板,需要先提交审核。审核通过后,模板将在市场上架。
|
||||
|
||||
有两种提交方式:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="从 Dify Studio">
|
||||
在画布上,点击**发布** > **发布到市场**。
|
||||
|
||||
这将跳转到 [Creators Platform](),你可以在此填写模板详情并提交审核。
|
||||
</Tab>
|
||||
<Tab title="在 Creators Platform">
|
||||
导出你的应用,然后前往 [Creators Platform]() 上传导出文件。填写模板详情并提交审核。
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 模板撰写指南
|
||||
|
||||
### 语言要求
|
||||
|
||||
保持模板库的一致性和可搜索性。
|
||||
|
||||
**以下字段必须使用英文撰写**:
|
||||
|
||||
- Template name(模板名称)
|
||||
- Overview(概述)
|
||||
- Setup steps(设置步骤)
|
||||
|
||||
**在工作流内部,你可以使用任何语言(如中文)来编写**:
|
||||
|
||||
- 节点名称
|
||||
- 提示词 / 系统消息
|
||||
- 展示给终端用户的消息
|
||||
|
||||
如果你的模板主要面向非英语用户,可以在标题中添加标签。例如:
|
||||
Stock Investment Analysis Copilot [ZH]。
|
||||
|
||||
### Template Name & Icon
|
||||
|
||||
仅从名称,用户就应该知道它在哪里运行以及做什么。
|
||||
|
||||
- Use a short English phrase, typically 3-7 words.
|
||||
- Recommended pattern: [Channel / target] + [core task], for example:
|
||||
- WeChat Customer Support Bot
|
||||
- CSV Data Analyzer with Natural Language
|
||||
- Internal Docs Q&A Assistant
|
||||
- GitHub Issue Triage Agent
|
||||
- Include keywords users might search for: channel names (Slack, WeChat, Email, Notion) and task names (Summarizer, Assistant, Generator, Bot).
|
||||
|
||||
### Categories
|
||||
|
||||
帮助用户在浏览或按分类筛选时发现你的模板。
|
||||
|
||||
- 仅选择 1-3 个最能描述你模板的分类。
|
||||
- 不要为了增加曝光而勾选所有分类。
|
||||
|
||||
### Language
|
||||
|
||||
帮助用户通过语言筛选发现你的模板。
|
||||
|
||||
- 选择你的模板在实际使用中所面向的语言。
|
||||
- 这里指的是模板用例、输入或输出的语言——**而非**标题或概述的语言(这些必须使用英文)。
|
||||
|
||||
### Overview
|
||||
|
||||
用 2-4 句英文说明它做什么以及面向谁。
|
||||
|
||||
<info>你无需在此列出先决条件、输入或输出。</info>
|
||||
|
||||
**推荐结构**
|
||||
|
||||
1. 第 1 句:它做什么
|
||||
一句话概括主要功能。
|
||||
2. 第 2-3 句:面向谁、什么场景
|
||||
典型用户角色或场景(客服团队、营销人员、创始人、个人知识工作者等)。
|
||||
|
||||
<Accordion title="Example: Description for Stock Investment Analysis Copilot">
|
||||
|
||||
This template creates a stock investment analysis copilot that uses Yahoo Finance tools to fetch news, analytics, and ticker data for any listed company.
|
||||
|
||||
It helps investors and analysts quickly generate structured research summaries, compare companies, and prepare reports without manually switching between multiple finance websites.
|
||||
|
||||
</Accordion>
|
||||
|
||||
### Setup Steps
|
||||
|
||||
将 Setup steps 写成 Markdown 编号列表(1., 2., 3.),每一步用简短的一句话,以动词开头。
|
||||
|
||||
新用户只需按照这些步骤操作,即可在几分钟内让模板运行起来。
|
||||
|
||||
**撰写原则**
|
||||
|
||||
1. 按照实际设置顺序,通常为:
|
||||
1. Use/import the template
|
||||
2. Connect accounts / add API keys
|
||||
3. Connect data sources (docs, databases, sheets, etc.)
|
||||
4. Optional customization (assistant name, tone, filters)
|
||||
5. Activate the workflow and run a test
|
||||
|
||||
2. 每一步应回答:
|
||||
- 在 UI 中点击哪里
|
||||
- 需要配置或填写什么
|
||||
|
||||
3. 目标 3-8 步。太少显得不完整,太多显得令人生畏。
|
||||
|
||||
<Accordion title="Example: Setup Steps for Stock Investment Analysis Copilot (Yahoo Finance tools) ">
|
||||
1. Click **Use template** to copy the "Investment Analysis Copilot (Yahoo Finance)" agent into your workspace.
|
||||
|
||||
2. Go to **Settings → Model provider** and add your LLM API key. For example, OpenAI, Anthropic, or another supported provider.
|
||||
|
||||
3. Open the agent's **Orchestrate** page and make sure the Yahoo Finance tools are enabled in the **Tools** section:
|
||||
- `yahoo Analytics`
|
||||
- `yahoo News`
|
||||
- `yahoo Ticker`
|
||||
|
||||
4. (Optional) Customize the analysis style:
|
||||
- In the **INSTRUCTIONS** area, adjust the system prompt to match your target users. For example, tone, report length, preferred language, or risk preference.
|
||||
- Update the suggested questions in the **Debug & Preview** panel if you want different example queries.
|
||||
|
||||
5. Click **Publish** to make the agent available, then use the preview panel to test it:
|
||||
- Enter a company name or ticker (e.g., `Nvidia`, `AAPL`, `TSLA`).
|
||||
- Confirm that the copilot calls the Yahoo Finance tools and returns a structured investment analysis report.
|
||||
</Accordion>
|
||||
|
||||
### 提交前快速检查清单
|
||||
|
||||
- 标题是一个简短的英文短语,能清楚地说明它在哪里运行、做什么。
|
||||
- Overview 用 2-4 句英文解释价值和典型用例。
|
||||
- 仅选择了 1-3 个相关分类。
|
||||
- Setup steps 是清晰的编号列表。
|
||||
- 工作流内部的文本和提示词使用了面向目标用户的适当语言。
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
title: "管理应用"
|
||||
description: "组织、维护和共享你的 AI 应用"
|
||||
icon: "grid-2"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/workspace/app-management)。</Note>
|
||||
|
||||
|
||||
良好的应用管理对高效的AI开发至关重要。Dify提供了全面的工具来组织、共享和维护你在整个生命周期中的应用程序。
|
||||
良好的应用管理对高效的 AI 开发至关重要。Dify 提供了全面的工具来组织、共享和维护你在整个生命周期中的应用。
|
||||
|
||||
## 应用组织
|
||||
|
||||
@@ -18,7 +18,7 @@ icon: "grid-2"
|
||||
创建变体或将现有应用作为新项目的模板使用
|
||||
</Card>
|
||||
<Card title="导入与导出" icon="arrows-exchange">
|
||||
使用Dify的领域特定语言格式在工作区之间共享应用
|
||||
使用 Dify 的 DSL 格式在工作区之间共享应用
|
||||
</Card>
|
||||
<Card title="生命周期管理" icon="recycle">
|
||||
在不再需要时安全删除应用
|
||||
@@ -30,18 +30,18 @@ icon: "grid-2"
|
||||
通过清晰、描述性的信息保持你的应用井然有序:
|
||||
|
||||
<Frame>
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/management/63a449e9a8ae337b9c067165d1674a45.png" alt="Edit App Info interface" />
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/management/63a449e9a8ae337b9c067165d1674a45.png" alt="编辑应用信息界面" />
|
||||
</Frame>
|
||||
|
||||
<Steps>
|
||||
<Step title="访问应用设置">
|
||||
点击应用程序左上角的"编辑信息"。
|
||||
点击应用左上角的"编辑信息"。
|
||||
</Step>
|
||||
|
||||
|
||||
<Step title="更新详细信息">
|
||||
修改图标、名称或描述以更好地反映应用的用途。
|
||||
</Step>
|
||||
|
||||
|
||||
<Step title="考虑你的团队">
|
||||
使用能帮助团队成员理解应用功能的名称和描述。
|
||||
</Step>
|
||||
@@ -56,7 +56,7 @@ icon: "grid-2"
|
||||
复制非常适合创建变体或基于现有工作开始新项目:
|
||||
|
||||
**何时复制:**
|
||||
- 创建具有不同提示词或模型的A/B测试版本
|
||||
- 创建具有不同提示词或模型的 A/B 测试版本
|
||||
- 为不同受众或用例调整应用
|
||||
- 基于成功模式开始新项目
|
||||
- 在重大更改之前创建备份
|
||||
@@ -69,58 +69,68 @@ icon: "grid-2"
|
||||
|
||||
## 应用导出和导入
|
||||
|
||||
Dify的领域特定语言格式让你可以在工作区和团队之间共享应用:
|
||||
Dify 的 DSL(Domain Specific Language)格式让你可以在工作区和团队之间共享应用:
|
||||
|
||||
<Frame>
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/management/544c18d770e230db93d6756bba98d8a7.png" alt="Export DSL interface" />
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/management/544c18d770e230db93d6756bba98d8a7.png" alt="导出 DSL 界面" />
|
||||
</Frame>
|
||||
|
||||
### 导出应用程序
|
||||
### 导出应用
|
||||
|
||||
**两种导出方式:**
|
||||
1. **从Studio页面** - 在应用菜单中点击"导出DSL"
|
||||
2. **从编排页面** - 点击左上角的"导出DSL"
|
||||
1. **从 Studio 页面** - 在应用菜单中点击"导出"
|
||||
2. **从编排页面** - 点击左上角的"导出"
|
||||
|
||||
**导出格式:**
|
||||
|
||||
| 运行时 | 格式 | 内容 |
|
||||
|:--------|:-------|:---------|
|
||||
| 沙盒运行时 | `.zip` | DSL 文件 + 文件系统中的资源文件 |
|
||||
| 经典运行时 | `.yml` | 仅 DSL 文件 |
|
||||
|
||||
|
||||
**导出内容包括:**
|
||||
- 应用配置和元数据
|
||||
- 工作流编排和节点设置
|
||||
- 模型参数和提示词模板
|
||||
- 知识库连接(不包括数据本身)
|
||||
- 文件系统中的资源文件(仅沙盒运行时工作流)
|
||||
|
||||
**不导出的内容:**
|
||||
- 第三方工具的API密钥(安全措施)
|
||||
- 第三方工具的 API 密钥(安全措施)
|
||||
- 实际知识库内容
|
||||
- 使用日志和分析数据
|
||||
- LLM 在执行过程中生成的产物(在沙盒运行时工作流中)
|
||||
|
||||
<Warning>
|
||||
如果你的应用使用Secret类型的环境变量,系统会询问你是否要将它们包含在导出中。请小心处理敏感信息。
|
||||
如果你的应用使用 Secret 类型的环境变量,系统会询问你是否要将它们包含在导出中。请小心处理敏感信息。
|
||||
</Warning>
|
||||
|
||||
<Frame>
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/management/25ce002ef7f0392fc6b3b6975ae137ec.png" alt="Secret variables export prompt" />
|
||||
<img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/management/25ce002ef7f0392fc6b3b6975ae137ec.png" alt="Secret 变量导出提示" />
|
||||
</Frame>
|
||||
|
||||
### 导入应用程序
|
||||
### 导入应用
|
||||
|
||||
<Frame>
|
||||
<img src="https://assets-docs.dify.ai/2024/11/487d2c1cc8b86666feb35ea8a346c053.png" alt="Import application interface" />
|
||||
<img src="https://assets-docs.dify.ai/2024/11/487d2c1cc8b86666feb35ea8a346c053.png" alt="导入应用界面" />
|
||||
</Frame>
|
||||
|
||||
**导入流程:**
|
||||
1. 上传你的DSL文件(YAML格式)
|
||||
1. 上传 `.zip` 文件(沙盒运行时工作流)或 `.yml` 文件(其他应用)
|
||||
2. 系统检查版本兼容性
|
||||
3. 如果DSL版本低于当前平台,会出现警告
|
||||
3. 如果 DSL 版本低于当前平台,会出现警告
|
||||
4. 使用文件中的所有配置创建应用
|
||||
|
||||
**版本兼容性:**
|
||||
- **SaaS用户**:DSL文件始终是最新版本
|
||||
- **SaaS 用户**:DSL 文件始终是最新版本
|
||||
- **社区用户**:可能需要升级以避免兼容性问题
|
||||
|
||||
<Info>
|
||||
Dify DSL是AI应用YAML格式捕获完整的应用配置。
|
||||
Dify DSL 是 AI 应用工程标准(v0.6+),以 YAML 格式捕获完整的应用配置。
|
||||
</Info>
|
||||
|
||||
## 安全的应用删除
|
||||
## 安全删除应用
|
||||
|
||||
在删除应用之前,了解其影响:
|
||||
|
||||
@@ -128,27 +138,27 @@ Dify DSL是AI应用YAML格式捕获完整的应用配置。
|
||||
- 所有应用配置和提示词
|
||||
- 工作流编排和设置
|
||||
- 使用日志和分析
|
||||
- 已发布的网页应用和API访问
|
||||
- 已发布的 Web 应用和 API 访问
|
||||
- 所有用户对话和数据
|
||||
|
||||
**对用户的影响:**
|
||||
- 已发布的网页应用立即停止工作
|
||||
- API调用开始返回错误
|
||||
- 已发布的 Web 应用立即停止工作
|
||||
- API 调用开始返回错误
|
||||
- 所有现有用户会话被终止
|
||||
|
||||
<Steps>
|
||||
<Step title="考虑替代方案">
|
||||
你可以复制应用进行备份,或者只是取消发布而不是删除吗?
|
||||
</Step>
|
||||
|
||||
<Step title="通知利益相关者">
|
||||
|
||||
<Step title="通知相关人员">
|
||||
让团队成员和用户知道计划的删除。
|
||||
</Step>
|
||||
|
||||
|
||||
<Step title="如需要则导出">
|
||||
在删除前为有价值的配置创建DSL备份。
|
||||
在删除前为有价值的配置创建 DSL 备份。
|
||||
</Step>
|
||||
|
||||
|
||||
<Step title="确认删除">
|
||||
点击"删除"并确认——此操作无法撤销。
|
||||
</Step>
|
||||
@@ -157,22 +167,3 @@ Dify DSL是AI应用YAML格式捕获完整的应用配置。
|
||||
<Warning>
|
||||
应用删除是永久性的且无法撤销。所有相关数据、日志和用户访问权限将立即丢失。
|
||||
</Warning>
|
||||
|
||||
## 最佳实践
|
||||
|
||||
**命名约定:**
|
||||
- 使用能解释应用用途的描述性名称
|
||||
- 在相关时包含版本号或状态指示器
|
||||
- 考虑团队范围的命名标准以保持一致性
|
||||
|
||||
**组织技巧:**
|
||||
- 定期清理测试和未使用的应用
|
||||
- 对类似应用类型使用一致的图标和描述
|
||||
- 记录重大配置更改
|
||||
- 将生产应用与实验应用分开
|
||||
|
||||
**协作:**
|
||||
- 与团队成员共享DSL文件以进行知识传递
|
||||
- 使用复制创建团队模板
|
||||
- 在重大更改前导出重要配置
|
||||
- 在共享应用时考虑访问权限
|
||||
|
||||
61
zh/use-dify/workspace/tools.mdx
Normal file
61
zh/use-dify/workspace/tools.mdx
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: 工具
|
||||
icon: "wrench"
|
||||
---
|
||||
|
||||
<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/workspace/tools)。</Note>
|
||||
|
||||
Dify 工具使 LLM 能够与外部服务和 API 交互,从而访问实时数据并执行操作(如网页搜索、数据库查询或内容处理)。
|
||||
|
||||
每个工具都有清晰的接口:它接受什么输入、执行什么操作以及返回什么输出。这有助于 LLM 根据用户请求判断何时以及如何调用工具。
|
||||
|
||||
工具可在以下场景中使用:
|
||||
|
||||
- 工作流 / 对话流应用(作为独立的工具节点,或在 LLM / Agent 节点内使用)
|
||||
|
||||
- Agent 应用
|
||||
|
||||
所有工具都可以在**工具**页面中管理。
|
||||
|
||||
<Frame caption=""><img src="/images/dify_tools.png" alt="Dify 工具"/></Frame>
|
||||
|
||||
## 工具类型
|
||||
|
||||
<Tabs>
|
||||
<Tab title="插件工具">
|
||||
|
||||
[插件](/zh/use-dify/workspace/plugins)工具是由 Dify 和社区提供的即用型集成,涵盖常用工具和热门第三方服务。
|
||||
|
||||
除了开箱即用的内置插件工具(如 CurrentTime),你还可以在 [Dify 市场](https://marketplace.dify.ai/) 中探索和安装更多工具。
|
||||
|
||||
**管理授权**
|
||||
|
||||
部分插件工具(如 Google 和 GitHub)在使用前需要身份认证——如 API 密钥或 OAuth。
|
||||
|
||||
你可以在**工具**或**插件**页面管理工作区级别的凭据,也可以直接在应用或节点的工具设置中管理。
|
||||
|
||||
</Tab>
|
||||
<Tab title="自定义工具">
|
||||
|
||||
使用标准 OpenAPI (Swagger) 规范将外部服务集成为自定义工具。适合将 Dify 连接到内部系统或未提供插件的第三方服务。
|
||||
|
||||
粘贴你的 OpenAPI schema、从 URL 导入,或从提供的示例开始。Dify 会解析规范并自动生成工具接口。
|
||||
|
||||
</Tab>
|
||||
<Tab title="工作流工具">
|
||||
|
||||
将任何以用户输入节点开头的工作流转变为可复用的工具。不支持对话流。
|
||||
|
||||
这使你可以将复杂的多步骤逻辑封装为单一功能,方便在不同 Dify 应用中复用。
|
||||
|
||||
<Frame caption=""><img src="/images/workflow_as_tool.png" alt="工作流作为工具"/></Frame>
|
||||
|
||||
</Tab>
|
||||
<Tab title="MCP 工具">
|
||||
|
||||
[模型上下文协议 (MCP)](https://modelcontextprotocol.io/) 让 AI 应用可以通过标准接口连接外部数据和工具。MCP 服务器将外部资源——如数据库、文件系统或 API——封装起来,并通过该协议让 AI 应用访问。
|
||||
|
||||
连接到 MCP 服务器后,你可以将这些外部资源作为工具导入 Dify,并随时刷新列表以获取最新更新。
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
Reference in New Issue
Block a user