eino
字节跳动开源的 Go 语言 AI 应用开发框架,参考 LangChain,提供 Agent、Tool
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
字节跳动开源的 Go 语言 AI 应用开发框架,参考 LangChain,提供 Agent、Tool
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你是一名后端 Go 工程师,团队使用 Go 构建高性能微服务,现在需要接入大语言模型能力,构建一个智能问答 Agent。翻遍 GitHub,能找到的 AI 框架几乎都是 Python 生态的 LangChain——这意味着你必须面对 Python 的 GIL 限制、动态类型调试困难、以及与现有 Go 服务集成的巨大摩擦。
这并非个例。随着 LLM API 的开放,越来越多的 Go 团队渴望在服务端引入 AI 能力,但主流 AI 开发工具链几乎被 Python 垄断。Eino(读作 ["eino"])正是为解决这个痛点而生——它是字节跳动 CloudWeGo 团队开源的 Go 语言 AI 应用开发框架,参考 LangChain 的设计理念,但完全遵循 Go 语言规范和工程实践。
该框架在 GitHub 上已收获 11,500+ Stars,Fork 数接近 940,吸引了大量 Go 开发者的关注。字节跳动自身也将其定位为生产级工具,用于构建内部 AI 应用。
Eino 由字节跳动旗下 CloudWeGo 团队开发和维护。CloudWeGo 是字节跳动开源的高性能 Go 框架家族,旗下已有 Kitex(RPC 框架)、Hertz(HTTP 框架)等知名项目,均已在字节跳动内部经过海量流量验证。Eino 的出现,补齐了 CloudWeGo 在 AI 应用层的空白,形成了从底层通信框架到上层 AI 编排的完整工具链。
框架的设计思路融合了多个成熟方案:组件模型借鉴了 LangChain 的可组合设计,Agent 开发套件(ADK)参考了 Google ADK 的架构理念,编排引擎借鉴了 LangChain.js 的图执行模型,但全部用 Go 实现,并严格遵循 Go 社区的代码规范(如 golangci-lint 强制导出函数有 GoDoc)。
Eino 的整体架构可以分为三个核心层次:
第一层:组件(Components)层。 这是框架的基础原子单元,包含:
ChatModel:对话模型封装,官方提供 OpenAI、Claude、Gemini、Ollama、百度文心、阿里通义等实现Tool:工具抽象,使 Agent 能够调用外部系统(搜索、计算、数据库查询等)Retriever:检索器,用于 RAG(检索增强生成)场景Embedding:向量化模型封装Prompt:提示词模板管理Document:文档处理第二层:编排(Composition)层。 将组件串联成工作流:
Chain:顺序链,将多个节点顺序执行Graph:有向无环图(DAG),支持条件分支和并行执行Branch:条件分支,根据中间结果路由到不同处理节点第三层:Agent 开发套件(ADK)层。 构建自主智能体:
ChatModelAgent:基于对话模型的简单 Agent,内置 ReAct 推理循环DeepAgent:深度 Agent,支持多子 Agent 协调、任务分解GraphTool:将整个 Graph 发布为 Agent 可调用的工具框架的核心执行单元是 Runner,负责驱动整个执行流程,支持流式输出(streaming)和事件迭代器(Iterator)模式,使得构建实时 AI 应用成为可能。
1. 纯 Go 实现,工程体验好
Eino 是真正的 Go 原生框架,所有代码用 Go 编写,利用 Go 的并发模型(goroutine/channel)天然支持高并发 AI 推理请求。无需引入 Python 运行时,也不会遇到 GIL 限制。对于已经使用 Go 构建后端服务的团队,Eino 可以无缝集成到现有架构中。
2. 流式处理原生支持
与 Python 生态需要额外处理不同,Eino 在框架层原生处理流式输出。数据在节点之间流动时,框架自动完成流的拼接、装箱、合并和复制,开发者无需关心底层流处理细节。代码示例中的 Iterator 模式使得流式消费 AI 响应变得极为自然。
3. 可中断恢复(Interrupt/Resume)
这是 Eino 的亮点特性之一。在 Agent 执行过程中,任意工具或节点都可以主动暂停,等待人工输入后再从断点恢复。框架自动处理状态持久化和路由跳转。这一特性在需要人工审批、人机协作的场景(如金融风控、医疗辅助诊断)中非常实用。
4. Callback Aspect 机制
借鉴 AOP 思想,Eino 提供了细粒度的回调钩子:在组件/图的 OnStart、OnEnd、OnError、OnStartWithStreamInput、OnEndWithStreamOutput 等生命周期节点注入日志、链路追踪和指标采集逻辑,实现无侵入式横切关注点。
5. 组件开箱即用(eino-ext)
字节跳动维护了独立的组件库 eino-ext,提供了大量经过生产验证的组件实现,包括各种 LLM 提供商适配器、Elasticsearch 检索器等。降低了从零开发的工作量。
上手门槛——中等。 Eino 是 SDK 形式的框架,不是独立部署的服务,需要通过 Go 代码调用。这既是优势(完全可控)也是门槛(需要 Go 编程能力)。
安装只需一行:go get github.com/cloudwego/eino。快速开始也非常简洁——几行代码就能让一个 ChatModel Agent 运行起来。
不过,要用好 Eino 需要理解几个核心概念:
model.eval()Graph[Input, Output] 的泛型结构,类型安全但学习曲线稍陡对于完全没有 Go 基础的开发者,上手会有一定难度。但对于有 Go 经验的工程师,Eino 的 API 设计非常直观,示例代码质量高,文档(中英文)也比较完善。
部署方面,Eino 没有 Web UI 或 Docker 支持,本身是库而非服务。部署就是将你的 Go 应用编译打包。没有 GPU 要求,普通服务器即可运行。
1. 生态丰富度不及 LangChain
虽然 Eino 的核心抽象已经相当完善,但作为 2023 年后才快速发展的框架,其第三方组件生态(社区贡献的适配器、工具集成)还远不如 LangChain 丰富。对于一些非主流 LLM 提供商或小众工具,可能需要自行实现组件接口。
2. Agent 能力尚在快速迭代
DeepAgent 等高级功能还比较新,文档和示例相对有限,多 Agent 协调的实战经验积累不足,生产环境中使用需要较完善的测试覆盖。
3. 调试体验有待提升
Go 语言的强类型对调试有一定帮助,但 AI 应用的非确定性使得问题定位本身就很困难。相比 Python 生态有 LangSmith、Semantic Kernel 等调试/监控工具,Eino 目前主要依赖自定义 Callback 来实现可观测性,工具链成熟度有差距。
Eino 的出现代表了 AI 开发框架从「Python 一统」向「多语言协同」的演进趋势。随着 LLM API 的标准化,越来越多的 AI 应用需要在高性能服务环境中运行,而 Go 语言在微服务领域的主导地位意味着 Eino 有望成为 Go 团队接入 AI 能力的首选框架。
从增长曲线看,Eino 的 Stars 从 2024 年初的数千增长到当前的 11,500+,增速稳健。CloudWeGo 团队背靠字节跳动,拥有持续投入和维护的资源保障,这对于企业选型来说是重要加分项。
Eino 的架构设计也契合了当前 AI Agent 化的趋势——框架不仅支持简单的 Chat 场景,更提供了完整的 Agent 构建工具链(DeepAgent + GraphTool + Interrupt/Resume),为构建复杂多步推理 Agent 奠定了基础。
项目信息速览
| 维度 | 内容 |
|---|---|
| 开发语言 | Go 1.18+ |
| 主仓库 | github.com/cloudwego/eino (11,509★) |
| 配套组件库 | github.com/cloudwego/eino-ext (725★) |
| 示例代码库 | github.com/cloudwego/eino-examples |
| 许可证 | Apache-2.0 |
| 文档 | cloudwego.io/zh/docs/eino/ |
| 维护方 | 字节跳动 CloudWeGo 团队 |

图1:Eino 框架架构总览
Eino 由核心层(Components、Composition、ADK)、扩展层(eino-ext)和工具链(eino-examples)三层构成。框架通过统一的 Runner 驱动整个执行流程,Callback Aspects 贯穿全链路提供可观测性。

图2:Chain 顺序编排示意
Chain 是 Eino 最基础的编排原语,将多个处理节点顺序串联,前一个节点的输出自动作为下一个节点的输入。适合简单的内容生成、转换等线性处理流程。

图3:Graph 条件分支与并行执行
Graph 支持构建复杂的 DAG(有向无环图),可以在任意节点设置条件分支(Branch),也可以并行执行多个节点(Parallel)。这是构建多步推理 Agent 的核心编排工具。

图4:ReAct Agent 推理循环
ChatModelAgent 内置了经典的 ReAct(Reason + Act)推理循环:Agent 接收用户请求 → 模型推理下一步行动 → 调用工具 → 观察结果 → 判断是否继续推理或返回最终答案。Eino 将这一循环封装为框架内置行为,开发者只需配置 Model 和 Tools。

图5:GraphTool 将工作流发布为 Agent 工具
Eino 允许将一个完整的 Graph 编译为 InvokableGraphTool,供 Agent 在推理过程中调用。这意味着可以构建领域特定的处理流水线(如「销售数据分析流程」),然后让 Agent 在需要时自主调用,实现确定性业务逻辑与自主推理能力的结合。