第 01 篇 · Eino 定位与组件:认识「队员」
原文链接:https://mp.weixin.qq.com/s/0cBNA5AreL8jZiYhSIPEcg
本文首发于微信公众号「月牙寂」,此处为同步转载。
人类作者:月牙寂(龚浩华)
Agent 作者:月绡凝(小凝)
定位:Agent 实战系列板块一·框架第 01 篇——Eino 定位与组件:为什么 Go 项目选 Eino、9 类组件抽象与官方实现、组件单独用 vs 编排用的区别。
免责声明:本文为学习与技术分享用途,技术细节以官方文档为准。
第 01 篇 · Eino 定位与组件:认识「队员」
导读
实战地图(00 篇)把 Eino 列为 Go 专线主角。本篇「认识队员」:Eino 是什么、为什么 Go 项目值得选它、它的 9 类组件抽象长什么样、组件单独用与编排用的差别。跑通一个最小 ChatModel 调用,你就站在起跑线上了。
一、Eino 是什么(官方定位)
•一句话:字节跳动开源的 Go 语言 LLM 应用开发框架(CloudWeGo 旗下,Apache-2.0,当前 v0.8.0)——覆盖 LLM 应用 DevOps 全流程(开发/调试/追踪/评测);
•血统:借鉴 LangChain/LlamaIndex/Google ADK 的设计,但按 Go 惯例重做——强类型、可读、可靠;
•背书:豆包、抖音、扣子等多业务线、数百服务内部接入,内外用一套代码。
1.1 为什么 Go 项目选 Eino(对照 Python 框架)
|
|
|
|
|
|
|
强类型
|
|
|
|
|
|
|
|
一等公民
|
|
|
|
|
|
|
|
生产服务接入
|
💡 学习要点:Eino =「把 LLM 应用工程的坑,用强类型堵住」Go 的接口 + 泛型让「组件输入输出是什么」编译期就明确——代码即文档。Python 拼起来快,Go 改起来稳。选型:快原型用 Python,上生产服务用 Go。
二、9 类组件抽象(队员清单)
Eino 的每个组件是 Go 接口:固定输入输出类型 + Option + 方法签名。官方实现覆盖主流:
|
|
|
|
| ChatModel |
|
|
| Tool |
|
|
| Retriever |
|
|
| ChatTemplate |
|
|
| Document Loader |
|
|
| Document Transformer |
|
|
| Indexer |
|
|
| Embedding |
|
|
| Lambda |
|
|
•使用范式:先决定「要哪个组件抽象」(我需要一个前锋),再选「哪个实现」(谁当前锋)——抽象与实现分离。
三、最小实战:单独用 ChatModel
import (
"github.com/cloudwego/eino-ext/components/model/openai"
)
func main() {
// 创建一个可调用的 LLM 实例(OpenAI 实现)
model, _ := openai.NewChatModel(ctx, &openai.Config{
APIKey: os.Getenv("OPENAI_API_KEY"),
Model: "gpt-4o",
})
// 直接调用:输入消息数组,得到模型输出
message, _ := model.Generate(ctx, []*schema.Message{
schema.SystemMessage("you are a helpful assistant."),
schema.UserMessage("what does the future AI App look like?"),
})
println(message.Content)
}
•关键:Generate(一次性)/ Stream(流式,返回 StreamReader[*Message])/ BindTools(绑定工具)三个方法——单组件就能跑通 LLM 调用。
💡 学习要点:先跑通「组件单独用」,再学「编排」单独用 = 一个 ChatModel 一个调用;编排 = 多个组件连成图。别跳过第一步——先确认「队员能踢」,再谈「阵型」。
四、单独用 vs 编排用的本质区别
|
|
|
|
|
|
|
|
|
|
|
框架处理流的复制/合并/拼接 |
|
|
|
|
|
|
|
|
|
|
|
|
五、本篇要点(复习卡片)
1Eino:字节 Go LLM 框架(Apache-2.0,v0.8.0)——豆包/抖音在用,覆盖 DevOps 全流程。
2为什么 Go:强类型(代码即文档)/ 性能单二进制 / 流式一等公民 / 生产服务友好。
39 组件:ChatModel/Tool/Retriever/ChatTemplate/Loader/Transformer/Indexer/Embedding/Lambda——抽象与实现分离。
4三方法:Generate(一次)/ Stream(流式 StreamReader)/ BindTools(绑工具)。
5路径:先单独用跑通,再学编排(下一篇)。
六、下一篇预告
第 02 篇(板块一·框架):Eino 编排实战——Chain(单向链)/ Graph(有向图 + Branch)/ Workflow(字段级映射 DAG)三种编排怎么选,以及官方预构建的 ReAct Agent(给模型+工具即跑推理行动循环)。从「单个队员」到「排兵布阵」。
参考资料
•[官方] Eino 开源公告:https://www.cloudwego.io/zh/docs/eino/overview/eino_open_source/
•[官方] Eino 文档总览(组件/编排):https://www.cloudwego.io/docs/eino/overview/
•[官方] Eino GitHub:https://github.com/cloudwego/eino | eino-ext:https://github.com/cloudwego/eino-ext
•[官方] Eino 实践(豆包实战):https://www.cloudwego.io/docs/eino/overview/bytedance_eino_practice/
整理:2026-10-02 月绡凝 · 依据官方文档。
- 点赞
- 收藏
- 关注作者
评论(0)