Dify 智能体运行时
Dify 智能体运行时
相关源文件
本章引用的主要源码文件:
README.mdapi/core/agent/base_agent_runner.pyapi/core/agent/cot_agent_runner.pyapi/core/agent/cot_chat_agent_runner.pyapi/core/agent/cot_completion_agent_runner.pyapi/core/agent/entities.pyapi/core/agent/fc_agent_runner.pyapi/core/app/app_config/easy_ui_based_app/agent/manager.pyapi/core/app/apps/agent_chat/app_runner.pyapi/core/app/apps/base_app_runner.pyapi/core/app/apps/chat/app_runner.pyapi/core/app/apps/completion/app_runner.pyapi/core/memory/token_buffer_memory.pyapi/core/prompt/advanced_prompt_transform.pyapi/core/prompt/agent_history_prompt_transform.pyapi/core/prompt/entities/advanced_prompt_entities.pyapi/core/prompt/prompt_transform.pyapi/core/prompt/simple_prompt_transform.pyapi/factories/file_factory/message_files.pyapi/factories/file_factory/validation.pyapi/providers/trace/trace-langsmith/src/dify_trace_langsmith/entities/langsmith_trace_entity.pyapi/tests/unit_tests/core/memory/test_token_buffer_memory.pyapi/tests/unit_tests/core/prompt/test_advanced_prompt_transform.pyapi/tests/unit_tests/core/prompt/test_agent_history_prompt_transform.pyapi/tests/unit_tests/core/prompt/test_simple_prompt_transform.pyapi/tests/unit_tests/core/workflow/nodes/llm/test_node.pyapi/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 运行时系统上下文
来源:api/core/agent/base_agent_runner.py:53-126、api/core/app/apps/agent_chat/app_runner.py:27-180、api/core/agent/cot_agent_runner.py:38-102、api/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 根据模型能力和应用配置支持不同的推理策略:
- 思维链(CoT):主要用于不支持原生函数调用的模型,或者需要显式推理步骤的场景。
CotAgentRunner使用"观察"等停止序列来暂停并执行工具api/core/agent/cot_agent_runner.py:64-66。 - 函数调用(FC):利用
invoke_llm方法,配合结构化工具定义api/core/agent/fc_agent_runner.py:93-100。它同时处理流式工具调用和阻塞响应api/core/agent/fc_agent_runner.py:122-149。
推理循环详情
来源:api/core/agent/cot_agent_runner.py:103-173、api/core/agent/fc_agent_runner.py:77-160、api/core/prompt/simple_prompt_transform.py:48-91
子系统详情
有关运行时特定部分的深入技术文档,请参考以下子页面:
Agenton 框架与层架构
涵盖提供 LayerNode 和 LayerProvider 抽象的基础框架。它解释了如何组合基于图的计划、如何管理会话快照,以及组合器如何处理执行状态。
Dify 智能体服务器与运行时 API
详细介绍了 FastAPI 服务器实现,包括 POST /run API 请求/事件模式。它描述了将 Agenton 框架连接到 Dify 后端的适配器层,并提供了本地开发和测试的说明。
来源:README.md:93-105、api/core/agent/base_agent_runner.py:53-126、api/core/app/apps/agent_chat/app_runner.py:27-180