Eino 框架:核心组件、Tool 机制、工作流与实战
一、什么是 Eino
Eino 是字节跳动 CloudWeGo 团队开源的一套:
-
面向 AI Agent
-
面向 LLM 应用
-
面向 Workflow 编排
的 Go 语言 AI 应用开发框架。
你可以把它理解成:
“Go 版本的 LangChain + LangGraph + Agent Framework”
但它更偏:
-
工程化
-
高性能
-
可组合
-
Go 原生
-
面向生产环境
二、Eino 的核心设计思想
Eino 的核心理念:
Everything is a Component
即:
-
Model 是组件
-
Prompt 是组件
-
Tool 是组件
-
Memory 是组件
-
Retriever 是组件
-
Workflow 是组件
所有东西都可以:
-
组合
-
编排
-
流式处理
-
并行
-
替换
这也是它最强大的地方。
三、Eino 的整体架构
先看整体:
┌──────────────┐
│ User │
└──────┬───────┘
│
┌──────▼───────┐
│ Workflow │
└──────┬───────┘
│
┌──────────────┼──────────────┐
│ │ │
┌──────▼──────┐ ┌────▼─────┐ ┌──────▼──────┐
│ Model │ │ Tools │ │ Memory │
└─────────────┘ └──────────┘ └─────────────┘
│
┌──────▼──────┐
│ Retriever │
└─────────────┘
Eino 的重点:
-
Component(组件)
-
Chain(链式调用)
-
Graph(工作流)
-
Tool Calling
-
Streaming
-
Multi Agent
四、Eino 核心组件详解
1. Model(模型组件)
模型是 Eino 最核心的组件。
用于:
-
调用 OpenAI
-
调用 Claude
-
调用 Gemini
-
调用 DeepSeek
-
调用 Qwen
-
调用本地模型
基础模型调用
示例:
model, err := openai.NewChatModel(ctx, &openai.ChatModelConfig{
APIKey: os.Getenv("OPENAI_API_KEY"),
Model: "gpt-4o",
})
这里:
ChatModel
本质是:
一个标准化的大模型接口
Eino 会统一:
-
输入格式
-
输出格式
-
流式格式
-
Tool Call
-
多模态
ChatModel 的作用
它负责:
用户输入
↓
Prompt 构建
↓
发送给 LLM
↓
返回 AI 消息
消息结构
Eino 统一了 Message:
type Message struct {
Role Role
Content string
}
角色:
system
user
assistant
tool
这和 OpenAI 完全一致。
2. Prompt(提示词组件)
Prompt 是:
构建 AI 输入
的组件。
PromptTemplate
例如:
template := prompt.FromMessages(
schema.SystemMessage("你是一个 Golang 专家"),
schema.UserMessage("帮我解释 {{question}}"),
)
调用:
msg, err := template.Format(ctx, map[string]any{
"question": "什么是协程",
})
输出:
你是一个 Golang 专家
帮我解释什么是协程
Prompt 的作用
Prompt 不只是字符串。
它还负责:
-
参数注入
-
上下文拼接
-
Chat History
-
Memory 注入
-
Few-shot 示例
-
RAG 内容拼接
3. Tool(工具系统)
这是 Eino 最重要的部分之一。
也是 Agent 的核心。
五、Tool 完整详解
1. 什么是 Tool
Tool 本质:
给 AI 提供“调用外部能力”的接口
例如:
-
查询天气
-
调数据库
-
搜索网页
-
执行代码
-
调 MCP
-
发邮件
-
调 Kubernetes
-
调 GitHub
2. Tool 的本质
Tool = AI 可调用函数
即:
LLM Function Calling
3. Tool 的工作流程
用户提问
↓
LLM 判断是否需要 Tool
↓
生成 Tool Call
↓
Eino 执行 Tool
↓
Tool 返回结果
↓
结果回给 LLM
↓
LLM 生成最终答案
4. Tool 示例
定义 Tool
type WeatherTool struct{}
实现:
func (t *WeatherTool) Info(ctx context.Context) (*schema.ToolInfo, error) {
return &schema.ToolInfo{
Name: "get_weather",
Desc: "查询天气",
ParamsOneOf: schema.NewParamsOneOfByParams(map[string]*schema.ParameterInfo{
"city": {
Type: "string",
Desc: "城市名称",
Required: true,
},
}),
}, nil
}
执行逻辑:
func (t *WeatherTool) InvokableRun(
ctx context.Context,
args string,
opts ...tool.Option,
) (string, error) {
return "北京晴天 25度", nil
}
5. Tool 的两个核心方法
Info()
告诉 AI:
我是谁
我能干什么
参数是什么
相当于:
{
"name": "get_weather",
"description": "查询天气",
"parameters": {}
}
这是给 LLM 看的。
InvokableRun()
真正执行逻辑。
例如:
查数据库
调 API
执行 Shell
6. Tool Calling 过程
例如:
用户:
北京天气怎么样
LLM 输出:
{
"tool_call": {
"name": "get_weather",
"arguments": {
"city": "北京"
}
}
}
Eino:
自动执行 Tool
然后把结果:
北京晴天 25度
再次发给模型。
最终 AI 回复:
北京今天晴天,25度。
7. Tool Registry(工具注册)
多个 Tool:
tools := []tool.BaseTool{
&WeatherTool{},
&SearchTool{},
&SQLTool{},
}
绑定:
agent.WithTools(tools...)
8. Tool 的高级能力
(1) Streaming Tool
支持流式输出:
边执行边返回
适合:
-
长时间任务
-
日志输出
-
AI Coding
-
Shell 执行
(2) Async Tool
异步执行。
(3) Parallel Tool
多个 Tool 并行。
例如:
同时搜索:
GitHub
Google
数据库
(4) Dynamic Tool
动态注册 Tool。
例如:
MCP 动态发现工具
六、Agent 系统
1. 什么是 Agent
Agent:
能自主决策的 AI
它会:
-
思考
-
调工具
-
规划
-
反思
-
执行
2. Agent 工作流
用户问题
↓
LLM 思考
↓
是否调用 Tool
↓
执行 Tool
↓
观察结果
↓
继续推理
↓
输出答案
3. ReAct Agent
Eino 支持:
Reason + Act
即:
Thought
Action
Observation
循环。
4. Agent 示例
agent, err := react.NewAgent(ctx, &react.AgentConfig{
Model: model,
Tools: tools,
})
运行:
resp, err := agent.Generate(ctx, input)
七、Chain(链式调用)
Chain:
多个组件串联
1. Chain 示例
Prompt
↓
Model
↓
Parser
示例代码
chain := compose.NewChain[map[string]any, string]()
chain.AppendLambda(...)
chain.AppendChatModel(model)
chain.AppendLambda(...)
2. Chain 的作用
适合:
-
简单流程
-
单向调用
-
数据转换
八、Graph(工作流系统)
这是 Eino 最强大的部分。
类似:
-
LangGraph
-
DAG Workflow
-
AI Pipeline
1. Graph 的意义
复杂 AI 应用:
不是线性的
而是:
有分支
有循环
有条件
有状态
因此需要:
Graph
2. Graph 示例
┌────Search────┐
Input───┤ ├──Merge──Output
└────RAG───────┘
3. 节点(Node)
Graph 由:
Node
Edge
State
组成。
4. Node 类型
普通节点
graph.AddNode("search", node)
条件节点
if / else
Router 节点
动态路由:
根据问题类型选择流程
Loop 节点
循环执行。
Agent 常用。
5. State(状态)
Graph 的核心。
type State struct {
Messages []schema.Message
Context map[string]any
}
状态会:
在节点间流转
九、Memory(记忆系统)
Memory 用于:
保存上下文
1. 短期记忆
例如:
聊天记录
2. 长期记忆
例如:
用户画像
知识库
偏好
3. Memory 类型
Buffer Memory
简单聊天历史。
Summary Memory
自动总结。
Vector Memory
向量记忆。
十、Retriever(检索系统)
Retriever 是:
RAG 的核心
1. 工作流程
用户问题
↓
向量检索
↓
返回相关文档
↓
拼接 Prompt
↓
LLM 回答
2. Retriever 示例
retriever := vectorstore.NewRetriever(...)
查询:
docs, err := retriever.Retrieve(ctx, query)
十一、Embedding
Embedding:
文本向量化
1. 作用
把文本:
变成向量
用于:
-
相似度搜索
-
RAG
-
推荐系统
2. 示例
embedder := openai.NewEmbedder(...)
十二、Parser(输出解析)
Parser:
把 LLM 输出转结构化数据
1. JSON Parser
例如:
{
"name": "张三",
"age": 18
}
2. Structured Output
现代 LLM:
支持 schema 输出
Eino 能自动解析。
十三、Streaming(流式输出)
Eino 对 Streaming 支持很好。
1. Token Streaming
逐 Token 返回
适合:
-
Chat
-
Coding
-
Agent
2. Event Streaming
不仅文本。
还能:
Tool Event
Node Event
Graph Event
十四、Callback(回调系统)
用于:
-
日志
-
监控
-
Trace
-
Debug
1. Callback 示例
callback.OnStart(...)
callback.OnEnd(...)
十五、MCP 支持
现在 Eino 很重视:
MCP(Model Context Protocol)
1. MCP 是什么
MCP 是 Anthropic 推出的:
AI 工具协议
类似:
AI 世界的 USB
2. Eino + MCP
Eino 可以:
-
接 MCP Server
-
动态发现 Tool
-
调远程 Tool
十六、Eino 的 Workflow 能力
这是它真正强于很多框架的地方。
1. 可视化 AI Pipeline 思维
例如:
用户问题
↓
分类器
↓
┌─────────────┐
│ │
代码问题 普通问题
│ │
Coder Agent Chat Agent
│ │
└─────Merge───┘
2. 多 Agent 协作
Eino 非常适合:
Multi Agent
例如:
-
Planner
-
Researcher
-
Coder
-
Reviewer
协同工作。
十七、Eino 与 LangChain 对比
| 对比 | Eino | LangChain |
|---|---|---|
| 语言 | Go | Python |
| 性能 | 高 | 一般 |
| 并发 | 强 | 一般 |
| 工程化 | 强 | 较弱 |
| Agent | 强 | 强 |
| Workflow | 很强 | 一般 |
| Graph | 强 | LangGraph |
| 生产部署 | 更友好 | 偏实验 |
| 学习成本 | 中 | 中 |
十八、Eino 最适合做什么
1. AI Agent
例如:
-
Coding Agent
-
Browser Agent
-
Ops Agent
2. 企业 AI 系统
例如:
-
AI 客服
-
AI 知识库
-
企业 Copilot
3. RAG 系统
例如:
-
文档问答
-
向量检索
4. AI Workflow
例如:
-
自动审核
-
自动分析
-
自动化流程
十九、Eino 学习路线
第一阶段:基础
必须掌握:
-
Go 泛型
-
Context
-
Interface
-
Goroutine
-
JSON
-
HTTP
第二阶段:LLM 基础
必须懂:
-
Prompt
-
Embedding
-
RAG
-
Function Calling
-
Token
-
Streaming
第三阶段:Eino 核心
重点:
-
Component
-
Tool
-
Agent
-
Graph
-
Chain
第四阶段:高级
学习:
-
Multi Agent
-
MCP
-
Workflow
-
Long Memory
-
RAG Pipeline
二十、学习源码顺序
建议按这个顺序读:
schema
↓
model
↓
tool
↓
compose
↓
agent
↓
graph
↓
memory
↓
retriever
二十一、一个完整 AI Agent 的运行过程
用户输入
↓
Prompt 构建
↓
Memory 注入
↓
Retriever 检索
↓
LLM 推理
↓
Tool Calling
↓
Graph 调度
↓
Streaming 输出
↓
最终回答
二十二、Eino 最大的优势
我认为 Eino 最大优势:
1. Go 原生工程化
适合:
-
高并发
-
微服务
-
企业后端
2. Workflow 很强
不仅是:
聊天框架
而是真正:
AI 工作流引擎
3. Tool 体系设计很好
Tool:
-
标准化
-
可组合
-
易扩展
非常适合:
Agent
4. 非常适合生产环境
相比很多 AI Demo 框架:
Eino 更偏:
工业级
二十三、一个典型 Eino 项目结构
project/
├── cmd/
├── internal/
│ ├── agent/
│ ├── tool/
│ ├── workflow/
│ ├── memory/
│ ├── rag/
│ └── model/
├── configs/
├── pkg/
└── main.go
二十四、总结
Eino 本质上是:
一个 Go 的 AI 应用操作系统
它解决的核心问题:
如何把:
LLM
Tool
Workflow
Memory
Retriever
Agent
组合成真正可运行的 AI 系统
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)