agentic_huge_data_base / wiki
页面 RAGFlow · 8.3 内置组件·DeepWiki 中文全文译文

8.3 · 内置组件(Built-in Components)

复杂文档理解与引用检索 · 聚焦本章的模块关系、源码依据与实现要点。

项目RAGFlow 章节8.3 状态全文译文 模块界面与交互、配置治理、智能体运行时、测试、发布与运维
源码线索
  • agent/component/data_operations.py
  • agent/component/docs_generator.py
  • agent/component/exit_loop.py
  • agent/component/invoke.py
  • agent/component/iteration.py
  • agent/component/iterationitem.py
  • agent/component/loop.py
  • agent/component/loopitem.py
  • agent/component/message.py
  • agent/component/string_transform.py
模块标签
  • 界面与交互
  • 配置治理
  • 智能体运行时
  • 测试、发布与运维
  • 检索、召回与索引

章节正文

内置组件

内置组件

相关源文件

本章引用的主要源码文件:

  • agent/component/data_operations.py
  • agent/component/docs_generator.py
  • agent/component/exit_loop.py
  • agent/component/invoke.py
  • agent/component/iteration.py
  • agent/component/iterationitem.py
  • agent/component/loop.py
  • agent/component/loopitem.py
  • agent/component/message.py
  • agent/component/string_transform.py
  • agent/component/variable_assigner.py
  • agent/tools/arxiv.py
  • agent/tools/duckduckgo.py
  • agent/tools/email.py
  • agent/tools/github.py
  • agent/tools/google.py
  • agent/tools/googlescholar.py
  • agent/tools/pubmed.py
  • test/testcases/test_web_api/test_canvas_app/test_invoke_component_unit.py
  • test/testcases/test_web_api/test_canvas_app/test_iteration_runtime_unit.py
  • test/testcases/test_web_api/test_canvas_app/test_iterationitem_unit.py
  • web/src/components/jsonjoy-builder/components/schema-editor/json-schema-visualizer.tsx
  • web/src/components/jsonjoy-builder/hooks/use-monaco-theme.ts
  • web/src/components/memories-form-field.tsx
  • web/src/components/ui/checkbox.tsx
  • web/src/components/ui/tabs.tsx
  • web/src/components/webhook-response-status.tsx
  • web/src/hooks/use-memory-request.ts
  • web/src/interfaces/database/memory.ts
  • web/src/pages/agent/canvas/node/agent-node.tsx
  • web/src/pages/agent/canvas/node/begin-node.tsx
  • web/src/pages/agent/canvas/node/categorize-node.tsx
  • web/src/pages/agent/canvas/node/data-operations-node.tsx
  • web/src/pages/agent/canvas/node/index.tsx
  • web/src/pages/agent/canvas/node/message-node.tsx
  • web/src/pages/agent/canvas/node/retrieval-node.tsx
  • web/src/pages/agent/canvas/node/switch-node.tsx
  • web/src/pages/agent/debug-content/index.tsx
  • web/src/pages/agent/form-sheet/single-debug-sheet/index.tsx
  • web/src/pages/agent/form/begin-form/parameter-dialog.tsx
  • web/src/pages/agent/form/begin-form/webhook/response.tsx
  • web/src/pages/agent/form/components/dynamic-fom-header.tsx
  • web/src/pages/agent/form/components/output.tsx
  • web/src/pages/agent/form/components/query-variable-list.tsx
  • web/src/pages/agent/form/data-operations-form/index.tsx
  • web/src/pages/agent/form/doc-generator-form/index.tsx
  • web/src/pages/agent/form/doc-generator-form/use-values.ts
  • web/src/pages/agent/form/message-form/index.tsx
  • web/src/pages/agent/form/message-form/use-show-response-status.ts
  • web/src/pages/agent/form/string-transform-form/index.tsx
  • web/src/pages/agent/form/switch-form/index.tsx
  • web/src/pages/agent/run-sheet/index.tsx

本文档记录了 RAGFlow 画布工作流系统中可用的标准组件。这些组件作为构建 AI 智能体工作流的基础模块,涵盖从简单的大语言模型(LLM)调用到包含检索和条件路由的复杂多工具智能体编排。

组件概览

RAGFlow 提供了一套内置组件库,所有组件均继承自 ComponentBase agent/component/base.py:407-585。每个组件由一个参数类(继承自 ComponentParamBase agent/component/base.py:40-187)和一个提供 _invoke_invoke_async 方法的实现类组成。

组件分类

内置组件分为以下几个功能类别:

类别组件用途
大语言模型交互LLM、Agent使用提示模板的直接大语言模型调用和工具增强的 ReAct 智能体。
信息检索Retrieval知识库搜索和上下文感知的内容生成。
控制流Categorize、Switch、Iteration条件分支和迭代执行。
集成Tool、Message、Invoke外部 API 调用、专用工具函数和用户通信。
数据处理DataOperations、StringTransformJSON 操作、过滤和字符串操作(拆分/合并)。
输出生成DocGenerator从文本生成可下载的 PDF、Docx 或 Markdown 文件。

来源:agent/component/base.py:40-187, agent/component/llm.py:83-214, agent/component/message.py:69-70, agent/component/invoke.py:55-56, agent/component/data_operations.py:48-49, agent/component/docs_generator.py:70-71

LLM 组件

LLM 组件 agent/component/llm.py:83-214 提供对语言模型的直接访问,支持可配置的提示和生成参数。

组件结构
RAGFlow · 组件结构 · 图 1
RAGFlow · 组件结构 · 图 1

来源:agent/component/llm.py:34-81, agent/component/llm.py:83-110, agent/component/base.py:407-420

智能体组件

Agent 组件 agent/component/agent_with_tools.py:73-142 实现了 ReAct(推理+行动)循环,该循环迭代调用语言模型来规划行动、调用工具并反思结果。

架构
RAGFlow · 架构 · 图 2
RAGFlow · 架构 · 图 2

来源:agent/component/agent_with_tools.py:39-71, agent/component/agent_with_tools.py:73-111, agent/tools/base.py:22-30, agent/component/agent_with_tools.py:108-111

消息组件

Message 组件 agent/component/message.py:69-228 负责与最终用户的通信,支持流式输出和变量插值。它是将结果呈现回用户界面的主要方式。

逻辑流程
  • 变量插值:使用正则表达式 variable_ref_patt 查找占位符,并用画布中的实际值替换 agent/component/message.py:171-216
  • 流式输出:实现异步生成器 _stream,在内容解析时逐块输出 agent/component/message.py:166-228
  • 记忆集成:可以通过 queue_save_to_memory_task 自动将消息保存到对话记忆 agent/component/message.py:41, 228
  • 下载提取:识别值中的文档元数据(例如 doc_idfilename),以填充 downloads 输出 agent/component/message.py:73-107

来源:agent/component/message.py:44-66, agent/component/message.py:166-228, agent/component/message.py:73-76

Switch 组件

Switch 组件基于逻辑运算处理条件分支。在前端,它由 SwitchForm web/src/pages/agent/form/switch-form/index.tsx:153 表示。

配置和执行
  • 条件:支持多个 "IF" 和 "ELSEIF" 分支,每个分支包含一个条件项数组 web/src/pages/agent/form/switch-form/index.tsx:158-176
  • 逻辑运算符:允许在单个分支内的多个条件项之间选择 ANDOR web/src/pages/agent/form/switch-form/index.tsx:162
  • 比较运算符:支持标准运算符,如 =包含以...开头以...结尾 agent/component/data_operations.py:147-155

来源:web/src/pages/agent/form/switch-form/index.tsx:153-210, agent/component/data_operations.py:138-158

数据和字符串组件

DataOperations 组件

DataOperations 组件 agent/component/data_operations.py:47-49 对 JSON 数据执行结构性转换。

  • 操作:包括 select_keys(选择键)、combine(合并)、filter_values(过滤值)、append_or_update(追加或更新)、remove_keys(移除键)和 rename_keys(重命名键)agent/component/data_operations.py:43
  • 递归求值:可以使用 ast.literal_eval 递归解析对象中字符串化的 JSON 字段 agent/component/data_operations.py:95-112
StringTransform 组件

StringTransform 组件 agent/component/string_transform.py:47-48 提供基本的文本操作。

  • 拆分:根据指定的分隔符将字符串拆分为数组 agent/component/string_transform.py:76-91
  • 合并:将多个变量拼接为单个字符串,支持通过 SandboxedEnvironment 使用 Jinja2 模板 agent/component/string_transform.py:93-112

来源:agent/component/data_operations.py:22-43, agent/component/string_transform.py:29-45, agent/component/string_transform.py:93-104

DocGenerator 组件

DocGenerator 组件 agent/component/docs_generator.py:70-71 允许智能体生成用户可以下载的正式文档。

技术实现
  • 格式:支持 pdfdocxtxtmarkdownhtml agent/component/docs_generator.py:44
  • 存储:生成的文件使用系统的 STORAGE_IMPL(例如 MinIO)存储,并分配一个 doc_id agent/component/docs_generator.py:119-120
  • 元数据:返回包含 doc_idfilenamebase64 数据的 JSON 对象,Message 组件可以使用该对象显示下载链接 agent/component/docs_generator.py:129-138
  • PDF 样式:使用 CJK 字体(例如 "Noto Sans CJK SC")以支持多语言文档生成 agent/component/docs_generator.py:75-77

来源:agent/component/docs_generator.py:37-68, agent/component/docs_generator.py:88-152

Invoke 组件

Invoke 组件 agent/component/invoke.py:55-214 支持外部 HTTP 请求(GET、POST、PUT),以便与第三方 API 集成。

关键逻辑
  • 变量注入:支持使用 {variable_name} 语法将画布变量注入到 URL、请求头和请求体中 agent/component/invoke.py:118-134
  • JSON 强制转换:自动尝试解析参数中字符串化的 JSON,以支持复杂的载荷 agent/component/invoke.py:59-91
  • HTML 清理:可选的 clean_html 参数使用 HtmlParser 从响应中去除标签 agent/component/invoke.py:44, 201-203

来源:agent/component/invoke.py:31-53, agent/component/invoke.py:59-91, agent/component/invoke.py:189-214

组件基础逻辑

所有组件共享由 ComponentBase agent/component/base.py:407-585 管理的通用生命周期。

输出和错误处理

组件使用 set_output(key, value) agent/component/base.py:458-461 存储结果。特殊输出键包括:

  • _ERROR:捕获执行错误 agent/component/base.py:463
  • _elapsed_time:跟踪执行耗时 agent/component/base.py:418
异常路由

组件可以通过 ComponentParamBase agent/component/base.py:47-50 配置对失败的自动响应:

  • Method:定义出错时的行为(例如重试逻辑)。
  • Goto:出错时跳转到特定组件 agent/component/base.py:575-582

来源:agent/component/base.py:40-58, agent/component/base.py:407-470