ByteNoteByteNote
agents-go 对比 LangChain:两种框架哲学
字

字节笔记本

2026年10月24日 · 约 10 分钟读完

agents-go 对比 LangChain:两种框架哲学

API中转
¥120

MCP 工具生态

本文是《从 0 写 Agent》系列第 50 章。这个系列基于开源项目 agents-go(OpenAI Agents SDK 的 Go 移植版),用 Go 从零实现一个生产级 Agent 运行时;本章讲「agents-go vs LangChain:两种 Agent 框架哲学」。

读完这 49 章,你精通了 agents-go。但市场上还有其他 Agent 框架,最出名的是 LangChain(Python)。

这一章对比 agents-go 和 LangChain 的设计哲学差异。理解差异,你才能在不同场景选对工具。


设计哲学的根本差异

维度agents-goLangChain
语言GoPython
核心理念最小显式(小接口、显式组合)最大集成(大量集成、链式组合)
Agent 循环一个 runner.loop,看得到LCEL/AgentExecutor,较抽象
抽象层薄(接口少,实现可见)厚(Chain/Agent/Tool/Memory 多层)
集成数少(OpenAI/Anthropic/MCP/Sandbox)极多(几百个集成)
学习曲线平缓(接口小)陡(概念多)

一句话,agents-go 是"少即是多"(小接口、显式、可读),LangChain 是"大而全"(多集成、多抽象、快速接入)。


Claude Code

核心抽象对比

Agent 定义

agents-go,一个结构体,字段即配置:

go
agent := &agents.Agent{
    Name: "助手",
    Instructions: agents.StaticInstructions("..."),
    Model: "openai/gpt-4o",
    Tools: []agents.Tool{tool1, tool2},
}

LangChain,多种方式,概念多:

python
# 方式一:create_agent
agent = create_agent(model, tools, prompt)

# 方式二:AgentExecutor(旧)
agent = AgentExecutor(agent=..., tools=..., memory=...)

# 方式三:LCEL Chain
chain = prompt | model | output_parser

agents-go 只有"一个 Agent 结构体"一种定义方式。LangChain 有多种,新人容易困惑选哪个。

工具定义

agents-go,函数 + 泛型反射 schema(第 3 章):

go
tool := agents.NewFunctionTool("get_weather", "查天气", getWeather)

LangChain,@tool 装饰器或 StructuredTool:

python
@tool
def get_weather(city: str) -> str:
    """查天气"""
    ...

两者体验类似,LangChain 的 Pydantic 类型推导更顺滑(agents-go 作者承认)。

记忆

agents-go,Session 接口 + 三后端(第 8 章),显式传入:

go
agents.Run(ctx, agent, input, agents.RunOptions{Session: sess})

LangChain,Memory 抽象(ConversationBufferMemory 等),挂在 AgentExecutor 上:

python
agent = AgentExecutor(agent=..., memory=ConversationBufferMemory(...))

agents-go 更显式(Session 是 RunOptions 的参数),LangChain 更隐式(Memory 是 Agent 的属性)。


哲学差异的根源

agents-go(和 OpenAI Agents SDK)的哲学,显式、小接口、可读。

  • 接口小(Model 两个方法、Session 四个方法、Tool 一个构造函数)
  • 组合显式(NewFallbackModel(NewRetryModel(...)) 看得见嵌套)
  • 代码可读(runner.loop 就是循环,看得到每一步)

LangChain 的哲学,集成丰富、抽象层多、快速接入。

  • 几百个集成(文档加载器、向量库、工具、模型)
  • 多层抽象(Chain/Runnable/Agent/Memory/Tool)
  • 生态最大(你想要的大概率有现成的)

两种哲学各有道理,agents-go 适合"想理解内部、要部署到生产"的团队;LangChain 适合"要快速接入大量服务、在 Python 生态里"的团队。


优劣势对比

agents-go 的优势

  1. 可读性,循环看得到,调试容易
  2. 部署,单二进制,运维简单
  3. 并发,goroutine 天然并发
  4. 类型安全,编译期检查
  5. 可控,小接口,行为可预测

LangChain 的优势

  1. 生态,几百个集成,快速接入
  2. Python 生态,AI/ML 库大多 Python
  3. 社区,最大最活跃的 Agent 社区
  4. 迭代快,新模型/新功能快速跟进
  5. 文档/教程多,学习资源丰富

各自的劣势

agents-go 劣势LangChain 劣势
生态小(集成少)抽象厚(内部难看清)
AI/ML 库少部署重(Python 依赖)
社区小版本变动快(API 常改)
文档少并发要 async 满天飞

选型建议

你的场景推荐理由
Go 团队,做后端 Agent 服务agents-go语言一致,部署简单
要快速原型,接大量服务LangChain生态大,接入快
要理解 Agent 内部agents-go代码可读
数据科学/ML 团队LangChainPython 生态
生产部署,要求稳定agents-go单二进制,类型安全
要用最新模型/最新功能LangChain跟进快

核心判断,你的团队用什么语言、你要"快速接入"还是"可控可部署"。


诚实说明

agents-go 是 OpenAI Agents SDK 的 Go 移植,它本身比较新,生态和社区远不如 LangChain。如果你做严肃的生产项目,LangChain 的成熟度和生态是真实优势。

但 agents-go 的价值在于,它让你"理解 Agent 运行时怎么工作"。 即使你最终用 LangChain,理解了 agents-go 的设计(循环、工具、Session、Handoff),你也能更好地用 LangChain,因为你知道它的抽象底下是什么。

这就是本系列的目的,不是让你必须用 agents-go,而是让你理解 Agent 运行时,从而能用好任何框架。


小结

agents-go 和 LangChain 是两种哲学:

  • agents-go,最小显式、小接口、可读、单二进制。适合 Go 团队、生产部署、想理解内部。
  • LangChain,大而全、多集成、多抽象、Python 生态。适合快速接入、数据科学团队。

没有绝对好坏,只有"适合"。 理解差异,按场景选。


下一篇

第 51 章,Agent 框架选型指南。除了 agents-go 和 LangChain,还有 CrewAI、AutoGen、agent-native 等。怎么在这么多框架里选?


本文是《从 0 写 Agent》系列第 50 章,案例代码基于开源项目 agents-go(OpenAI Agents SDK 的 Go 移植版)。全系列目录见总览。

相关文章

分享: