diff --git a/conversion.log b/conversion.log
new file mode 100644
index 00000000..d8a08540
--- /dev/null
+++ b/conversion.log
@@ -0,0 +1,3 @@
+2025-03-31 11:58:54,955 - md-to-mdx - INFO - 处理文件: zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik.md
+2025-03-31 11:58:54,964 - md-to-mdx - INFO - 转换完成: zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik.mdx
+2025-03-31 11:58:54,964 - md-to-mdx - INFO - 已删除源文件: zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik.md
diff --git a/docs.json b/docs.json
index d1125c6d..623e581d 100644
--- a/docs.json
+++ b/docs.json
@@ -510,7 +510,8 @@
{
"group": "工作流",
"pages": [
- "zh-hans/guides/workflow/concepts",
+ "zh-hans/guides/workflow/readme",
+ "zh-hans/guides/workflow/key-concept",
"zh-hans/guides/workflow/variables",
{
"group": "节点说明",
@@ -543,7 +544,7 @@
"group": "异常处理",
"pages": [
"zh-hans/guides/workflow/error-handling/readme",
- "zh-hans/guides/workflow/error-handling/predefined-node-failure-logic",
+ "zh-hans/guides/workflow/error-handling/predefined-nodes-failure-logic",
"zh-hans/guides/workflow/error-handling/error-type"
]
},
@@ -558,7 +559,7 @@
"zh-hans/guides/workflow/debug-and-preview/history"
]
},
- "zh-hans/guides/workflow/application-publishing",
+ "zh-hans/guides/workflow/publish",
"zh-hans/guides/workflow/bulletin"
]
},
@@ -593,16 +594,44 @@
"zh-hans/guides/knowledge-base/metadata",
"zh-hans/guides/knowledge-base/integrate-knowledge-within-application",
"zh-hans/guides/knowledge-base/retrieval-test-and-citation",
+ "zh-hans/guides/knowledge-base/knowledge-request-rate-limit",
"zh-hans/guides/knowledge-base/connect-external-knowledge-base",
"zh-hans/guides/knowledge-base/api-documentation/external-knowledge-api-documentation"
]
- },
+ },
+ {
+ "group": "工具",
+ "pages": [
+ "zh-hans/guides/tools/readme",
+ "zh-hans/guides/tools/quick-tool-integration",
+ "zh-hans/guides/tools/advanced-tool-integration",
+ "zh-hans/guides/tools/tool-configuration/readme",
+ {
+ "group": "工具配置详情",
+ "pages": [
+ "zh-hans/guides/tools/tool-configuration/google",
+ "zh-hans/guides/tools/tool-configuration/bing",
+ "zh-hans/guides/tools/tool-configuration/searchapi",
+ "zh-hans/guides/tools/tool-configuration/stable-diffusion",
+ "zh-hans/guides/tools/tool-configuration/dall-e",
+ "zh-hans/guides/tools/tool-configuration/perplexity",
+ "zh-hans/guides/tools/tool-configuration/alphavantage",
+ "zh-hans/guides/tools/tool-configuration/youtube",
+ "zh-hans/guides/tools/tool-configuration/searxng",
+ "zh-hans/guides/tools/tool-configuration/serper",
+ "zh-hans/guides/tools/tool-configuration/siliconflow",
+ "zh-hans/guides/tools/tool-configuration/comfyui"
+ ]
+ }
+ ]
+ },
{
"group": "发布",
"pages": [
{
"group": "发布为公开 Web 站点",
"pages": [
+ "zh-hans/guides/application-publishing/launch-your-webapp-quickly/readme",
"zh-hans/guides/application-publishing/launch-your-webapp-quickly/web-app-settings",
"zh-hans/guides/application-publishing/launch-your-webapp-quickly/text-generator",
"zh-hans/guides/application-publishing/launch-your-webapp-quickly/conversation-application"
@@ -623,11 +652,14 @@
{
"group": "监测",
"pages": [
+ "zh-hans/guides/monitoring/README",
{
"group": "集成外部与 Ops 工具",
"pages": [
+ "zh-hans/guides/monitoring/integrate-external-ops-tools/readme",
"zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-langfuse",
- "zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-langsmith"
+ "zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-langsmith",
+ "zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik"
]
},
"zh-hans/guides/monitoring/analysis"
@@ -636,6 +668,7 @@
{
"group": "扩展",
"pages": [
+ "zh-hans/guides/tools/extensions/README",
{
"group": "API 扩展",
"pages": [
@@ -657,6 +690,7 @@
{
"group": "协同",
"pages": [
+ "zh-hans/guides/workspace/readme",
"zh-hans/guides/workspace/app",
"zh-hans/guides/workspace/invite-and-manage-members"
]
@@ -1343,6 +1377,190 @@
]
},
"redirects": [
+ {
+ "source": "zh-hans/getting-started/install-self-hosted",
+ "destination": "zh-hans/getting-started/install-self-hosted/readme"
+ },
+ {
+ "source": "zh-hans/guides/model-configuration",
+ "destination": "zh-hans/guides/model-configuration/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-orchestrate",
+ "destination": "zh-hans/guides/application-orchestrate/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-orchestrate/app-toolkits",
+ "destination": "zh-hans/guides/application-orchestrate/app-toolkits/readme"
+ },
+ {
+ "source": "zh-hans/guides/workflow",
+ "destination": "zh-hans/guides/workflow/readme"
+ },
+ {
+ "source": "zh-hans/guides/workflow/node",
+ "destination": "zh-hans/guides/workflow/node/start"
+ },
+ {
+ "source": "zh-hans/guides/workflow/error-handling",
+ "destination": "zh-hans/guides/workflow/error-handling/readme"
+ },
+ {
+ "source": "zh-hans/guides/workflow/debug-and-preview",
+ "destination": "zh-hans/guides/workflow/debug-and-preview/preview-and-run"
+ },
+ {
+ "source": "zh-hans/guides/workflow/debug-and-preview/yu-lan-yu-yun-hang",
+ "destination": "zh-hans/guides/workflow/debug-and-preview/preview-and-run"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base",
+ "destination": "zh-hans/guides/knowledge-base/readme"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents",
+ "destination": "zh-hans/guides/knowledge-base/knowledge-base-creation/introduction"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data",
+ "destination": "zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/readme"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance",
+ "destination": "zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/introduction"
+ },
+ {
+ "source": "zh-hans/guides/tools",
+ "destination": "zh-hans/guides/tools/readme"
+ },
+ {
+ "source": "zh-hans/guides/tools/tool-configuration",
+ "destination": "zh-hans/guides/tools/tool-configuration/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-publishing",
+ "destination": "zh-hans/guides/application-publishing/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-publishing/launch-your-webapp-quickly",
+ "destination": "zh-hans/guides/application-publishing/launch-your-webapp-quickly/readme"
+ },
+ {
+ "source": "zh-hans/guides/annotation",
+ "destination": "zh-hans/guides/annotation/readme"
+ },
+ {
+ "source": "zh-hans/guides/monitoring",
+ "destination": "zh-hans/guides/monitoring/readme"
+ },
+ {
+ "source": "zh-hans/guides/monitoring/integrate-external-ops-tools",
+ "destination": "zh-hans/guides/monitoring/integrate-external-ops-tools/readme"
+ },
+ {
+ "source": "zh-hans/guides/extension",
+ "destination": "zh-hans/guides/extension/readme"
+ },
+ {
+ "source": "zh-hans/guides/extension/api-based-extension",
+ "destination": "zh-hans/guides/extension/api-based-extension/readme"
+ },
+ {
+ "source": "zh-hans/guides/extension/code-based-extension",
+ "destination": "zh-hans/guides/extension/code-based-extension/readme"
+ },
+ {
+ "source": "zh-hans/guides/workspace",
+ "destination": "zh-hans/guides/workspace/readme"
+ },
+ {
+ "source": "zh-hans/guides/management",
+ "destination": "zh-hans/guides/management/readme"
+ },
+ {
+ "source": "zh-hans/workshop/basic",
+ "destination": "zh-hans/workshop/readme"
+ },
+ {
+ "source": "zh-hans/workshop/intermediate",
+ "destination": "zh-hans/workshop/intermediate/readme"
+ },
+ {
+ "source": "zh-hans/plugins/quick-start",
+ "destination": "zh-hans/plugins/quick-start/readme"
+ },
+ {
+ "source": "zh-hans/plugins/quick-start/develop-plugins",
+ "destination": "zh-hans/plugins/quick-start/develop-plugins/readme"
+ },
+ {
+ "source": "zh-hans/plugins/quick-start/develop-plugins/model-plugin",
+ "destination": "zh-hans/plugins/quick-start/develop-plugins/model-plugin/readme"
+ },
+ {
+ "source": "zh-hans/plugins/schema-definition",
+ "destination": "zh-hans/plugins/schema-definition/readme"
+ },
+ {
+ "source": "zh-hans/plugins/schema-definition/model",
+ "destination": "zh-hans/plugins/schema-definition/model/readme"
+ },
+ {
+ "source": "zh-hans/plugins/schema-definition/reverse-invocation-of-the-dify-service",
+ "destination": "zh-hans/plugins/schema-definition/reverse-invocation-of-the-dify-service/readme"
+ },
+ {
+ "source": "zh-hans/plugins/best-practice",
+ "destination": "zh-hans/plugins/best-practice/develop-a-slack-bot-plugin"
+ },
+ {
+ "source": "zh-hans/plugins/publish-plugins",
+ "destination": "zh-hans/plugins/publish-plugins/README"
+ },
+ {
+ "source": "zh-hans/plugins/publish-plugins/publish-to-dify-marketplace",
+ "destination": "zh-hans/plugins/publish-plugins/publish-to-dify-marketplace/README"
+ },
+ {
+ "source": "zh-hans/development/backend",
+ "destination": "zh-hans/development/backend/readme"
+ },
+ {
+ "source": "zh-hans/development/backend/sandbox",
+ "destination": "zh-hans/development/backend/sandbox/readme"
+ },
+ {
+ "source": "zh-hans/development/models-integration",
+ "destination": "zh-hans/development/models-integration/readme"
+ },
+ {
+ "source": "zh-hans/development/migration",
+ "destination": "zh-hans/development/migration/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/use-cases",
+ "destination": "zh-hans/learn-more/use-cases/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/extended-reading",
+ "destination": "zh-hans/learn-more/extended-reading/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/extended-reading/retrieval-augment",
+ "destination": "zh-hans/learn-more/extended-reading/retrieval-augment/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/faq",
+ "destination": "zh-hans/learn-more/faq/readme"
+ },
+ {
+ "source": "zh-hans/policies/agreement",
+ "destination": "zh-hans/policies/agreement/readme"
+ },
+ {
+ "source": "/zh-hans",
+ "destination": "/zh-hans/introduction"
+ },
{
"source": "/introduction",
"destination": "/en/introduction"
diff --git a/output/readme_redirects_zh-hans.json b/output/readme_redirects_zh-hans.json
new file mode 100644
index 00000000..880725a9
--- /dev/null
+++ b/output/readme_redirects_zh-hans.json
@@ -0,0 +1,182 @@
+[
+ {
+ "source": "zh-hans/getting-started/install-self-hosted",
+ "destination": "zh-hans/getting-started/install-self-hosted/readme"
+ },
+ {
+ "source": "zh-hans/guides/model-configuration",
+ "destination": "zh-hans/guides/model-configuration/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-orchestrate",
+ "destination": "zh-hans/guides/application-orchestrate/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-orchestrate/app-toolkits",
+ "destination": "zh-hans/guides/application-orchestrate/app-toolkits/readme"
+ },
+ {
+ "source": "zh-hans/guides/workflow",
+ "destination": "zh-hans/guides/workflow/readme"
+ },
+ {
+ "source": "zh-hans/guides/workflow/node",
+ "destination": "zh-hans/guides/workflow/node/start"
+ },
+ {
+ "source": "zh-hans/guides/workflow/error-handling",
+ "destination": "zh-hans/guides/workflow/error-handling/readme"
+ },
+ {
+ "source": "zh-hans/guides/workflow/debug-and-preview",
+ "destination": "zh-hans/guides/workflow/debug-and-preview/preview-and-run"
+ },
+ {
+ "source": "zh-hans/guides/workflow/debug-and-preview/yu-lan-yu-yun-hang",
+ "destination": "zh-hans/guides/workflow/debug-and-preview/preview-and-run"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base",
+ "destination": "zh-hans/guides/knowledge-base/readme"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents",
+ "destination": "zh-hans/guides/knowledge-base/knowledge-base-creation/introduction"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data",
+ "destination": "zh-hans/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/readme"
+ },
+ {
+ "source": "zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance",
+ "destination": "zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/introduction"
+ },
+ {
+ "source": "zh-hans/guides/tools",
+ "destination": "zh-hans/guides/tools/readme"
+ },
+ {
+ "source": "zh-hans/guides/tools/tool-configuration",
+ "destination": "zh-hans/guides/tools/tool-configuration/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-publishing",
+ "destination": "zh-hans/guides/application-publishing/readme"
+ },
+ {
+ "source": "zh-hans/guides/application-publishing/launch-your-webapp-quickly",
+ "destination": "zh-hans/guides/application-publishing/launch-your-webapp-quickly/readme"
+ },
+ {
+ "source": "zh-hans/guides/annotation",
+ "destination": "zh-hans/guides/annotation/readme"
+ },
+ {
+ "source": "zh-hans/guides/monitoring",
+ "destination": "zh-hans/guides/monitoring/readme"
+ },
+ {
+ "source": "zh-hans/guides/monitoring/integrate-external-ops-tools",
+ "destination": "zh-hans/guides/monitoring/integrate-external-ops-tools/readme"
+ },
+ {
+ "source": "zh-hans/guides/extension",
+ "destination": "zh-hans/guides/extension/readme"
+ },
+ {
+ "source": "zh-hans/guides/extension/api-based-extension",
+ "destination": "zh-hans/guides/extension/api-based-extension/readme"
+ },
+ {
+ "source": "zh-hans/guides/extension/code-based-extension",
+ "destination": "zh-hans/guides/extension/code-based-extension/readme"
+ },
+ {
+ "source": "zh-hans/guides/workspace",
+ "destination": "zh-hans/guides/workspace/readme"
+ },
+ {
+ "source": "zh-hans/guides/management",
+ "destination": "zh-hans/guides/management/readme"
+ },
+ {
+ "source": "zh-hans/workshop/basic",
+ "destination": "zh-hans/workshop/readme"
+ },
+ {
+ "source": "zh-hans/workshop/intermediate",
+ "destination": "zh-hans/workshop/intermediate/readme"
+ },
+ {
+ "source": "zh-hans/plugins/quick-start",
+ "destination": "zh-hans/plugins/quick-start/readme"
+ },
+ {
+ "source": "zh-hans/plugins/quick-start/develop-plugins",
+ "destination": "zh-hans/plugins/quick-start/develop-plugins/readme"
+ },
+ {
+ "source": "zh-hans/plugins/quick-start/develop-plugins/model-plugin",
+ "destination": "zh-hans/plugins/quick-start/develop-plugins/model-plugin/readme"
+ },
+ {
+ "source": "zh-hans/plugins/schema-definition",
+ "destination": "zh-hans/plugins/schema-definition/readme"
+ },
+ {
+ "source": "zh-hans/plugins/schema-definition/model",
+ "destination": "zh-hans/plugins/schema-definition/model/readme"
+ },
+ {
+ "source": "zh-hans/plugins/schema-definition/reverse-invocation-of-the-dify-service",
+ "destination": "zh-hans/plugins/schema-definition/reverse-invocation-of-the-dify-service/readme"
+ },
+ {
+ "source": "zh-hans/plugins/best-practice",
+ "destination": "zh-hans/plugins/best-practice/develop-a-slack-bot-plugin"
+ },
+ {
+ "source": "zh-hans/plugins/publish-plugins",
+ "destination": "zh-hans/plugins/publish-plugins/README"
+ },
+ {
+ "source": "zh-hans/plugins/publish-plugins/publish-to-dify-marketplace",
+ "destination": "zh-hans/plugins/publish-plugins/publish-to-dify-marketplace/README"
+ },
+ {
+ "source": "zh-hans/development/backend",
+ "destination": "zh-hans/development/backend/readme"
+ },
+ {
+ "source": "zh-hans/development/backend/sandbox",
+ "destination": "zh-hans/development/backend/sandbox/readme"
+ },
+ {
+ "source": "zh-hans/development/models-integration",
+ "destination": "zh-hans/development/models-integration/readme"
+ },
+ {
+ "source": "zh-hans/development/migration",
+ "destination": "zh-hans/development/migration/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/use-cases",
+ "destination": "zh-hans/learn-more/use-cases/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/extended-reading",
+ "destination": "zh-hans/learn-more/extended-reading/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/extended-reading/retrieval-augment",
+ "destination": "zh-hans/learn-more/extended-reading/retrieval-augment/readme"
+ },
+ {
+ "source": "zh-hans/learn-more/faq",
+ "destination": "zh-hans/learn-more/faq/readme"
+ },
+ {
+ "source": "zh-hans/policies/agreement",
+ "destination": "zh-hans/policies/agreement/readme"
+ }
+]
\ No newline at end of file
diff --git a/zh-hans/guides/application-publishing/launch-your-webapp-quickly/readme.mdx b/zh-hans/guides/application-publishing/launch-your-webapp-quickly/readme.mdx
new file mode 100644
index 00000000..1ec9fc7d
--- /dev/null
+++ b/zh-hans/guides/application-publishing/launch-your-webapp-quickly/readme.mdx
@@ -0,0 +1,39 @@
+---
+title: 发布为公开 Web 站点
+---
+
+使用 Dify 创建 AI 应用的一个好处在于,你可以在几分钟内就发布一个可供用户在互联网上公开访问的 Web 应用,该应用将根据你的 Prompt 和编排设置进行工作。
+
+* 如果你使用的是自部署的开源版,该应用将运行在你的服务器上
+* 如果你使用的是云服务,该应用将托管至网址 [https://udify.app/](https://udify.app/)
+
+***
+
+### 发布 AI 站点
+
+在应用监测页中,你可以找到 WebApp 的管理卡片。打开访问开关后,你可以得到一个能够在互联网上公开分享的网址。
+
+
+
+我们对以下两种应用类型均预置了漂亮的 WebApp 界面:
+
+* 文本生成型([前往预览](./text-generator))
+* 对话型([前往预览](./conversation-application))
+
+***
+
+### 设置你的 AI 站点
+
+点击 WebApp 卡片上的**设置**按钮,为 AI 站点配置一些选项,它们都会被最终用户所见:
+
+
+
+
-
-
-以下是连接外部知识的详细步骤:
-
-
-
-
-
-
- 填写以下参数:
-
- * **知识库名称与描述**
- * **外部知识库 API** 选择在第二步中关联的外部知识库 API;Dify 将通过 API 连接的方式,调用存储在外部知识库的文本内容;
- * **外部知识库 ID** 指定需要被关联的特定的外部知识库 ID,详细说明请参考[外部知识库 API](../knowledge-and-documents-maintenance/maintain-dataset-via-api)。
- * **调整召回设置**
-
- **Top K:** 用户发起提问时,将请求外部知识 API 获取相关性较高的内容分段。该参数用于筛选与用户问题相似度较高的文本片段。默认值为 3,数值越高,召回存在相关性的文本分段也就越多。
-
- **Score 阈值:** 文本片段筛选的相似度阈值,只召回超过设置分数的文本片段,默认值为 0.5。数值越高说明对于文本与问题要求的相似度越高,预期被召回的文本数量也越少,结果也会相对而言更加精准。
-
-
-
-
-
-
-
-
-
-
- - **Chatflow / Workflow 类型应用**
-
- 在 Chatflow / Workflow 类型应用内添加 **“知识检索”** 节点,选中带有 `EXTERNAL` 标签的外部知识库。
-
-
- 
-
-
-**可调参数**
-
-* **TopK**
-
- 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小,动态调整分段数量。数值越高,预期被召回的文本分段数量越多。
-* **Score 阈值**
-
- 用于设置文本片段筛选的相似度阈值。向量检索的相似度分数需要超过设置的分数后才会被召回,数值越高,预期被召回的文本数量越少。
-
-### 使用元数据筛选知识
-
-#### 聊天流/工作流
-
-在 **聊天流/工作流** 的 **知识检索** 节点中,你可以使用 **元数据筛选** 功能精确检索文档。该功能有助于你根据文档的元数据字段(如标签、类别或访问权限)优化检索结果。
-
-##### 配置步骤
-
-1. 选择筛选模式
-
- - **禁用模式**(默认):禁用 **元数据筛选** 功能,不配置任何筛选条件。
-
- - **自动模式**:系统会根据传输给该 **知识检索** 节点的 **查询变量** 自动配置筛选条件,适用于简单的筛选需求。
-
- > 启用自动模式后,你依然需要在 **模型** 栏中选择合适的大模型以执行文档检索任务。
-
- 
-
- - **手动模式**:用户可以手动配置筛选条件,自由设置筛选规则,适用于复杂的筛选需求。
-
-
-
-2. 如果你选择了 **手动模式**,请参照以下步骤配置筛选条件:
-
- 1. 点击 **条件** 按钮,弹出配置框。
-
- 
-
- 2. 点击配置框中的 **+添加条件** 按钮:
-
- - 可以从下拉列表中选择一个已选中知识库内的元数据字段,添加到筛选条件列表中。
-
- > 如果你同时选择了多个知识库,下拉列表只会显示这些知识库共有的元数据字段。
-
- - 可以在 **搜索元数据** 搜索框中搜索你需要的字段,添加到筛选条件列表中。
-
- 
-
- 3. 如果需要添加多条字段,可以重复点击 **+添加条件** 按钮。
-
- 
-
- 4. 配置字段类型的筛选条件:
-
- | 字段类型 | 筛选条件 | 筛选条件说明与示例 |
- | --- | --- | --- |
- | 字符串 | is | 字段的值必须与你输入的值完全匹配。例如,如果你设置筛选条件为 `is "Published"`,则只会返回标记为 "Published" 的文档。 |
- | | is not | 字段的值不能与你输入的值匹配。例如,如果你设置筛选条件为 `is not "Draft"`,则会返回所有未标记为 "Draft" 的文档。 |
- | | is empty | 字段的值为空。如果你配置了此条件,可以检索到未标记该字符串的文档。 |
- | | is not empty | 字段的值不为空。如果你配置了此条件,可以检索到标记了该字符串的文档。 |
- | | contains | 字段的值包含你输入的文本。例如,如果你设置筛选条件为 `contains "Report"`,则会返回所有包含"Report"的文档,如"Monthly Report" 或 "Annual Report"。 |
- | | not contains | 字段的值不包含你输入的文本。例如,如果你设置筛选条件为 `not contains "Draft"`,则会返回所有不包含 "Draft" 的文档。 |
- | | starts with | 字段的值以你输入的文本开头。例如,如果你设置筛选条件为 `starts with "Doc"`,则会返回所有以"Doc"开头的文档,如 "Doc1"、"Document"等。 |
- | | ends with | 字段的值以你输入的文本结尾。例如,如果你设置筛选条件为 `ends with "2024"`,则会返回所有以"2024"结尾的文档,如"Report 2024"、"Summary 2024"等。 |
- | 数字 | = | 字段的值必须等于你输入的数字。例如,`= 10` 会匹配所有数字标记为 10 的文档。 |
- | | ≠ | 字段的值不能等于你输入的数字。例如,`≠ 5` 会返回所有数字未标记为 5 的文档。 |
- | | > | 字段的值必须大于你输入的数字。例如,`100` 会返回所有数字标记为大于 100 的文档。 |
- | | < | 字段的值必须小于你输入的数字。例如,`< 50` 会返回所有数字标记为小于 50 的文档。 |
- | | ≥ | 字段的值必须大于或等于你输入的数字。例如,`≥ 20` 会返回所有数字标记为大于或等于 20 的文档。 |
- | | ≤ | 字段的值必须小于或等于你输入的数字。例如,`≤ 200` 会返回所有数字标记为小于或等于 200 的文档。 |
- | | is empty | 字段未设置值。例如,`is empty` 会返回所有该字段未标记数字的文档。 |
- | | is not empty | 字段已设置值。例如,`is not empty` 会返回所有该字段已标记数字的文档。 |
- | 时间 | is | 字段的时间值必须与你选择的时间完全匹配。例如,`is "2024-01-01"` 只会返回标记为 2024 年 1 月 1 日的文档。 |
- | | before | 字段的时间值必须早于你选择的时间。例如,`before "2024-01-01"` 会返回所有标记为 2024 年 1 月 1 日之前的文档。 |
- | | after | 字段的时间值必须晚于你选择的时间。例如,`after "2024-01-01"` 会返回所有标记为 2024 年 1 月 1 日之后的文档。 |
- | | is empty | 字段的时间值为空。如果你配置了此条件,可以检索到未标记该时间信息的文档。 |
- | | is not empty | 字段的时间值不为空。如果你配置了此条件,可以检索到标记了该时间信息的文档。 |
-
- 5. 选择并添加元数据筛选值:
- - **变量**:选择 **变量(Variable)**,并选择该**聊天流/工作流**中需要用于筛选文档的变量。
-
- 
-
- - **常量**:选择 **常量(Constant)**,并手动输入你需要的常量值。
-
- > **时间** 字段类型仅支持使用常量筛选文档。如果你选用时间字段筛选文档,系统会弹出时间选择器,供你选择具体的时间节点。
-
- 
-
-
-
-
-**知识库名称**,用于区分不同的知识库。
-
-**知识库描述**,用于描述知识库内文档代表的信息。
-
-**可见权限**,提供 **「 只有我 」** 、 **「 所有团队成员 」** 和 **「部分团队成员」** 三种权限范围。不具有权限的人将无法访问该知识库。若选择将知识库公开至其它成员,则意味着其它成员同样具备该知识库的查看、编辑和删除权限。
-
-**索引模式**,详细说明请[参考文档](/zh-cn/user-guide/knowledge-base/knowledge-base-creation/upload-documents#3)。
-
-**Embedding 模型**, 修改知识库的嵌入模型,修改 Embedding 模型将对知识库内的所有文档重新嵌入,原先的嵌入将会被删除。
-
-**检索设置**,详细说明请[参考文档](/zh-cn/user-guide/knowledge-base/knowledge-base-creation/upload-documents#4)。
-
-***
-
-### 使用 API 维护知识库
-
-Dify 知识库提供整套标准 API ,开发者通过 API 调用对知识库内的文档、分段进行增删改查等日常管理维护操作,请参考[知识库 API 文档](maintain-dataset-via-api)。
-
-
-
-
-
-## 维护知识库中的文本
-
-### 添加文档
-
-知识库(Knowledge)是一些文档(Documents)的集合。文档可以由开发者或运营人员上传,或由同步其它数据源(对应数据源中的一个文件单位,例如 Notion 库内的一篇文档或新的在线文档网页)。
-
-点击 「知识库」 > 「文档列表 ,然后轻点 「 添加文件 」,即可在已创建的知识库内上传新的文档。
-
-
-
-
-
-***
-
-### 禁用或归档文档
-
-**禁用**:数据集支持将暂时不想被索引的文档或分段进行禁用,在数据集文档列表,点击禁用按钮,则文档被禁用;也可以在文档详情,点击禁用按钮,禁用整个文档或某个分段,禁用的文档将不会被索引。禁用的文档点击启用,可以取消禁用。
-
-**归档**:一些不再使用的旧文档数据,如果不想删除可以将它进行归档,归档后的数据就只能查看或删除,不可以进行编辑。在数据集文档列表,点击归档按钮,则文档被归档,也可以在文档详情,归档文档。归档的文档将不会被索引。归档的文档也可以点击撤销归档。
-
-***
-
-### 查看文本分段
-
-知识库内已上传的每个文档都会以文本分段(Chunks)的形式进行存储,你可以在分段列表内查看每一个分段的具体文本内容。
-
-
-
-
-
-***
-
-### 检查分段质量
-
-文档分段对于知识库应用的问答效果有明显影响,在将知识库与应用关联之前,建议人工检查分段质量。
-
-通过字符长度、标识符或者 NLP 语义分段等机器自动化的分段方式虽然能够显著减少大规模文本分段的工作量,但分段质量与不同文档格式的文本结构、前后文的语义联系都有关系,通过人工检查和订正可以有效弥补机器分段在语义识别方面的缺点。
-
-检查分段质量时,一般需要关注以下几种情况:
-
-* **过短的文本分段**,导致语义缺失;
-
-
-
-
-
-* **过长的文本分段**,导致语义噪音影响匹配准确性;
-
-
-
-
-
-* **明显的语义截断**,在使用最大分段长度限制时会出现强制性的语义截断,导致召回时缺失内容;
-
-
-
-
-
-***
-
-### 添加文本分段
-
-在分段列表内点击 「 添加分段 」 ,可以在文档内自行添加一个或批量添加多个自定义分段。
-
-
-
-
-
-批量添加分段时,你需要先下载 CSV 格式的分段上传模板,并按照模板格式在 Excel 内编辑所有的分段内容,再将 CSV 文件保存后上传。
-
-
-
-
-
-***
-
-### ![]()编辑文本分段
-
-在分段列表内,你可以对已添加的分段内容直接进行编辑修改。包括分段的文本内容和关键词。
-
-
-
-
-
-***
-
-### 元数据管理
-
-除了用于标记不同来源文档的元数据信息,例如网页数据的标题、网址、关键词、描述等。元数据将被用于知识库的分段召回过程中,作为结构化字段参与召回过滤或者显示引用来源。
-
-
-
diff --git a/zh-hans/guides/knowledge-base/knowledge-request-rate-limit.mdx b/zh-hans/guides/knowledge-base/knowledge-request-rate-limit.mdx
new file mode 100644
index 00000000..2d580d49
--- /dev/null
+++ b/zh-hans/guides/knowledge-base/knowledge-request-rate-limit.mdx
@@ -0,0 +1,40 @@
+---
+title: 知识库请求频率限制
+---
+
+为了维护 Dify 云服务系统的稳定性,并提升所有用户的知识库使用体验,我们将从 **2025 年 2 月 24 日** 起引入知识库请求频率限制(Knowledge Request Rate Limit)。
+
+## 什么是知识库请求频率限制?
+
+知识库请求频率限制,指一个工作区在知识库中每分钟可执行的最大操作数。这些操作包括数据集创建、文档管理,以及在应用或工作流中的知识库查询。
+
+## 不同订阅版本的限制
+
+- **Sandbox**:10 次/分钟
+- **Professional**:100 次/分钟
+- **Team**:1,000 次/分钟
+
+例如,对于 **Sandbox 用户**,如果在 1 分钟内执行了 10 次命中测试,该用户的工作区将在接下来的 1 分钟内暂时无法执行受知识库请求频率限制的操作。
+
+## 哪些操作会受到知识库请求频率限制?
+
+当你执行以下操作时,会受到知识库请求频率限制:
+
+1. 创建空数据集
+2. 删除数据集
+3. 更新数据集设置
+4. 上传文档
+5. 删除文档
+6. 更新文档
+7. 禁用文档
+8. 启用文档
+9. 归档文档
+10. 恢复文档
+11. 暂停文档处理
+12. 恢复文档处理
+13. 新增分段
+14. 删除分段
+15. 更新分段
+16. 批量导入分段
+17. 命中测试
+18. App 或 Workflow 中查询知识库(多路召回虽然会多次查询知识库,但是只记作一次请求)
diff --git a/zh-hans/guides/knowledge-base/metadata.mdx.bak b/zh-hans/guides/knowledge-base/metadata.mdx.bak
deleted file mode 100644
index 3005087e..00000000
--- a/zh-hans/guides/knowledge-base/metadata.mdx.bak
+++ /dev/null
@@ -1,409 +0,0 @@
----
-title: 元数据
----
-
-## 什么是元数据?
-
-### 定义
-
-元数据是用于描述其他数据的信息。简单来说,它是"关于数据的数据"。它就像一本书的目录或标签,可以为你介绍数据的内容、来源和用途。
-通过提供数据的上下文,元数据能帮助你在知识库内快速查找和管理数据。
-
-### 知识库元数据定义
-
-- **字段(Field)**:元数据字段是用于描述文档特定属性的标识项,每个字段代表文档的某个特征或信息。例如"author""language"等。
-
-- **字段值(Value)**:字段值是该字段的具体信息或属性,例如"Jack""English"。
-
-
-
-- **字段值计数(Value Count)**:字段值计数是指在某条元数据字段中标记的字段值数量,包括重复项。例如,此处的"3"是字段值计数,指该字段中有 3 个独特的字段值。
-
-
-
-- **值类型(Value Type)**:值类型指字段值的类型。
- - 目前,Dify 的元数据功能支持以下三种值类型:
- - **字符串**(String):文本值。
- - **数字**(Number):数值。
- - **时间**(Time):日期和时间。
-
-
-
-## 如何管理知识库元数据?
-
-### 管理知识库元数据字段
-
-在知识库管理界面,你可以创建、修改和删除元数据字段。
-
-> 注意:所有在此界面进行的更新均为**全局更新**,这意味着对元数据字段列表的任何更改都会影响整个知识库,包括所有文档中标记的元数据。
-
-#### 元数据管理界面简介
-
-**进入元数据管理界面**
-
-在知识库管理界面,点击右上方的 **元数据** 按钮,进入元数据管理界面。
-
-
-
-
-
-**知识库元数据字段的类型**
-
-在知识库中,元数据字段分为两类:**内置元数据(Built-in)** 和 **自定义元数据**。
-
-
| - | 内置元数据(Built-in) | -自定义元数据 | -
|---|---|---|
| 显示位置 | -知识库界面 元数据 栏的下半部分。 | -知识库界面 元数据 栏的上半部分。 | -
| 启用方式 | -默认禁用,需要手动开启才能生效。 | -由用户根据需求自由添加。 | -
| 生成方式 | -启用后,由系统自动提取相关信息并生成字段值。 | -用户手动添加,完全由用户自定义。 | -
| 修改权限 | -一旦生成,无法修改字段与字段值。 | -可以删除或编辑字段名称,也可以修改字段值。 | -
| 应用范围 | -启用后,适用于已上传和新上传的所有文档。 | -添加元数据字段后,字段会储存在知识库的元数据列表中/需要手动设置,才能将该字段应用于具体文档。 | -
| 字段 | -
- 由系统预定义,包括:
-
|
- 在初始状态下,知识库无自定义元数据字段,需要用户手动添加。 | -
| 字段值类型 | -
-
|
-
-
|
-
-
-4. 点击 **保存** 按钮,保存字段。
-
-
-
-#### 修改元数据字段
-
-1. 点击单条元数据字段右侧的编辑按钮,弹出 **重命名** 弹窗。
-
-
-
-2. 在 **名称** 框中修改字段名称。
-
-> 此弹窗仅支持修改字段名称,不支持修改字段值类型。
-
-
-
-3. 点击 **保存** 按钮,保存修改后的字段。
-
-> 修改并保存后,该字段将在知识库中的所有相关文档中同步更新。
-
-
-
-#### 删除元数据字段
-
-点击单条元数据字段右侧的删除按钮,可以删除该字段。
-
-> 如果删除单条字段,该字段及该字段下包含的字段值将从知识库的所有文档中删除。
-
-
-
-### 编辑文档元数据信息
-
-#### 批量编辑文档元数据信息
-
-你可以在知识库管理界面批量编辑文档的元数据信息。
-
-**打开编辑元数据弹窗**
-
-1. 打开知识库管理界面,在文档列表左侧的白色方框中勾选你希望批量操作的文档。勾选后,页面下方会弹出操作选项。
-
-
-
-2. 点击操作选项中的 **元数据**,弹出 **编辑元数据** 弹窗。
-
-
-
-**批量新增元数据信息**
-
-1. 在 **编辑元数据** 弹窗中点击底部的 **+添加元数据** 按钮,弹出操作弹窗。
-
-
-
-- 如需为选中文档添加已创建的字段:
-
- - 可以从下拉列表中选择已有的字段,添加到字段列表中。
-
- - 可以在 **搜索元数据** 搜索框中搜索你需要的字段,添加到该文档的字段列表中。
-
-
-
-- 如需为选中文档新建字段,可以点击弹窗左下角的 **+新建元数据** 按钮,并参考前文的 **新建元数据字段** 章节新建字段。
-
- > 在 **+新建元数据** 弹窗中新建的元数据字段,将自动同步至知识库字段列表中。
-
-
-
-- 如需管理已创建的字段,可以点击该弹窗右下角的 **管理** 按钮,跳转到知识库的管理界面。
-
-
-
-2. *(可选)* 新增字段后,在字段值框内填写该字段相应的字段值。
-
-
-
-- 如果值类型为 **时间**,在填写字段值时会弹出时间选择器,供你选择具体时间。
-
-
-
-3. 点击 **保存** 按钮,保存操作。
-
-**批量删改元数据信息**
-
-1. 在 **编辑元数据** 弹窗中删改元数据信息:
-
-- **添加字段值**: 在需要添加元数据值的字段框内直接输入所需值。
-
-- **重置字段值**: 将光标悬停在字段名左侧的蓝色圆点上,蓝点将变为 **重置** 按钮。点击蓝点,将字段框内修改后的内容重置为原始元数据值。
-
-
-
-- **删除字段值**:
-
- - 删除一个字段值:在需要删除字段值的字段框内直接删除该字段值。
-
- - 删除多个字段值:点击 **多个值** 卡片的删除图标,清空所有选中文档的该元数据字段的值。
-
-
-
-- **删除单条元数据字段**: 点击字段最右侧的删除符号,删除该字段。删除后,该字段会被横线划掉且置灰。
-
- > 此操作仅会删除已选文档的该字段与字段值,字段本身依然保留在知识库中。
-
-
-
-2. 点击 **保存** 按钮,保存操作。
-
-**调整批量操作的应用范围**
-
-- **调整批量操作的应用范围**: 你可以使用 **编辑元数据** 弹窗左下角的 **应用于所有文档** 选框来调整编辑模式中改动的应用范围。
-
- - **否(默认)**: 如果不选中该选项,编辑模式中的改动仅对原本已有该元数据字段的文档生效,其他文档不会受到影响。
-
- - **是**: 如果选中该选项,编辑模式中的改动会对所有选中的文档生效。原本没有该字段的文档,会自动添加该字段。
-
-
-
-#### 编辑单篇文档元数据信息
-
-你可以在文档详情界面中编辑单篇文档的元数据信息。
-
-**进入文档元数据编辑模式**
-
-1. 在文档详情界面,点击信息栏上方的 **开始标记** 按钮。
-
-
-
-2. 进入文档元数据编辑模式。
-
-
-
-**新增文档元数据信息**
-
-1. 在文档的元数据编辑模式中,点击 **+添加元数据** 按钮,弹出操作弹窗。
-
-
-- 如需使用新建字段为该文档标记字段值,可以点击弹窗左下角的 **+ 新建元数据** 按钮,并参考前文的 **新建元数据字段** 章节新建字段。
-
- > 在文档页面新建的元数据字段,将自动同步至知识库字段列表中。
-
- 
-
-- 如需使用知识库已有的字段为该文档标记字段值,可以选择下列任意一种方式使用已有的字段:
-
- - 从下拉列表中选择知识库已有的字段,添加到该文档的字段列表中。
-
- - 在 **搜索元数据** 搜索框中搜索你需要的字段,添加到该文档的字段列表中。
-
- 
-
-- 如需管理知识库已有的字段,可以点击弹窗右下角的 **管理** 按钮,跳转到知识库的管理界面。
-
- 
-
-2. *(可选)* 添加字段后,在字段名右侧的元数据栏中填写字段值。
-
-
-
-3. 点击右上角的 **保存** 按钮,保存字段值。
-
-**删改文档元数据信息**
-
-1. 在文档的元数据编辑模式中,点击右上角的 **编辑** 按钮,进入编辑模式。
-
-
-
-2. 删改文档元数据信息:
- - **删改字段值**: 在字段名右侧的字段值框内,删除或修改字段值。
-
- > 此模式仅支持修改字段值,不支持修改字段名。
-
- - **删除字段**: 点击字段值框右侧的删除按钮,删除字段。
-
- > 此操作仅会删除该文档的该字段与字段值,字段本身依然保留在知识库中。
-
-
-
-3. 点击右上角的 **保存** 按钮,保存修改后的字段信息。
-
-## 如何使用元数据功能在知识库中筛选文档?
-
-请参阅 [在应用内集成知识库](https://docs.dify.ai/zh-hans/guides/knowledge-base/integrate-knowledge-within-application) 中的 **使用元数据筛选知识** 章节。
-
-## API 信息
-
-请参阅 [通过 API 维护知识库](https://docs.dify.ai/zh-hans/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api)。
-
-## FAQ
-
-- **元数据有什么作用?**
-
- - 提升搜索效率:用户可以根据元数据标签快速筛选和查找相关信息,节省时间并提高工作效率。
-
- - 增强数据安全性:通过元数据设置访问权限,确保只有授权用户能访问敏感信息,保障数据的安全性。
-
- - 优化数据管理能力:元数据帮助企业或组织有效分类和存储数据,提高数据的管理和检索能力,增强数据的可用性和一致性。
-
- - 支持自动化流程:元数据在文档管理、数据分析等场景中可以自动触发任务或操作,简化流程并提高整体效率。
-
-- **知识库元数据管理列表中的元数据字段和某篇文档中的元数据值有什么区别?**
-
-| | 定义 | 性质 | 举例 |
-| --- | --- | --- | --- |
-| 元数据管理列表中的元数据字段 | 预定义的字段,用于描述文档的某些属性。 | 全局性字段。所有文档都可以使用这些字段。 | 作者、文档类型、上传日期。 |
-| 某篇文档中的元数据值 | 每个文档按需标记的针对特定文档的信息。 | 文档特定的值。每个文档根据其内容会标记不同的元数据值。 | 文档 A 的"作者"字段值为"张三",文档 B 的"作者"字段值为"李四"。 |
-
-- **"在知识库管理界面删除某条元数据字段""在编辑元数据弹窗中删除已选文档的某条元数据字段"和"在文档详情界面删除某条元数据字段"有什么区别?**
-
-| 操作方式 | 操作方法 | 影响范围 | 结果 |
-| --- | --- | --- | --- |
-| 在知识库管理界面删除某条元数据字段 | 在知识库管理界面,点击某条元数据字段右侧的删除图标,删除该字段。 | 从知识库管理列表中完全删除该元数据字段及其所有字段值。 | 该字段从知识库中移除,所有文档中的该字段及包含的所有字段值也会消失。 |
-| 在编辑元数据弹窗中删除已选文档的某条元数据字段 | 在编辑元数据弹窗中,点击某条元数据字段右侧的删除图标,删除该字段。 | 仅删除已选文档的该字段与字段值,字段本身依然保留在知识库管理列表中。 | 选中文档中的字段与字段值被移除,但字段仍保留在知识库内,字段值计数会发生数值上的变化。 |
-| 在文档详情界面删除某条元数据字段 | 在文档详情界面中的元数据编辑模式里,点击某条元数据字段右侧的删除图标,删除该字段。 | 仅删除该文档的该字段与字段值,字段本身依然保留在知识库管理列表中。 | 该文档中的字段与字段值被移除,但字段仍保留在知识库内,字段值计数会发生数值上的变化。 |
diff --git a/zh-hans/guides/knowledge-base/readme.mdx.bak b/zh-hans/guides/knowledge-base/readme.mdx.bak
deleted file mode 100644
index 2bb0b935..00000000
--- a/zh-hans/guides/knowledge-base/readme.mdx.bak
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: 功能简介
----
-
-知识库功能将 [RAG 管线](https://docs.dify.ai/zh-hans/learn-more/extended-reading/retrieval-augment)上的各环节可视化,提供了一套简单易用的用户界面来方便应用构建者管理个人或者团队的知识库,并能够快速集成至 AI 应用中。
-
-开发者可以将企业内部文档、FAQ、规范信息等内容上传至知识库进行结构化处理,供后续 LLM 查询。
-
-相比于 AI 大模型内置的静态预训练数据,知识库中的内容能够实时更新,确保 LLM 可以访问到最新的信息,避免因信息过时或遗漏而产生的问题。
-
-LLM 接收到用户的问题后,将首先基于关键词在知识库内检索内容。知识库将根据关键词,召回相关度排名较高的内容区块,向 LLM 提供关键上下文以辅助其生成更加精准的回答。
-
-开发者可以通过此方式确保 LLM 不仅仅依赖于训练数据中的知识,还能够处理来自实时文档和数据库的动态数据,从而提高回答的准确性和相关性。
-
-**核心优势:**
-
-• **实时性**:知识库中的数据可随时更新,确保模型获得最新的上下文。
-
-• **精准性**:通过检索相关文档,LLM 能够基于实际内容生成高质量的回答,减少幻觉现象。
-
-• **灵活性**:开发者可自定义知识库内容,根据实际需求调整知识的覆盖范围。
-
-***
-
-准备文本文件,例如:
-
-* 长文本内容(TXT、Markdown、DOCX、HTML、JSON 甚至是 PDF)
-* 结构化数据(CSV、Excel 等)
-* 在线数据源(网页爬虫、Notion 等)
-
-将文件上传至“知识库”即可自动完成数据处理。
-
-> 如果你的团队内部已建有独立知识库,可以通过[连接外部知识库](./knowledge-base-creation/connect-external-knowledge-base)与 Dify 建立连接。
-
-### 使用情景
-
-例如你希望基于现有知识库和产品文档建立一个 AI 客服助手,可以在 Dify 中将文档上传至知识库,并建立一个对话型应用。如果使用传统方式,从文本训练到 AI 客服助手开发,可能需要花费数周的时间,且难以持续维护并进行有效迭代。在 Dify 内,仅需三分钟即可完成上述过程并开始获取用户反馈。
-
-### 知识库与文档
-
-在 Dify 中,知识库(Knowledge)是一系列文档(Documents)的集合,一个文档内可能包含多组内容分段(Chunks),知识库可以被整体集成至一个应用中作为检索上下文使用。文档可以由开发者或运营人员上传,或由其它数据源同步。
-
-如果你已自建文档库,可以通过[连接外部知识库](./knowledge-base-creation/connect-external-knowledge-base)功能将自有知识库与 Dify 平台相关联。无需重复将内容上传至 Dify 平台内的知识库即可让 AI 应用实时读取自建知识库中的内容。
diff --git a/zh-hans/guides/monitoring/README.mdx b/zh-hans/guides/monitoring/README.mdx
new file mode 100644
index 00000000..8b09397a
--- /dev/null
+++ b/zh-hans/guides/monitoring/README.mdx
@@ -0,0 +1,7 @@
+---
+title: 监测
+---
+
+你可以在 **概览** 内监控、跟踪应用程序在生产环境中的性能,在数据分析仪表盘内分析生产环境中应用的使用成本、延迟、用户反馈、性能等指标,并通过持续调试、迭代不断改进你的应用程序。
+
+
diff --git a/zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik.mdx b/zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik.mdx
new file mode 100644
index 00000000..3c75fec9
--- /dev/null
+++ b/zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-opik.mdx
@@ -0,0 +1,355 @@
+---
+title: 集成 Opik
+---
+
+## Opik 简介
+
+Opik 是一个开源的 LLM 评估平台,用于评估、测试和监控大型语言模型(LLM)应用。它由 Comet 开发,旨在促进对基于 LLM 的应用程序进行更直观的协作、测试和监控。
+
+
+
+
+### 3. 使用工具
+
+* **Chatflow / Workflow 应用**
+
+Chatflow 和 Workflow 应用均支持添加 `SiliconFlow` 工具节点。
+
+将用户输入的内容通过[变量](../../workflow/variables)传递至 Siliconflow 工具的 Flux 或 Stable Diffusion 节点内的“提示词”“负面提示词”框中,按照需求调整内置参数,最后在“结束”节点的回复框中选中 Siliconflow 工具节点的输出内容(文本、图片等)。
+
+
+
+
+
+* **Agent 应用**
+
+在 Agent 应用内添加 `Stable Diffusion` 或 `Flux` 工具,然后在对话框内发送图片描述,调用工具生成 AI 图像。
+
+
+
+
+
+
+
+
diff --git a/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx b/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx
new file mode 100644
index 00000000..d9169761
--- /dev/null
+++ b/zh-hans/guides/tools/tool-configuration/stable-diffusion.mdx
@@ -0,0 +1,80 @@
+---
+title: Stable Diffusion
+version: '简体中文'
+---
+
+> 工具作者 @Dify。
+
+Stable Diffusion 是一种基于文本提示生成图像的工具,Dify 已经实现了访问 Stable Diffusion WebUI API 的接口,因此你可以直接在 Dify 中使用它。以下是在 Dify 中集成 Stable Diffusion 的步骤。
+
+## 1. 初始化本地环境
+
+推荐使用装有较强 GPU 的机器来安装和驱动 Stable Diffusion,但这并不是必须的,你也可以使用 CPU 来生成图像,但速度可能会很慢。
+
+## 2. 安装并启动 Stable Diffusion WebUI
+
+1. 从[官方仓库](https://github.com/AUTOMATIC1111/stable-diffusion-webui)克隆 Stable Diffusion WebUI 仓库
+
+```bash
+git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
+```
+
+2. 运行命令启动 Stable Diffusion WebUI。
+
+克隆仓库后,切换到仓库目录。根据系统的不同,可能需要使用不同的命令来启动 WebUI。
+
+#### Windows
+
+```bash
+cd stable-diffusion-webui
+./webui.bat --api --listen
+```
+
+#### Linux
+```bash
+cd stable-diffusion-webui
+./webui.sh --api --listen
+```
+
+3. 准备模型
+
+现在你可以根据终端中显示的地址在浏览器中访问 Stable Diffusion WebUI,但模型还不可用。你需要从 HuggingFace 或其他来源下载模型,并将其放在 Stable Diffusion WebUI 的 `models` 目录中。
+
+例如,我们使用 [pastel-mix](https://huggingface.co/JamesFlare/pastel-mix) 作为模型,使用 `git lfs` 下载模型并将其放在 `stable-diffusion-webui` 的 `models` 目录中。
+
+```bash
+git clone https://huggingface.co/JamesFlare/pastel-mix
+```
+
+4. 获取模型名称
+
+现在你可以在模型列表中看到 `pastel-mix`,但我们仍然需要获取模型名称,访问 `http://your_id:port/sdapi/v1/sd-models`,你将看到如下的模型名称。
+
+```json
+[
+ {
+ "title": "pastel-mix/pastelmix-better-vae-fp32.ckpt [943a810f75]",
+ "model_name": "pastel-mix_pastelmix-better-vae-fp32",
+ "hash": "943a810f75",
+ "sha256": "943a810f7538b32f9d81dc5adea3792c07219964c8a8734565931fcec90d762d",
+ "filename": "/home/takatost/stable-diffusion-webui/models/Stable-diffusion/pastel-mix/pastelmix-better-vae-fp32.ckpt",
+ "config": null
+ },
+]
+```
+
+`model_name` 就是我们需要的,这个例子中是 `pastel-mix_pastelmix-better-vae-fp32`。
+
+## 3. 在 Dify 集成 Stable Diffusion
+
+在 `工具 > StableDiffusion > 去认证` 中填写你在之前步骤中获取的认证信息和模型配置。
+
+## 4. 完成
+
+- **Chatflow / Workflow 应用**
+
+Chatflow 和 Workflow 应用均支持添加 `Stable Diffusion` 工具节点。添加后,需要在节点内的 “输入变量 → 提示词” 内填写[变量](/zh-cn/user-guide/build-app/flow-app/variables)引用用户输入的提示词,或者是上一节点生成的内容。最后在 “结束” 节点内使用变量引用 `Stable Diffusion` 输出的图像。
+
+- **Agent 应用**
+
+在 Agent 应用内添加 `Stable Diffusion` 工具,然后在对话框内发送图片描述,调用工具生成 AI 图像。
diff --git a/zh-hans/guides/workflow/error-handling/predefined-nodes-failure-logic.mdx b/zh-hans/guides/workflow/error-handling/predefined-nodes-failure-logic.mdx
index ca69ca08..4ca5bbd9 100644
--- a/zh-hans/guides/workflow/error-handling/predefined-nodes-failure-logic.mdx
+++ b/zh-hans/guides/workflow/error-handling/predefined-nodes-failure-logic.mdx
@@ -56,8 +56,3 @@ title: 预定义异常处理逻辑
| --------------- | ------------------------------------------------------------------------------------------------------------- |
| `error_type` | 错误类型。不同类型的节点有着不同的[错误类型](https://docs.dify.ai/guides/workflow/error-handling/error-type),开发者可以根据不同的错误标识编排对应方案。 |
| `error_message` | 错误信息,异常节点输出的具体故障信息。开发者可以传递给下游的 LLM 节点进行修复,或连接邮箱工具推送信息。 |
-
-
-
-
-
diff --git a/zh-hans/guides/workflow/concepts.mdx b/zh-hans/guides/workflow/key-concept.mdx
similarity index 100%
rename from zh-hans/guides/workflow/concepts.mdx
rename to zh-hans/guides/workflow/key-concept.mdx
diff --git a/zh-hans/guides/workflow/application-publishing.mdx b/zh-hans/guides/workflow/publish.mdx
similarity index 100%
rename from zh-hans/guides/workflow/application-publishing.mdx
rename to zh-hans/guides/workflow/publish.mdx
diff --git a/zh-hans/guides/workflow/readme.mdx b/zh-hans/guides/workflow/readme.mdx
new file mode 100644
index 00000000..1c327013
--- /dev/null
+++ b/zh-hans/guides/workflow/readme.mdx
@@ -0,0 +1,47 @@
+---
+title: 工作流
+---
+
+### 基本介绍
+
+工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。
+
+Dify 工作流分为两种类型:
+
+* **Chatflow**:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
+* **Workflow**:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。
+
+
+
+为解决自然语言输入中用户意图识别的复杂性,Chatflow 提供了问题理解类节点。相对于 Workflow 增加了 Chatbot 特性的支持,如:对话历史(Memory)、标注回复、Answer 节点等。
+
+为解决自动化和批处理情景中复杂业务逻辑,工作流提供了丰富的逻辑节点,如代码节点、IF/ELSE 节点、模板转换、迭代节点等,除此之外也将提供定时和事件触发的能力,方便构建自动化流程。
+
+### 常见案例
+
+* 客户服务
+
+通过将 LLM 集成到你的客户服务系统中,你可以自动化回答常见问题,减轻支持团队的工作负担。 LLM 可以理解客户查询的上下文和意图,并实时生成有帮助且准确的回答。
+
+* 内容生成
+
+无论你需要创建博客文章、产品描述还是营销材料,LLM 都可以通过生成高质量内容来帮助你。只需提供一个大纲或主题,LLM将利用其广泛的知识库来制作引人入胜、信息丰富且结构良好的内容。
+
+* 任务自动化
+
+可以与各种任务管理系统集成,如 Trello、Slack、Lark、以自动化项目和任务管理。通过使用自然语言处理,LLM 可以理解和解释用户输入,创建任务,更新状态和分配优先级,无需手动干预。
+
+* 数据分析和报告
+
+可以用于分析大型知识库并生成报告或摘要。通过提供相关信息给 LLM,它可以识别趋势、模式和洞察力,将原始数据转化为可操作的智能。对于希望做出数据驱动决策的企业来说,这尤其有价值。
+
+* 邮件自动化处理
+
+LLM 可以用于起草电子邮件、社交媒体更新和其他形式的沟通。通过提供简要的大纲或关键要点,LLM 可以生成一个结构良好、连贯且与上下文相关的信息。这样可以节省大量时间,并确保你的回复清晰和专业。
+
+### 如何开始
+
+* 从一个空白的工作流开始构建或者使用系统模板帮助你开始;
+* 熟悉基础操作,包括在画布上创建节点、连接和配置节点、调试工作流、查看运行历史等;
+* 保存并发布一个工作流;
+* 在已发布应用中运行或者通过 API 调用工作流;