字
字节笔记本
2026年2月22日
Eino:字节跳动开源的 Go 语言 LLM 应用开发框架
本文介绍 Eino,字节跳动 CloudWeGo 开源的 Go 语言 LLM 应用开发框架。Eino 借鉴了 LangChain、Google ADK 等开源项目的设计理念,按照 Go 语言惯例设计,提供了完整的组件生态、智能体开发套件和编排能力。
项目简介
Eino(发音 ['aino])是一个专为 Go 开发者打造的 LLM 应用开发框架,由字节跳动 CloudWeGo 团队开源维护。截至目前,该项目在 GitHub 上已获得近万 stars,是 Go 生态中最具潜力的 AI 应用开发框架之一。
Eino 的设计哲学是:在保持 Go 语言简洁、高效特性的同时,提供构建复杂 LLM 应用所需的全部能力。
核心特性
1. 组件生态
Eino 定义了标准化的组件抽象,包括:
- ChatModel:对话模型接口,支持 OpenAI、Claude、Gemini、Ark、Ollama 等
- Tool:工具调用接口,让智能体可以执行外部操作
- Retriever:检索器接口,支持 RAG 场景
- Embedding:嵌入模型接口,用于向量生成
- ChatTemplate:对话模板,管理提示词格式化
所有官方组件实现都在 eino-ext 仓库中维护。
2. 智能体开发套件(ADK)
Eino 提供开箱即用的智能体模式:
- ChatModelAgent:基于对话模型的基础智能体,支持工具调用和 ReAct 循环
- DeepAgent:复杂任务智能体,可将问题拆解为步骤并分派给子智能体
- 人机交互(HITL):支持中断/恢复机制,可在任意节点暂停等待人工输入
3. 编排能力
通过 compose 模块,开发者可以:
- 使用图(Graph)或工作流(Workflow)编排组件
- 将编排好的流程包装为工具供智能体调用
- 实现确定性流程与自主决策的结合
4. 流式处理
Eino 在编排层自动处理流式数据的:
- 拼接(Concatenation)
- 装箱(Chunking)
- 合并(Merging)
- 复制(Duplication)
组件只需实现业务相关的流式范式,框架负责底层复杂性。
5. 回调切面
支持在固定切点注入自定义逻辑:
OnStart/OnEnd/OnErrorOnStartWithStreamInput/OnEndWithStreamOutput
适用于日志记录、链路追踪、性能指标采集等场景。
快速开始
安装依赖
bash
go get github.com/cloudwego/einoChatModelAgent 示例
go
package main
import (
"context"
"fmt"
"os"
"github.com/cloudwego/eino/adk"
"github.com/cloudwego/eino/components/tool"
"github.com/cloudwego/eino/compose"
"github.com/cloudwego/eino-ext/components/model/openai"
)
func main() {
ctx := context.Background()
// 创建 ChatModel
chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
Model: "gpt-4o",
APIKey: os.Getenv("OPENAI_API_KEY"),
})
// 创建智能体
agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Model: chatModel,
})
// 创建 Runner
runner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: agent})
// 执行查询
iter := runner.Query(ctx, "Hello, who are you?")
for {
event, ok := iter.Next()
if !ok {
break
}
fmt.Println(event.Message.Content)
}
}添加工具
go
agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Model: chatModel,
ToolsConfig: adk.ToolsConfig{
ToolsNodeConfig: compose.ToolsNodeConfig{
Tools: []tool.BaseTool{weatherTool, calculatorTool},
},
},
})使用编排
go
// 创建图
graph := compose.NewGraph[*Input, *Output]()
graph.AddLambdaNode("validate", validateFn)
graph.AddChatModelNode("generate", chatModel)
graph.AddLambdaNode("format", formatFn)
// 添加边
graph.AddEdge(compose.START, "validate")
graph.AddEdge("validate", "generate")
graph.AddEdge("generate", "format")
graph.AddEdge("format", compose.END)
// 编译并运行
runnable, _ := graph.Compile(ctx)
result, _ := runnable.Invoke(ctx, input)框架结构
Eino 采用模块化设计,主要包含:
| 模块 | 说明 | 仓库 |
|---|---|---|
| Eino Core | 类型定义、流处理、组件抽象、编排、切面机制 | cloudwego/eino |
| EinoExt | 组件实现、回调处理器、评估器、提示优化器 | cloudwego/eino-ext |
| Eino Devops | 可视化开发和调试工具 | eino-ext/devops |
| EinoExamples | 示例应用和最佳实践 | cloudwego/eino-examples |
适用场景
- AI 聊天机器人:基于对话模型构建智能客服、问答系统
- RAG 应用:结合检索器实现知识库问答
- 多智能体系统:使用 DeepAgent 协调多个专业智能体
- 工作流自动化:将 LLM 能力集成到现有业务流程
- 工具增强 AI:让智能体能够调用外部 API、执行代码
相关资源
- GitHub 仓库:cloudwego/eino
- 官方文档:Eino 用户手册
- 快速开始:Eino 快速开始指南
- 示例代码:eino-examples
- 组件扩展:eino-ext
开源协议
Eino 基于 Apache-2.0 许可证开源,可自由用于商业和非商业项目。
分享: