agentic_huge_data_base / wiki
页面 Dify · 14 Dify 智能体运行时·DeepWiki 中文全文译文

14 · Dify 智能体运行时(Dify Agent Runtime)

应用编排与外部知识接入 · 聚焦本章的模块关系、源码依据与实现要点。

项目Dify 章节14 状态全文译文 模块系统架构、智能体运行时、记忆与上下文、接口与服务契约
源码线索
  • README.md
  • api/core/agent/base_agent_runner.py
  • api/core/agent/cot_agent_runner.py
  • api/core/agent/cot_chat_agent_runner.py
  • api/core/agent/cot_completion_agent_runner.py
  • api/core/agent/entities.py
  • api/core/agent/fc_agent_runner.py
  • api/core/app/app_config/easy_ui_based_app/agent/manager.py
  • api/core/app/apps/agent_chat/app_runner.py
  • api/core/app/apps/base_app_runner.py
模块标签
  • 系统架构
  • 智能体运行时
  • 记忆与上下文
  • 接口与服务契约
  • 界面与交互

章节正文

Dify 智能体运行时

Dify 智能体运行时

相关源文件

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

  • README.md
  • api/core/agent/base_agent_runner.py
  • api/core/agent/cot_agent_runner.py
  • api/core/agent/cot_chat_agent_runner.py
  • api/core/agent/cot_completion_agent_runner.py
  • api/core/agent/entities.py
  • api/core/agent/fc_agent_runner.py
  • api/core/app/app_config/easy_ui_based_app/agent/manager.py
  • api/core/app/apps/agent_chat/app_runner.py
  • api/core/app/apps/base_app_runner.py
  • api/core/app/apps/chat/app_runner.py
  • api/core/app/apps/completion/app_runner.py
  • api/core/memory/token_buffer_memory.py
  • api/core/prompt/advanced_prompt_transform.py
  • api/core/prompt/agent_history_prompt_transform.py
  • api/core/prompt/entities/advanced_prompt_entities.py
  • api/core/prompt/prompt_transform.py
  • api/core/prompt/simple_prompt_transform.py
  • api/factories/file_factory/message_files.py
  • api/factories/file_factory/validation.py
  • api/providers/trace/trace-langsmith/src/dify_trace_langsmith/entities/langsmith_trace_entity.py
  • api/tests/unit_tests/core/memory/test_token_buffer_memory.py
  • api/tests/unit_tests/core/prompt/test_advanced_prompt_transform.py
  • api/tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py
  • api/tests/unit_tests/core/prompt/test_simple_prompt_transform.py
  • api/tests/unit_tests/core/workflow/nodes/llm/test_node.py
  • api/tests/unit_tests/factories/test_file_validation.py

Dify Agent 运行时是一个专为自主智能体设计的执行环境,提供了多步推理、工具调用和有状态对话管理的强大基础设施。它充当了高层智能体配置(在 Dify 编排工作室中定义)与底层大语言模型(LLM)之间的桥梁。

该运行时基于 Agenton 框架构建,提供了基于 FastAPI 的 REST 接口,支持 Pydantic AI 执行。它支持多种智能体架构,包括思维链(CoT)和直接函数调用(FC),使智能体能够与 Dify 的工具生态系统和知识库进行交互。

核心架构与执行流程

该运行时以 BaseAgentRunner api/core/agent/base_agent_runner.py:53-126 为核心,管理智能体执行的生命周期。它协调提示词转换、通过 TokenBufferMemory api/core/memory/token_buffer_memory.py:30-45 进行记忆检索,以及推理与动作的迭代循环。

智能体执行栈

下图展示了 Dify 应用层、Agent 运行时和外部模型提供商之间的关系。

Agent 运行时系统上下文

Dify · 智能体执行栈 · 图 1
Dify · 智能体执行栈 · 图 1

来源:api/core/agent/base_agent_runner.py:53-126api/core/app/apps/agent_chat/app_runner.py:27-180api/core/agent/cot_agent_runner.py:38-102api/core/agent/fc_agent_runner.py:34-100

关键组件
组件类/实体描述
运行器BaseAgentRunner智能体执行的抽象基类,处理工具初始化和回调设置 api/core/agent/base_agent_runner.py:53
CoT 运行器CotAgentRunner实现思维链推理,解析"思考"、"动作"和"观察"步骤 api/core/agent/cot_agent_runner.py:38
FC 运行器FunctionCallAgentRunner利用原生大语言模型函数调用能力进行结构化工具交互 api/core/agent/fc_agent_runner.py:34
记忆TokenBufferMemory管理对话历史,具有 Token 限制感知能力,防止上下文溢出 api/core/memory/token_buffer_memory.py:30
提示词引擎SimplePromptTransform将应用变量和模板转换为大语言模型可用的提示词消息 api/core/prompt/simple_prompt_transform.py:43
智能体推理策略

Dify 根据模型能力和应用配置支持不同的推理策略:

  1. 思维链(CoT):主要用于不支持原生函数调用的模型,或者需要显式推理步骤的场景。CotAgentRunner 使用"观察"等停止序列来暂停并执行工具 api/core/agent/cot_agent_runner.py:64-66
  2. 函数调用(FC):利用 invoke_llm 方法,配合结构化工具定义 api/core/agent/fc_agent_runner.py:93-100。它同时处理流式工具调用和阻塞响应 api/core/agent/fc_agent_runner.py:122-149

推理循环详情

Dify · 智能体推理策略 · 图 2
Dify · 智能体推理策略 · 图 2

来源:api/core/agent/cot_agent_runner.py:103-173api/core/agent/fc_agent_runner.py:77-160api/core/prompt/simple_prompt_transform.py:48-91

子系统详情

有关运行时特定部分的深入技术文档,请参考以下子页面:

Agenton 框架与层架构

涵盖提供 LayerNodeLayerProvider 抽象的基础框架。它解释了如何组合基于图的计划、如何管理会话快照,以及组合器如何处理执行状态。

Dify 智能体服务器与运行时 API

详细介绍了 FastAPI 服务器实现,包括 POST /run API 请求/事件模式。它描述了将 Agenton 框架连接到 Dify 后端的适配器层,并提供了本地开发和测试的说明。

来源:README.md:93-105api/core/agent/base_agent_runner.py:53-126api/core/app/apps/agent_chat/app_runner.py:27-180