什么是 Eino?
Eino 是 CloudWeGo 生态中的开源 Go 框架,提供类型化 LLM Component、使用 Chain、Graph 与 Workflow 的 Core 编排,以及面向自主和多 Agent 应用的 Agent Development Kit。
快速了解
| 全称 | Eino AI 应用开发框架 |
|---|---|
| 创建时间 | 由 CloudWeGo 社区开源 |
| 规范文档 | 官方规范 |
工作原理
Core Component
Eino Core 将常见能力抽象为类型化 Component,包括 ChatModel、Tool、PromptTemplate、Retriever、Document Loader、Indexer、Transformer 和 Lambda。实现可以在接口之后替换,Callback 提供追踪、指标、调试和审计所需的生命周期钩子。这种拆分让 Go 服务能够独立测试检索、生成与 Tool 执行,而不是全部隐藏在一次 Prompt 调用中。
Chain、Graph 与 Workflow
Chain 是最简单的单向组合;Graph 支持有向有环或无环控制流、Branch 与 State;Workflow 是带 Struct 字段映射的有向无环组合。三者都可编译为 Runnable,并处理类型检查、Stream 转换、并发、Callback 注入和节点 Option。应选择能表达所需控制流的最简单形态。
Agent Development Kit
Eino ADK 围绕 Agent 接口构建。ChatModelAgent 组合 ChatModel、Tool、ReAct Loop 与 Middleware,让模型决定是否调用 Tool 并根据结果继续。Sequential、Parallel 与 Loop Workflow Agent 负责确定性协作,AgentAsTool 让父 Agent 委派边界明确的子任务。多 Agent 结构应来自独立职责,而不是把 Agent 数量本身当目标。
Runner、事件与恢复
Runner 是查询 Agent 并接收异步 AgentEvent Stream 的执行边界,也是 Checkpoint、Resume、Interrupt 与 TurnLoop 多轮控制的入口。应用应把事件映射为成功、失败、取消、中断与结果未知等明确终态,把幂等键和 Checkpoint 存在临时模型上下文之外,且不能把 Stream 关闭当成成功证据。
生产边界
Eino 能统一应用结构,但编译成功的 Graph 或正在运行的 Agent 都不是安全与质量保证。外围服务仍需认证调用方、逐对象和副作用鉴权、限制模型与 Tool 循环、校验输出、保护 Secret、隔离 Tenant、处理重复投递并做任务评测与回归。Core、ADK、Component 实现和模型 API 独立演进,因此还要固定并验证版本。
主要特点
- Go 原生抽象:类型化接口与显式错误适配既有后端服务
- 可组合 Core:ChatModel、Tool、Retriever、Template、Loader、Transformer 与 Lambda 实现可替换
- 三种编排形态:Chain、Graph 与 Workflow 覆盖逐步增强的确定性控制流
- Agent Runtime:ADK 提供 ChatModelAgent、Workflow Agent、AgentAsTool、Middleware 与多 Agent 组合
- 事件与状态生命周期:Runner 支持流式执行、中断、Checkpoint、Resume 与多轮控制
- 运行集成:Callback 与 Option 为追踪、指标、策略和逐节点配置提供钩子
常见用途
- 构建结合模型决策、边界明确的 Tool 与流式事件的 Go 助手
- 实现从文档加载、索引和检索到生成的类型化 RAG 流水线
- 使用 Graph 或 Workflow 编码确定性 Branch 与字段映射
- 通过 AgentAsTool 或固定 Workflow Agent 协调专家 Agent
- 为模型与 Tool 执行加入 Checkpoint、人工审批、追踪和回归测试
示例
Loading code...常见问题
Eino 是模型供应商还是应用框架?
Eino 是应用框架,不是基础模型或托管服务。它提供连接模型实现、Tool、Retriever、State 与应用逻辑所需的抽象和编排;模型凭据、Quota、数据条款与供应商行为仍在框架之外。
什么时候用 Eino Core,什么时候用 Eino ADK?
控制流需要确定且可审查时,使用 Core Component 与 Chain、Graph 或 Workflow;模型需要跨轮次动态选择 Tool 或委派任务时,使用 ADK。系统也可以组合两者,把确定性 Workflow 包装成 Agent Tool。
Chain、Graph 与 Workflow 有什么区别?
Chain 只能向前执行;Graph 支持包括 Cycle 和 Branch 在内的复杂有向控制流;Workflow 是带字段级数据映射的有向无环图。应优先选择能表达所需状态与转换的最简单抽象,因为灵活性也会增加测试和恢复复杂度。
ToolsNode 会决定 Agent 应调用哪个 Tool 吗?
不会。ToolsNode 执行外围编排提供的 Tool Call,通常来自 ChatModel 生成的调用;在 ADK 中,ChatModelAgent 负责 ReAct 决策循环。Tool 执行仍需确定性的参数校验、鉴权、超时与幂等控制。
Eino 能否单独让 Agent 达到生产级?
不能。Runner 提供事件输出、Checkpoint、Resume、Interrupt 与多轮控制,但服务仍要定义终态并持久化恢复数据。生产级还需要访问控制、Secret 管理、Tenant 隔离、预算、重试、幂等、可观测性、评测、部署纪律与事件恢复。