字节笔记本

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 / OnError
  • OnStartWithStreamInput / OnEndWithStreamOutput

适用于日志记录、链路追踪、性能指标采集等场景。

快速开始

安装依赖

bash
go get github.com/cloudwego/eino

ChatModelAgent 示例

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、执行代码

相关资源

开源协议

Eino 基于 Apache-2.0 许可证开源,可自由用于商业和非商业项目。

分享: