7. Eino

Abstract

Eino 入门教程 — Go 语言 LLM 应用框架

Authors

Walter Fan

Status

WIP as draft

Updated

today

Eino(发音 “I know”)是 CloudWeGo 开源的 Go 语言 LLM 应用开发框架,强调类型安全、流式支持与可组合性。其设计借鉴 LangChain 与 Google ADK,同时提供 Go 原生的开发体验。

官方资源:

为什么需要 Eino?

在 Go 生态中构建 LLM 应用时,通常需要:

  • 统一的组件抽象 — ChatModel、Tool、Retriever、Embedder 等可替换实现

  • 编排能力 — 顺序链、有状态图、工作流

  • Agent 模式 — ReAct、多 Agent、人工介入与断点恢复

  • 类型安全与流式 — 编译期校验、原生流式 I/O

Eino 围绕三大支柱满足上述需求:组件抽象层、编排框架、Agent 开发套件(ADK)。

三支柱架构

┌─────────────────────────────────────────────────────────────────┐
│                    Eino Three-Pillar Architecture                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Pillar 1: Component Abstractions                               │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐                │
│  │ ChatModel   │ │ BaseTool    │ │ Retriever   │  ...            │
│  │ ChatTemplate│ │ Embedder   │ │ Indexer     │                │
│  └─────────────┘ └─────────────┘ └─────────────┘                │
│         │                │                │                      │
│         ▼                ▼                ▼                      │
│  Pillar 2: Orchestration Framework                              │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐                │
│  │   Chain     │ │   Graph     │ │  Workflow  │                 │
│  │ (sequential)│ │ (DAG+state) │ │ (field map)│                 │
│  └─────────────┘ └─────────────┘ └─────────────┘                │
│         │                │                │                      │
│         └────────────────┼────────────────┘                      │
│                          ▼                                       │
│  Unified Runtime: runner, channelManager, taskManager, checkPointer │
│                          │                                       │
│                          ▼                                       │
│  Pillar 3: Agent Development Kit (ADK)                          │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐                │
│  │ChatModelAgent│ │ DeepAgent   │ │ MultiAgent  │                │
│  │ (ReAct)     │ │ (subagents) │ │ (host/spec) │                │
│  └─────────────┘ └─────────────┘ └─────────────┘                │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

支柱

主要包/实体

作用

Component Abstractions

ChatModel, BaseTool, Retriever, Embedder, Indexer, DocumentLoader

可复用的可替换组件

Orchestration

Chain, Graph, Workflow, runner, channelManager, taskManager

类型安全的编排与统一执行

ADK

ChatModelAgent, Runner, AgentTool, DeepAgent, MultiAgent

多步推理与工具调用、多 Agent

设计原则

原则

说明

Type Safety

强类型与编译期校验组件连接

Stream-First

流式优先,支持自动拼接、装箱、合并、复制

Composition over Configuration

通过组合简单组件构建复杂行为

Transparency

实现可替换,用户面向抽象编程

Observability

内置切面与回调,便于观测

Go Idioms

遵循 Go 惯例而非照搬其他语言

学习目标

完成本教程后,你将能够:

  • 理解 Eino 的三支柱与核心概念

  • 使用 Chain / Graph / Workflow 编排组件

  • 掌握流式四种范式:Invoke、Stream、Collect、Transform

  • 构建 ReAct Agent 与多 Agent 系统

  • 使用 ADK Runner、中断与检查点实现 Human-in-the-Loop

  • 对接 Eino 生态(eino-ext、eino-examples)

仓库生态

  • Eino Core(本仓库):类型与 schema、组件接口、编排、回调、ADK、预置 Flow

  • EinoExt:组件具体实现(OpenAI/Anthropic、向量库等)、回调实现、可视化与调试

  • EinoExamples:示例应用与端到端用法