一、什么是 Eino

Eino 官方仓库

CloudWeGo 官方网站

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 系统
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐