你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
持久任务计划程序与 Durable Task 编程模型相结合,提供用于持久执行、处理状态管理、检查点和分布式协调的基础基础结构,以便代理代码不必这样做。
使用 Durable Task 编程模型,可以使用标准编程构造(如循环、条件和错误处理)在 .NET、Python、Java 和 JavaScript/TypeScript 中生成弹性有状态的有状态代理工作流,而运行时会自动保留状态并从故障中恢复。
尽管 Durable Task 编程模型不是代理框架本身,但它适用于任何 AI 代理框架,包括Microsoft代理框架、LangChain 或直接 LLM API 调用。 这种关注点分离使你能够专注于代理逻辑,而 Durable Task 可大规模处理可靠的执行。
在本文中,你将了解:
- 持久执行为 AI 智能体解决的生产环境挑战
- Durable Task 编程模型支持的代理工作流模式
- Durable Task 技术堆栈如何与 Azure 上的其他代理工作流选项进行比较
持久执行解决的生产环境挑战
在生产环境中执行实际工作的 AI 智能体通常是长时间运行、有状态的,并依赖外部工具和服务。 人机交互、多步骤推理链和工具扩充工作流可以使代理会话保持活跃状态数小时、几天甚至数周。 在此期间,智能体会累积状态,包括对话历史、中间结果以及待决策内容,这些都必须在每一步中保持。
处理大量 LLM 令牌非常昂贵且耗时。 模型提供商可能会施加速率限制,在工作流执行过程中对智能体进行限流。 如果在多步骤代理任务中途发生基础结构故障(如 VM 重启或网络中断),则已消耗的令牌和已花费的时间将丢失。
长时间运行的代理工作流中断(无论是从计算重启、部署、横向扩展事件还是暂时性基础结构故障)都会导致这些成本增加。 如果没有恢复机制,崩溃的代理会话必须从头开始重启,重新使用以前使用的所有令牌并重复以前完成的所有工作。
持久执行解决了这些难题。 Durable Task 运行时会自动检查代理工作流(LLM 响应、工具调用结果和控制流决策)到持久存储的每个状态转换。 当发生故障时,执行会自动从最后一个检查点恢复到健康的虚拟机,而不是从头开始。 已完成的 LLM 调用不会重复执行,从而节省 token 消耗和时间。 具有可配置退避的内置重试策略处理来自 LLM API、外部工具和下游服务的暂时性故障,无需任何其他代码。
智能体式工作流模式
Durable Task 支持一系列代理工作流模式,这些模式分为两大类:
- 确定性工作流:代码定义控制流。 使用标准编程构造编写步骤序列,包括分支、并行度和错误处理。 LLM 被调用作为工作流中的步骤,但不控制整个流程。
- 代理定向工作流(代理循环):LLM 驱动控制流。 代理决定按什么顺序以及任务完成时间调用哪些工具。 提供工具和说明,但代理确定运行时的执行路径。
这两个类别都受益于持久执行,并且可以在同一应用程序中组合使用。 有关包含代码示例的受支持模式的详细信息,请参阅 Agentic 应用程序模式。
比较Azure上的代理工作流选项
除了 Durable Task 技术堆栈之外,还有几个选项可用于在 Azure 上生成代理工作流。 每个选项都有不同的优势和权衡,具体取决于控制流、编程语言支持、AI 框架集成、托管、状态管理和目标受众的要求。 下表可帮助你确定哪一个符合你的需求。
| 能力 | 持久任务 | Microsoft Agent Framework 基于图的工作流 | Logic Apps 代理循环 |
|---|---|---|---|
| 控制流 | 代码定义(命令性) | 代码定义(图结构) | 设计器/声明式编程(JSON) |
| 编程语言 | .NET、Python、Java、TypeScript/JavaScript | .NET,Python | 可视化设计器/JSON |
| AI 框架支持 | 任何框架(Semantic Kernel、LangChain、AutoGen 等)或直接模型 API 调用 | 针对Microsoft代理框架进行优化 | 内置 AI 连接器 |
| 托管 | Azure Functions(通过 Durable Functions)或任意宿主(通过 Durable Task SDK) | 任何,具有一流的 Foundry 托管代理 支持 | Azure Logic Apps 托管服务(消费或标准 SKU) |
| 状态存储 | 可持久化任务调度器(托管) | 带上你自己的(可通过检查点管理器进行扩展) | 逻辑应用运行时(托管) |
| 代理定向工作流 | 使用编排与实体自行构建,或使用 Microsoft Agent Framework 的持久任务扩展 | 内置 | 是的,通过Agent Loop操作 |
| 目标读者 | 后端开发人员 | 应用程序开发人员 | 集成开发人员/低代码用户 |
| 长期任务 | 第一等(小时/天/周/永久) | 通过开发者控制的工作流状态检查点实现支持 | 仅支持 有状态 工作流(最多 90 天) |
| 从故障中恢复 | 自动 | 手动 | 自动 |
| 可观察性 | 在持久任务计划程序控制面板中查看执行历史,或通过 OpenTelemetry | OpenTelemetry,自定义可视化 | Azure Monitor/逻辑应用诊断 |
后续步骤
- 代理应用程序模式
- 适用于 Microsoft Agent Framework 的 耐用任务扩展(预览版)
- 持久任务计划程序概述