Apache Flink 社区很高兴地宣布 Apache Flink Agents 0.2.0 版本正式发布,您可以通过以下方式获取 Flink Agents 0.2.0:
请注意,Agents 0.2.0 是一个预览版本(Preview Version),这意味着:
部分功能可能存在已知或未知的缺陷。您可以通过 Github Issues 查看已知问题列表及其解决状态。
当前的 API 和配置选项处于实验阶段,在未来版本中可能会发生不向后兼容的变更。
我们非常感谢您的任何反馈,无论是分享您的使用案例、建议新功能、帮助定位和修复漏洞,还是其他任何想法。您的见解对我们至关重要。
您可以通过以下方式联系我们:
加入 Apache Flink Slack 并在
#flink-agents-user频道寻求帮助。在 Github Issues 提交功能需求和漏洞报告。
在 Github Discussions 分享您的使用案例和想法。
什么是 Apache Flink Agents?
Apache Flink Agents 是 Apache Flink 的一个新子项目,直接在Apache Flink 的流式运行时(streaming runtime)上构建事件驱动的 AI 智能体(Event-driven AI Agents)。它将流处理与自主智能体统一在同一个框架中,将Apache Flink 经受过实战检验的优势——大规模扩展性、低延迟、容错性和状态管理,与智能体的核心能力——大语言模型(LLMs)、工具、记忆和动态编排有机结合。
为什么 Apache Flink Agents 至关重要?
虽然 AI 智能体在chatbots和copilots等交互式应用中取得了飞速进展,但这些系统通常以同步、一次性交互的方式运行。然而,许多业务场景不能等待用户输入指令后才采取行动。在电子商务、金融、物联网和物流等场景中,必须在感知到实时事件(如支付失败、传感器异常或用户点击)时立即做出关键决策。
要在生产环境中取得成功,企业级Agents必须具备以下能力:
处理实时、高吞吐的事件流,如交易流、传感器异常或用户行为轨迹。
持续且自主地运行,而不仅仅是在收到提示词(prompt)时才运行。
保证安全性、可审计性,并在发生故障时能够恢复。
这些工作不仅需要智能,更需要大规模扩展能力、毫秒级延迟、容错性以及有状态的协调能力。而这些正是 Apache Flink 的核心强项。
此前,尚未有一个统一的框架能将Agentic AI 模式引入 Flink 成熟的流处理生态系统中。Apache Flink Agents 填补了这一空白,将Agents视为始终在线、可靠且可扩展的事件驱动微服务。
核心特性
Apache Flink是流计算领域的事实标准,Apache Flink Agents 继承了分布式、大规模、高可用的结构化数据处理和成熟的状态管理能力,并为Agentic AI 的构建和功能增加了自由的抽象,包括:大语言模型(LLMs)、提示词(prompts)、工具(tools)、记忆(memory)、动态编排、可观测性等。
Apache Flink Agents 的关键特性包括:
大规模扩展与毫秒级延迟:利用 Flink 的分布式处理引擎,实时处理大规模事件流。
无缝的数据与 AI 集成:Agents直接与 Flink 的 DataStream 和 Table API 交互进行输入和输出,实现结构化数据处理与语义 AI 能力在 Flink 内部的平滑集成。
Exactly-Once 一致性:通过外置的 Action State Store 扩展 Flink 原本的 Checkpoint 机制,从而确保 Agent 中 Action 执行、模型推理、工具调用及其影响的精确一直一致性
成熟的Agent抽象:利用广为人知的 AI Agent概念,使具有Agent系统开发经验的开发者能够快速上手并构建应用,无需陡峭的学习曲线。
多语言支持:提供 Python 和 Java 的原生 API,能够无缝集成到不同的开发环境中,允许团队使用其偏好的编程语言。
丰富的生态系统:原生支持对主流模型服务与向量存储的集成,,以及托管在 MCP 服务器上的工具或提示词,同时支持自定义扩展。
可观测性:采用以事件为中心的编排方法,所有智能体行为都由事件连接和控制,从而能够通过事件日志观察和理解智能体的行为。
0.2 版本有哪些新变化?
Java API 功能对齐
在 Flink Agents 0.1 中,部分功能仅在 Python API 中可用。0.2 版本通过在 Java 中增加以下能力的完整支持,弥补了这一差距:
嵌入模型(Embedding Models)
向量存储(Vector Stores)
MCP 服务器(MCP Server)
异步执行(Asynchronous Execution)
至此,Java API 在功能上已与 Python API 完全对齐。
扩展的生态集成
Flink Agents 0.2 引入了对更广泛的模型服务和向量数据库的原生支持:
对话模型(Chat Models):
Python API 现支持 Azure OpenAI。
Java API 增加了对 Azure AI、Anthropic 和 OpenAI 的支持。
嵌入模型(Embedding Models):
- Java API 现支持 Ollama。
向量数据库(Vector Stores):
- Java API 现支持 Elasticsearch。
此外,0.2 版本现支持跨语言资源访问。用户可以在一种语言编写的智能体中,调用另一种语言提供的集成支持。例如:在 Python 智能体中调用 Java 支持的 Azure AI 对话模型。
(注:跨语言资源访问目前不支持在异步执行代码块中使用。使用跨语言集成时,框架内置动作将回退到同步执行。)
记忆系统重构
Flink Agents 0.2 对其记忆管理系统进行了全面升级。相比之前仅支持短期记忆,新版本引入了三种不同的记忆类型:
感官记忆(Sensory Memory): 在单次智能体运行中维护状态并传递上下文。
短期记忆(Short-Term Memory): 在多次智能体运行之间保留精确的上下文信息。
长期记忆(Long-Term Memory): 实现大规模上下文信息的近似语义检索,并提供初步的信息摘要和压缩支持。
持久化执行(Durable Execution)
Flink Agents 0.1 提供了Action级的精确一次执行。在 0.2 版本中,这一能力被精细化到了更小的颗粒度。你现在可以在一个Action内指定特定的代码块进行持久化执行。在故障恢复时,即使整个Action尚未完成,任何已成功执行的持久化代码块都不会重新运行。
这有助于避免:
冗余的模型调用(节省时间、Token 并减少不可预测性)。
重复工具调用产生的副作用(例如:重复付款或重复发送电子邮件通知)。
多版本 Flink 兼容性
Flink Agents 0.1 仅兼容 Apache Flink 1.20.3。
Flink Agents 0.2 现支持更广泛的 Flink 版本:1.20, 2.0, 2.1 和 2.2。
(注:建议始终使用所选 Flink 小版本(x.y)的最新补丁版本(x.y.z),以获得更多已知问题的修复。)
破坏性变更(Breaking Changes)
Python API
创建
ResourceDescriptor的 API 已更改。在之前版本中,用户通过clazz=Type[Resource]指定资源提供者;在 0.2 版本中,应通过clazz=ResourceName指定,我们为内置集成提供了常量字符串。RunnerContext.execute_async方法已更名为durable_execute_async。MCPTool、MCPPrompt和MCPServer不再被视为 API,已从api模块中移出。
配置
ERROR_HANDLING_STRATEGY现在不仅影响 ReAct Agent,而是影响所有智能体。它已从ReActAgentConfigOptions移至AgentExecutionOptions。
Java Ollama 对话模型
对话模型设置中的
extract_reasoning参数类型从string更改为boolean,默认值从false更改为true。引入了新参数
think用于控制是否启用思考模式。extract_reasoning不再影响此行为。
贡献者名单
Apache Flink 社区感谢以下每一位为本次发布努力的贡献者:
Alan Z., Eugene, Ioannis Stavrakantonakis, Liu Jiangang, Marcelo Colomer, Shekharrajak, Weiqing Yang, Wenjin Xie, Xiang Li, Xintong Song, Xuannan, Yash Anand, chouc, dependabot[bot], tsaiggo, twosom
阿里云的 Flink Agents 团队正在北京、上海招聘!如果你对实时计算、AI 数据基础设施充满热情,欢迎加入我们,点击链接或直接邮箱投递!
邮箱:xintong.sxt@alibaba-inc.com