diff --git a/docs.json b/docs.json index 1045e77f..b3571fce 100644 --- a/docs.json +++ b/docs.json @@ -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", diff --git a/en/use-dify/nodes/question-classifier.mdx b/en/use-dify/nodes/question-classifier.mdx index 78c4d82b..29084066 100644 --- a/en/use-dify/nodes/question-classifier.mdx +++ b/en/use-dify/nodes/question-classifier.mdx @@ -1,5 +1,5 @@ --- -title: "Classifier" +title: "Question Classifier" description: "Intelligently categorize user input to route workflow paths" icon: "sitemap" --- diff --git a/en/use-dify/workspace/tools.mdx b/en/use-dify/workspace/tools.mdx index 390ef5e7..b0323ae7 100644 --- a/en/use-dify/workspace/tools.mdx +++ b/en/use-dify/workspace/tools.mdx @@ -22,7 +22,7 @@ All your tools can be managed on the **Tools** page. - [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/). diff --git a/zh/use-dify/build/collaboration.mdx b/zh/use-dify/build/collaboration.mdx new file mode 100644 index 00000000..5d6f766a --- /dev/null +++ b/zh/use-dify/build/collaboration.mdx @@ -0,0 +1,21 @@ +--- +title: 与工作区成员协作 +sidebarTitle: 协作 +description: 实时协作构建工作流 +icon: "users" +--- + + ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/build/collaboration)。 + +拥有编辑权限及以上的工作区成员可以同时编辑同一个工作流。右键点击画布并选择**添加评论**来分享想法。 + +要更快地添加多条评论,按 `C` 键进入评论模式。如果你在评论中 `@` 提及其他人,他们将收到邮件通知。 + + + 对于自托管部署,协作功能默认关闭。要启用它,请设置以下环境变量: + + - `ENABLE_COLLABORATION_MODE` = `true` + - `SERVER_WORKER_CLASS` = `geventwebsocket.gunicorn.workers.GeventWebSocketWorker` + + 使用自定义域名部署时,还需将 `NEXT_PUBLIC_SOCKET_URL` 设置为你的 WebSocket 服务器 URL。 + diff --git a/zh/use-dify/build/file-system.mdx b/zh/use-dify/build/file-system.mdx new file mode 100644 index 00000000..1fab4e71 --- /dev/null +++ b/zh/use-dify/build/file-system.mdx @@ -0,0 +1,108 @@ +--- +title: 文件系统 +icon: "folder-tree" +keyword: skills, skill +--- + + ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/build/file-system)。 + +每个使用[沙盒运行时](/zh/use-dify/build/runtime#沙盒运行时)的应用都有一个文件系统,LLM 可以在其中按需读取、写入和处理文件。 + +文件系统包含两类文件: + +- **资源**:你提供的持久文件,例如技能(Skill)。 + +- **产物**:LLM 在每次运行期间生成的临时文件。 + +文件系统 + +## 资源 + +资源是你为工作流创建或导入的文件。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)——并指定使用的时机和方式。 + +Skill + +#### 在提示词中引用 Skill + +在提示词编辑器中输入 `/`,然后从**文件**选项卡中选择一个 Skill 文件夹。 + +LLM 会先读取 Skill 的 frontmatter(名称、描述和元数据),仅在需要时才加载完整内容。这节省了 Token 并提高了效率,尤其是在使用多个 Skill 时。 + +## 产物 + +产物是 LLM 在执行过程中生成的文件——报告、图片或其他任何输出。LLM 对产物拥有完整的读写权限。 + +你可以在 **Skills** 选项卡或画布底部的**变量检查**面板中预览和下载产物。 + +### 产物生命周期 + +产物在测试和生产环境中具有不同的生命周期。导出应用时不包含产物。 + + + + 产物在多次测试运行之间持久保存。要清除它们,请点击**变量检查**面板中的**全部重置**。 + + + 产物的范围限定在每次运行中,运行完成后自动清除。 + + + + + 你可能还会在**产物**下看到 `.bashrc` 和 `.profile` 等系统文件。这些是沙盒环境的一部分,在多次运行之间持久保存。 + + +### 向终端用户输出产物 + +产物存储在沙盒环境中,无法直接暴露给终端用户。要输出产物,你需要通过另一个 Agent 节点来提取: + +1. 在生成文件的节点下游添加一个 Agent 节点。 + +2. 关闭 **Agent 模式**并启用**结构化输出**。 + +3. 添加一个文件类型的结构化输出变量。 + +4. 通过**添加对话历史**导入上游 Agent 的对话历史。这让 LLM 可以定位文件路径。 + +5. 在用户消息中,指示模型提取并输出文件(例如"输出生成的 PDF 文件")。 + +6. 在回答节点或输出节点中,引用 Agent 节点的文件输出变量。 + +## 支持的文件类型和操作 + +文件系统中的所有文件都可以下载。部分文件还可以预览或编辑。 + + + + + 只有资源可以编辑。 + + - **文本**: TXT, MD, MDX, HTML, HTM, XML, CSV + - **代码**: Python, JavaScript, JSON, YAML 以及所有 [Monaco Editor](https://microsoft.github.io/monaco-editor/) 支持的语言 + - **配置**: PROPERTIES, VTT + + + - **文档**: PDF, DOCX, DOC, XLSX, XLS, PPTX, PPT, EPUB + - **图片**: JPG, JPEG, PNG, GIF, WEBP, SVG + - **数据**: CSV, TSV, SQLite (.sqlite, .db) - 仅表格预览 + - **邮件**: EML, MSG + + + - **音频**: MP3, M4A, WAV, WEBM, AMR + - **视频**: MP4, MOV, MPEG, MPGA + - **其他**: 自定义文件扩展名 + + diff --git a/zh/use-dify/build/runtime.mdx b/zh/use-dify/build/runtime.mdx new file mode 100644 index 00000000..3d4969b3 --- /dev/null +++ b/zh/use-dify/build/runtime.mdx @@ -0,0 +1,72 @@ +--- +title: 运行时 +icon: "cube" +--- + + ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/build/runtime)。 + +运行时是工作流运行的执行环境,它设定了 LLM 可以访问和执行的边界。 + +Dify 提供两种运行时环境:**沙盒运行时**和**经典运行时**,各自针对不同的使用场景进行了优化。 + +## 概览 + + + + + **适用场景:** 需要 LLM 自主解决问题的复杂任务。功能更强大,但速度更慢、Token 消耗更高。 + + + 沙盒运行时使 LLM 能够在隔离环境中**执行命令**。你能在终端中用命令完成的任何操作,它们都能做到: + + - **运行脚本和程序** - 执行代码来处理数据、生成输出或执行任意计算 + + - **按需安装所需工具** - 使用 pip 或其他包管理器按需下载库和工具 + + - **访问外部资源** - 从 URL 获取文件、克隆仓库或从外部来源检索数据 + + - **处理文件** - 访问[文件系统](/zh/use-dify/build/file-system)中的资源(如[技能(Skill)](/zh/use-dify/build/file-system#技能skill)),跨格式处理文件,并使用脚本和已安装工具生成多模态产物 + + + 在沙盒运行时中,Agent 节点同时承担了 LLM 和 Agent 的角色。 + + 对于不需要这些高级功能的简单快速任务,可以关闭 **[Agent 模式](/zh/use-dify/nodes/agent#启用命令执行agent-模式)** 来获得更快的响应和更低的 Token 成本。 + + + **LLM 成为真正的 Agent**。只要模型具有强大的工具调用和推理能力,它就能自主决定运行什么命令并执行它们来完成任务。 + + LLM 的能力越强,就越需要在沙盒中运行。隔离环境在赋予它们足够自由度的同时,确保了安全运行。 + + + 默认沙盒提供商: + + - Dify Cloud 使用 E2B。 + + - 自托管部署使用 SSH VM。 + + 在**设置** > **沙盒提供商**中选择和配置其他提供商。 + + + + + + + **适用场景:** 简单快速的任务。功能较少,但速度更快、效率更高。 + + + 在经典运行时中,LLM 做它们最擅长的事:分析信息、生成文本、推理问题,并智能地使用预配置的工具来完成任务。 + + 可以把它想象成给某人一套特定的工具包——他们很有能力,但**仅限于你提供的工具范围**。 + + + + +## 快速对比 + +| 维度 | 沙盒运行时 | 经典运行时 | +|:------------------------------|:-------------------------------------|:------------------------------------| +| **适用场景** | 复杂的自主问题解决 | 简单、明确的任务 | +| **LLM 自主性** | 运行所需的任何命令 | 使用你配置的工具 | +| **文件系统** | ✅ | ❌ | +| **技能(Skill)** | ✅ | ❌ | +| **应用导出格式** | `.zip`(DSL + 资源文件) | `.yml`(DSL 文件) | diff --git a/zh/use-dify/nodes/agent.mdx b/zh/use-dify/nodes/agent.mdx index 0bfc77c2..8d4cd327 100644 --- a/zh/use-dify/nodes/agent.mdx +++ b/zh/use-dify/nodes/agent.mdx @@ -1,117 +1,383 @@ --- -title: "智能代理" +title: "Agent" +description: "赋予 LLM 自主控制工具的能力,以执行复杂任务" icon: "robot" --- ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考[英文原版](/en/use-dify/nodes/agent)。 - -智能代理节点让你的大型语言模型自主控制工具,使其能够迭代决定使用哪些工具以及何时使用它们。智能代理不是预先规划每一步,而是动态地推理问题,根据需要调用工具来完成复杂任务。 - - - Agent node interface - - -## 智能代理策略 - -智能代理策略定义了你的智能代理如何思考和行动。选择最适合你的模型能力和任务需求的方法。 - - - Agent strategies selection - - - - 使用大型语言模型的原生函数调用能力,通过工具参数直接传递工具定义。大型语言模型使用其内置机制决定何时以及如何调用工具。 - - 最适合像 GPT-4、Claude 3.5 和其他具有强大函数调用支持的模型。 + + + 在[沙盒运行时](/zh/use-dify/build/runtime#沙盒运行时)中,Agent 节点赋予 LLM 自主执行命令的能力:调用工具、运行脚本、访问外部资源、操作[文件系统](/zh/use-dify/build/file-system)以及创建多模态输出。 + + 这也带来了权衡:更长的响应时间和更高的 Token 消耗。要更快更高效地处理简单任务,可以关闭 **[Agent 模式](#启用命令执行agent-模式)** 来禁用这些功能。 + + ## 选择模型 + + 从你已配置的提供商中选择最适合任务的模型。 + + 选择后,你可以调整模型参数来控制其生成响应的方式。可用的参数和预设因模型而异。 + + ## 编写提示词 + + 指导模型如何处理输入和生成响应。输入 `/` 可插入变量或文件系统中的资源,输入 `@` 可引用 [Dify 工具](/zh/use-dify/workspace/tools)。 + + 如果你不确定从哪里开始或想优化现有的提示词,可以试试我们的 AI 辅助提示词生成器。 + + + + 提示词生成器图标 + + + 提示词生成器界面 + + + + ### 指定指令和消息 + + 定义系统指令并点击**添加消息**来添加用户/助手消息。它们会按顺序在单个提示词中发送给模型。 + + 可以把它想象成直接与模型对话: + + - **系统指令**设定模型响应的规则——角色、语气和行为准则。 + + - **用户消息**是你发送给模型的内容——问题、请求或要模型完成的任务。 + + - **助手消息**是模型的回复。 + + ### 将输入与规则分离 + + 在系统指令中定义角色和规则,然后在用户消息中传递实际的任务输入。例如: + + + ```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 节点导入对话历史。这让模型了解上游发生了什么,并从该节点中断的地方继续。 + + 对话历史包括**用户**消息、**助手**消息和**工具**消息。你可以在 Agent 节点的 `context` 输出变量中查看。 + + + 系统指令不包含在内,因为它们是节点特定的。 + + + 这在串联多个 Agent 节点时非常有用: + + - 不导入对话历史时,下游节点只接收上游节点的最终输出,不知道它是如何得出结论的。 + + - 导入对话历史后,它可以看到整个过程:用户问了什么、调用了哪些工具、返回了什么结果、模型是如何推理的。 + + **在自动添加的用户消息中指定你的新任务。** 导入的历史会被添加到当前节点消息的前面,因此模型将其视为一个连续的对话。由于导入的历史通常以助手消息结束,模型需要一条后续的用户消息来知道下一步该做什么。 + + + + 假设两个 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 确切地知道哪些文件存在以及它们的位置,因此可以直接将它们嵌入报告。 + + + + + + 在示例 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 从导入的对话历史中定位文件路径,并将其作为文件变量输出。然后你可以在回答节点或输出节点中引用该变量,将文件交付给终端用户。 + + + + ### 使用 Jinja2 创建动态提示词 + + 使用 [Jinja2](https://jinja.palletsprojects.com/en/stable/) 模板在提示词中添加条件、循环和其他逻辑。例如,根据变量值定制不同的指令。 + + + ```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 %} + ``` + + + 默认情况下,你需要将所有可能的指令发送给模型,描述条件,然后让模型自行决定遵循哪些——这种方法通常不可靠。 + + 使用 Jinja2 模板,只有符合定义条件的指令会被发送,确保行为可预测并减少 Token 使用。 + + ## 启用命令执行(Agent 模式) + + 开启 **Agent 模式**,让模型使用内置的 bash 工具在沙盒运行时中执行命令。 + + 这是所有高级功能的基础:当模型调用其他 Dify 工具、执行文件操作、运行脚本或访问外部资源时,它都是通过调用 bash 工具来执行底层命令。 + + 对于不需要这些功能的简单快速任务,可以关闭 **Agent 模式** 以获得更快的响应和更低的 Token 成本。 + + **调整最大迭代次数** + + **高级设置**中的**最大迭代次数**限制了模型对单次请求可以重复其推理-行动循环(思考、调用工具、处理结果)的次数。 + + 对于需要多次工具调用的复杂多步任务,增加此值。较高的值会增加延迟和 Token 成本。 + + ## 启用对话记忆(仅对话流) + + + 记忆是节点特定的,不会在不同对话之间持久保存。 + + + 启用**记忆**以保留最近的对话,使 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。 + + + 对于不支持原生 JSON 的模型,Dify 会将 schema 包含在提示词中,但不保证严格遵循。 + + + 结构化输出 + + 1. 在**输出变量**旁,开启**结构化**开关。一个 `structured_output` 变量将出现在输出变量列表末尾。 + + 2. 点击**配置**,使用以下方法之一定义输出 schema。 + + - **可视化编辑器**:使用无代码界面定义简单结构。对应的 JSON schema 会自动生成。 + + - **JSON Schema**:直接编写 schema,适用于包含嵌套对象、数组或验证规则的复杂结构。 + + - **AI 生成**:用自然语言描述需求,让 AI 生成 schema。 + + - **JSON 导入**:粘贴一个现有的 JSON 对象,自动生成对应的 schema。 + + + 使用文件类型的结构化输出变量从沙盒中提取产物,使其可供终端用户使用。详见[向终端用户输出产物](/zh/use-dify/build/file-system#向终端用户输出产物)。 + + + ## 错误处理 + + 为临时问题(如网络波动)配置自动重试,并设置备用错误处理策略以在错误持续时保持工作流运行。 + + 错误处理 + - - - 使用结构化提示词来引导大型语言模型通过明确的推理步骤。遵循**思维 → 行动 → 观察**循环进行透明的决策制定。 - - 适用于可能没有原生函数调用能力的模型,或者当你需要明确推理轨迹时。 + + + 在经典运行时中,Agent 节点赋予 LLM 对工具的自主控制能力,使其能够迭代决定使用哪些工具以及何时使用。Agent 不是预先规划每一步,而是动态推理问题,根据需要调用工具来完成复杂任务。 + + + Agent node interface + + + ## Agent 策略 + + Agent 策略定义了 Agent 如何思考和行动。选择最适合你的模型能力和任务需求的方法。 + + + Agent strategies selection + + + + + 使用 LLM 的原生函数调用能力,通过 tools 参数直接传递工具定义。LLM 使用其内置机制决定何时以及如何调用工具。 + + 最适合 GPT-4、Claude 3.5 等具有强大函数调用支持的模型。 + + + + 使用结构化提示词引导 LLM 通过明确的推理步骤。遵循**思考 → 行动 → 观察**循环进行透明的决策。 + + 适用于可能没有原生函数调用能力的模型,或者当你需要明确的推理轨迹时。 + + + + + 从**市场 → Agent 策略**安装其他策略,或向[社区仓库](https://github.com/langgenius/dify-plugins)贡献自定义策略。 + + + + Function calling setup + + + ## 配置 + + ### 模型选择 + + 选择支持你所选 Agent 策略的 LLM。更强大的模型能更好地处理复杂推理,但每次迭代成本更高。如果使用函数调用策略,请确保你的模型支持函数调用。 + + ### 工具配置 + + 配置 Agent 可以访问的工具。每个工具需要: + + **授权** - 在工作区中配置的外部服务的 API 密钥和凭据 + + **描述** - 清楚说明工具的作用以及何时使用(这指导 Agent 的决策) + + **参数** - 工具接受的必需和可选输入,带有适当的验证 + + ### 指令和上下文 + + 使用自然语言指令定义 Agent 的角色、目标和上下文。使用 Jinja2 语法引用上游工作流节点的变量。 + + **查询**指定 Agent 应处理的用户输入或任务。这可以是来自先前工作流节点的动态内容。 + + + Agent configuration interface + + + ### 执行控制 + + **最大迭代次数**设置安全限制以防止无限循环。根据任务复杂性进行配置——简单任务需要 3-5 次迭代,而复杂研究可能需要 10-15 次。 + + **记忆**控制 Agent 使用 TokenBufferMemory 记住多少条先前消息。更大的记忆窗口提供更多上下文,但会增加 Token 成本。这使得对话连续性成为可能,用户可以引用之前的操作。 + + ### 工具参数自动生成 + + 工具可以将参数配置为**自动生成**或**手动输入**。自动生成的参数(`auto: false`)由 Agent 自动填充,而手动输入参数需要明确的值,这些值成为工具永久配置的一部分。 + + - - - 从**应用市场 → 智能代理策略**安装其他策略,或向[社区仓库](https://github.com/langgenius/dify-plugins)贡献自定义策略。 - - - - Function calling setup - - -## 配置 - -### 模型选择 - -选择支持你所选智能代理策略的大型语言模型。更强大的模型能更好地处理复杂推理,但每次迭代成本更高。如果使用函数调用策略,请确保你的模型支持函数调用。 - -### 工具配置 - -配置你的智能代理可以访问的工具。每个工具需要: - -**授权** - 在工作空间中配置的外部服务的 API 密钥和凭据 - -**描述** - 清楚说明工具的作用以及何时使用它(这指导智能代理的决策制定) - -**参数** - 工具接受的必需和可选输入,带有适当的验证 - -### 指令和上下文 - -使用自然语言指令定义智能代理的角色、目标和上下文。使用 Jinja2 语法引用上游工作流节点的变量。 - -**查询**指定智能代理应该处理的用户输入或任务。这可以是来自先前工作流节点的动态内容。 - - - Agent configuration interface - - -### 执行控制 - -**最大迭代次数**设置安全限制以防止无限循环。根据任务复杂性进行配置 - 简单任务需要 3-5 次迭代,而复杂研究可能需要 10-15 次。 - -**记忆**控制智能代理使用 TokenBufferMemory 记提供更多上下文,但会增加标记成本。这使得对话连续性成为可能,用户可以引用以前的行动。 - -### 工具参数自动生成 - -工具可以将参数配置为**自动生成**或**手动输入**。自动生成的参数(`auto: false`)由智能代理自动填充,而手动输入参数需要明确的值,这些值成为工具永久配置的一部分。 - -