大数据是指规模巨大、类型多样的数据集合,这些数据通过先进的数据处理技术进行分析,可以从中提取有价值的信息和知识。大数据通常具有以下四个特点,即4V:1. **Volume(大量)**:数据量巨大,通常需要PB(皮字节)级别的存储空间。2. **Veloci
摘要:【大数据 & AI】Flink Agents 源码解读 (4) AgentPlan 目录【大数据 & AI】Flink Agents 源码解读 (4) AgentPlan0x00 概要0x01
【大数据 & AI】Flink Agents 源码解读 --- (4) --- AgentPlan
目录【大数据 & AI】Flink Agents 源码解读 --- (4) --- AgentPlan0x00 概要0x01 基本概念1.1 定义1.2 在系统中的位置和作用1.3 流程0x02 具体功能2.1 编译2.2 提供数据0x03 与 Flink 原生的关系3.1 核心对应点(AgentPlan ↔ JobGraph)3.2 非对应点3.3 总结0x04 与智能 Agent “规划(Planning)” 的核心相似性4.1 核心目标4.2 核心特征4.2.1 Agent规划4.2.2 AgentPlan0xFF 参考
0x00 概要
AgentPlan 是 Flink Agent 框架中的一个核心组件,它起到连接用户定义的 Agent 和实际执行环境之间的桥梁作用。AgentPlan 的核心职责如下:
解析用户定义的 Agent 中的动作(Action)、事件监听规则、资源提供者(ResourceProvider);
提供 AgentPlan 运行时的核心接口(获取事件对应的动作、获取资源、读取动作配置等);
统一管理 Agent 依赖的各类资源(如模型、工具、Prompt、MCP 服务等)的创建与复用。
0x01 基本概念
AgentPlan 本质上是将用户友好的Agent定义转换为运行时可执行的结构化表示,使得执行引擎可以高效地处理Agent逻辑。
1.1 定义
定义如下:
class AgentPlan(BaseModel):
"""
从用户自定义 Agent 编译得到的智能体执行计划
核心作用:封装 Agent 运行所需的动作、事件映射、资源、配置等核心信息
"""
# 动作名称到动作对象的映射
actions: Dict[str, Action]
# 事件类型(字符串格式)到监听该事件的动作名称列表的映射
actions_by_event: Dict[str, List[str]]
# 资源提供者映射:第一层是资源类型,第二层是资源名称,值为对应资源提供者
resource_providers: Dict[ResourceType, Dict[str, ResourceProvider]] | None = None
# Agent 的全局配置
config: AgentConfiguration | None = None
# 私有缓存:已创建的资源实例(避免重复初始化),键为 (资源类型, 资源名称)
__resources: Dict[ResourceType, Dict[str, Resource]] = {}
1.2 在系统中的位置和作用
AgentPlan 在系统中的位置和作用如下:
用户定义的Agent
↓
↓ (AgentPlan.from_agent)
AgentPlan(编译后的执行计划)
↓
↓(LocalRunner 使用)
LocalRunner(实际执行)
AgentPlan 与 Flink 集群的关系如下:
部署阶段:AgentPlan 被序列化并通过 CompileUtils 传递给运行时操作符(如 ActionExecutionOperator)。
运行时行为:操作符使用 AgentPlan 决定如何处理事件和执行动作,但不会修改 AgentPlan 本身。
资源配置:实际资源(如模型连接、工具等)在运行时通过 ResourceProvider 提供,这不改变 AgentPlan 的结构。
并行度调整的影响如下:
状态恢复:故障恢复或手动调整并行度时,Flink 会重新分配键控状态,AgentPlan 结构保持一致。
检查点兼容性:若需更改 AgentPlan(如添加新动作),必须考虑检查点兼容性和状态演化策略。
1.3 流程
AgentPlan 的流程如下:
编译:将用户定义的Agent 转换为可执行的计划
映射管理:维护事件类型和动作之间的映射关系
资源提供:管理和提供各种资源(模型、工具、提示等)
配置存储:存储和提供动作的配置参数
解耦:将用户接口和执行实现解耦,提供统一的执行计划接口
0x02 具体功能
2.1 编译
from_agent 将用户定义的高级 Agent 对象转换为可执行的计划 AgentPlan。
