编程 字节跳动开源的 Go Agent 框架,10K+ Stars 填补 Go 无 LangChain 的空白

2026-07-05 22:29:19 +0800 CST views 9

字节跳动开源的 Go Agent 框架,10K+ Stars 填补 "Go 无 LangChain" 的空白

当 Python 生态的 LangChain、LangGraph 把 AI 应用开发推向工业化的同时,Go 开发者只能眼馋。现在字节跳动的 CloudWeGo 团队交出了自己的答卷——Eino。它不只是简单移植 LangChain,而是用 Go 的方式重新思考了 AI 应用架构:组合优于继承、接口驱动、流式优先。

为什么 Go 需要 LLM 框架?

AI 应用开发已经从"调 API"进化到了"编排工作流"。现代 AI 应用不再是简单的请求-响应,而是涉及多步推理、工具调用、多 Agent 协作、人机交互等复杂流程。

Python 生态里,LangChain 是事实标准。但 Go 开发者面对的是一个尴尬的现实:

框架语言定位成熟度
LangChainPythonAI 应用框架最成熟
LangGraphPython状态图工作流成熟
Google ADKPython/Go/JSAgent 开发较新
LangChain GoGoLangChain 移植功能有限
LinGooseGoAI 编排小众

LangChain Go(tmc/langchaingo)是最接近的选择,但它本质上是 LangChain 的 Go 移植,API 设计带有明显的 Python 味道,而且功能覆盖远不如 Python 版。

字节跳动的 CloudWeGo 团队决定不走了——他们要造一个 Go-first 的 LLM 应用开发框架。这就是 Eino(发音 "aino"),GitHub Stars 已突破 10K。

Eino 是什么

Eino 是一个用 Go 构建的 LLM 应用开发框架。它从 LangChain、Google ADK 等框架中汲取灵感,但严格遵循 Go 的设计惯例。

核心定位可以用一句话概括:组件化 + 编排 + Agent,三件套搞定 AI 应用。

┌─────────────────────────────────────────────┐
│              Eino (核心框架)                  │
│  类型定义 · 流式机制 · 组件抽象               │
│  编排引擎 · Agent 实现 · 切面机制             │
├─────────────────────────────────────────────┤
│              EinoExt (扩展)                   │
│  OpenAI · Claude · Gemini · Ark · Ollama     │
│  Elasticsearch · 回调处理器 · 评估器          │
│  Prompt 优化器 · 可视化调试                   │
├─────────────────────────────────────────────┤
│           EinoExamples (示例)                 │
│  RAG · ReAct Agent · Manus Agent · Deer-Go   │
│  多 Agent 协作 · 人机交互                     │
└─────────────────────────────────────────────┘

设计哲学:Go 的方式做 AI

组合优于继承

每个组件(ChatModel、Tool、Retriever)都是一个接口,可以自由替换实现:

chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
    Model:   "gpt-4o",
    APIKey:  os.Getenv("OPENAI_API_KEY"),
})

// 换成 Claude 只需要换一行
// chatModel, _ := claude.NewChatModel(ctx, &claude.ChatModelConfig{...})

// 换成本地 Ollama
// chatModel, _ := ollama.NewChatModel(ctx, &ollama.ChatModelConfig{...})

流式优先

AI 应用的流式响应不是可选功能——用户不想盯着空白屏幕等 10 秒。Eino 在框架层面就内置了流式支持,自动处理流式拼接、装箱、合并和复制。

切面机制

类似 AOP 的回调机制,可以在固定注入点插入日志、追踪和指标:

  • OnStart:组件开始执行
  • OnEnd:组件执行完成
  • OnError:组件执行出错
  • OnStartWithStreamInput:流式输入开始
  • OnEndWithStreamOutput:流式输出完成

与 OpenTelemetry 无缝集成,享受 Go 原生可观测性生态的完整支持。

核心模块一:ADK(Agent 开发套件)

ADK 是 Eino 最有特色的模块,提供了完整的 Agent 开发能力。

ChatModelAgent:最简单的 Agent

chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
    Model:  "gpt-4o",
    APIKey: os.Getenv("OPENAI_API_KEY"),
})

agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
    Model: chatModel,
})

runner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: agent})
iter := runner.Query(ctx, "你好,你是谁?")
for {
    event, ok := iter.Next()
    if !ok {
        break
    }
    fmt.Println(event.Message.Content)
}

加上工具,Agent 就获得了调用外部能力的能力。Agent 内部自动处理 ReAct 循环——它自己决定什么时候调用工具、什么时候直接回答。

DeepAgent:复杂任务分解

面对需要多步推理的复杂任务,DeepAgent 把问题拆解成步骤,委派给子 Agent,并追踪进度。它可以协调多个专业化 Agent、执行 Shell 命令、运行 Python 代码、搜索网页。

五种多 Agent 协作模式

模式说明典型场景
Sequential按顺序执行多个 Agent写作→审核→发布
Parallel并行执行多个 Agent同时搜索多个数据源
Loop循环执行直到满足条件代码生成→测试→修复循环
Supervisor主管分配任务给子 Agent一个调度 Agent 管理多个专业 Agent
Plan-Execute先规划再执行,可重规划复杂项目执行

人机交互(HITL)

这是 Eino 的亮点功能。任何 Agent 或工具都可以暂停执行,等待人类输入,然后从检查点恢复。框架提供 5 种人机交互模式:

  • 审批模式:Agent 在执行关键操作前请求人类批准
  • 审核-编辑模式:Agent 生成内容后交给人类审核和修改
  • 反馈循环模式:Agent 执行后根据人类反馈迭代改进
  • 跟进模式:Agent 在不确定时向人类请求额外信息
  • Supervisor 模式:人类作为 Supervisor 监督多 Agent 协作

核心模块二:Compose(编排引擎)

当你需要精确控制执行流程时,用 Compose 构建图和工作流。

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)

Graph 是有向无环图(DAG),节点之间可以有条件分支、循环依赖等复杂拓扑。

支持的模型

EinoExt 扩展已支持:

Provider模型
OpenAIGPT-4o, GPT-4 Turbo
AnthropicClaude 3.5 Sonnet
GoogleGemini
字节跳动Ark (豆包)
OllamaLlama 3, Qwen 2.5 等本地模型

安装

go get github.com/cloudwego/eino@latest
go get github.com/cloudwego/eino-ext@latest  # 扩展

总结

Eino 不是 LangChain 的 Go 翻译,而是用 Go 的方式重新思考了 AI 应用开发:

  • 组合优于继承:所有组件都是接口
  • 流式优先:框架层面内置
  • Agent 原生:ReAct、DeepAgent、五种协作模式开箱即用
  • 人机交互:5 种 HITL 模式解决生产环境的信任问题
  • Go 原生可观测:与 OpenTelemetry 无缝集成

如果你是 Go 开发者,想做 AI 应用但不想写 Python,Eino 是目前最成熟的选择。

开源地址:https://github.com/cloudwego/eino

复制全文 生成海报 Go AI Agent 字节跳动 Eino LangChain LLM 开源

推荐文章

Vue3中的v-bind指令有什么新特性?
2024-11-18 14:58:47 +0800 CST
Test Article ASCII Only
2026-06-28 02:15:46 +0800 CST
Flet 构建跨平台应用的 Python 框架
2025-03-21 08:40:53 +0800 CST
jQuery中向DOM添加元素的多种方法
2024-11-18 23:19:46 +0800 CST
程序员茄子在线接单