第1章 Go 写 AI?你没听错
你可能早就用过 ChatGPT,也试过让 AI 帮你写代码。但一提到正经做 AI 开发,身边所有人都在说 Python。Go 能写 AI Agent 吗?能,而且比你想象的更适合。这一章,我们把背景讲清楚。
1.1 你还记得第一次用 ChatGPT 的感觉吗?
1.1.1 惊艳过后,发现它只会说不会做
2022 年 11 月,ChatGPT 发布。很多人第一次用的时候,都被吓到了——
问它"用 Go 写个并发爬虫",它真的写出来了。
问它"帮我解释这段 goroutine 泄露的原因",它真的能看懂。
问它"写一篇 Go 微服务架构的文章",它真的写得有模有样。
那时候大家都在说:"完蛋了,程序员要失业了。"
但几年过去了,程序员没失业。因为大家很快发现了一个问题:
ChatGPT 只会"说",不会"做"。
你想让它帮你订机票,它说:"抱歉,我无法直接访问互联网帮您预订机票。"
你想让它帮你查线上服务的 QPS 峰值,它说:"我无法实时访问您的服务器……"
你想让它帮你部署一个服务到 K8s,它说:"我可以给你 yaml 模板……"(然后给你的只是示例,并没有真的帮你部署)。
这就是"聊天 AI"的边界:它能理解你的意图,但没法替你执行动作。
1.1.2 ChatGPT 是参谋,Agent 是助理
AI Agent(智能体),简单说就是:
一个能理解目标、自主规划、调用工具、完成任务的 AI 系统。
可以理解为:
- ChatGPT 是"参谋"——你问它,它给你建议,但动作你自己做
- AI Agent 是"助理"——你告诉它目标,它自己想办法完成,做完汇报结果
举个例子:查线上服务状态
用 ChatGPT:
你:"帮我查一下 production 环境 user-service 的 CPU 使用率"
ChatGPT:"您可以使用 Prometheus 的查询语句:
avg(rate(container_cpu_usage_seconds_total{
namespace='production', container='user-service'
}[5m])) by (pod)
然后在 Grafana 中执行,观察结果即可。"(然后你还是得自己打开 Grafana 查)
用 AI Agent:
你:"帮我查一下 production 环境 user-service 的 CPU 使用率"
Agent:
1. 调用 Prometheus API,查询 CPU 指标
2. 发现 user-service-7f8c 这个 Pod CPU 飙到 92%
3. 主动关联:查部署记录,发现 10 分钟前刚发了一版
4. 返回结果:"user-service CPU 92%,疑似新版本引入性能回退,
建议回滚。需要我执行回滚操作吗?"(你只需要问一句,它连根因都帮你想好了)
1.1.3 那 Go 跟这些有什么关系?
现在问题来了:上面的 Agent 很厉害,但市面上所有的教程都在说——
"装 Python、装 pip、装 LangChain、装 FastAPI……"
那你一个 Go 后端工程师怎么办?你公司的服务全是 Go 写的,部署在 K8s 上,微服务之间 gRPC 通信。为了加一个 AI 功能,难道要新开一个 Python 服务?
不合算。不是不能做,而是没必要。
左边的方案:多一个服务,多一层网络调用,多一套部署运维。右边的方案:Agent 直接编译进你的 Go 二进制里,零额外开销。
这就是 Go 做 AI Agent 的第一个理由:和现有服务零摩擦。
1.1.4 为什么是"现在"?
你可能会问:"Go 做 AI 不是一直都能吗?为什么是最近才值得认真搞?"
三个关键变化:
| 变化 | 之前的情况 | 现在的突破 |
|---|---|---|
| Eino 框架开源 | Go 没有成熟的 AI Agent 框架,只能自己撸 | 字节跳动 2024 年开源的 Eino,ChatModel / Tool / Memory / Chain / Graph 全套支持 |
| 大模型 API 标准化 | 每家 LLM 接口都不一样,适配成本高 | OpenAI API 格式已成事实标准,Eino 一行代码切换模型 |
| Go 泛型落地 | Go 1.18 之前只能靠 interface{} 和反射 | 泛型让 Tool 定义类型安全,编译期就能发现错误 |
简单说:以前 Go 做 AI 是"能用但费劲",现在是"好用且顺手"。
1.2 Python 是先行者,Go 是后来居上
1.2.1 为什么 Python 统治了 AI 这么多年?
实话实说,Python 在 AI 领域的地位不是吹出来的:
- NumPy / Pandas:数据处理太方便了
- PyTorch / TensorFlow:模型训练生态最成熟
- LangChain / LangGraph:Agent 框架的标杆
- 社区:教程最多、踩坑经验最丰富
**但注意——这些优势集中在"模型训练"和"数据处理"环节。**而在"把 Agent 部署上线、接入现有系统、跑在生产环境"这件事上,Python 并不占优。
1.2.2 Go 做 AI,强在哪?
Go 的战场不在训练模型,而在把 AI 能力工程化、产品化:
| 场景 | Python | Go |
|---|---|---|
| 训练大模型 | ✅ PyTorch 生态 | ❌ 别想了,不是这块料 |
| 调用大模型 API | 可以,但异步代码写起来费劲 | ✅ goroutine 天然并发,一行 go 搞定 |
| 编译部署 | 要管 venv、pip、系统库 | ✅ 一个二进制文件,扔上去就跑 |
| 容器镜像大小 | 300MB+ | ✅ 15MB 以内 |
| 内存占用 | GIL 限制 + 多进程堆机器 | ✅ 天然低内存,一个进程扛住 |
| 接入现有 Go 微服务 | 需要多维护一个 Python 服务 | ✅ 同一进程,import 就行 |
可以理解为:Python 负责"想到",Go 负责"做到"——用 Python 做原型、做探索,用 Go 做落地、做生产。
1.2.3 已经有人在用了
AI Agent 用 Go 写不是"未来趋势",现在就已经有团队在做了:
案例 1:字节跳动的 AI 中台
字节内部有大量 Go 写的微服务。他们开源 Eino 框架的原因之一,就是自己的业务需要——你不能让几百个 Go 服务都去调一个 Python Agent 服务,多一层网络就是多一层不确定性。Eino 让每个 Go 服务都能自己跑 Agent。
案例 2:运维 Agent
某公司的 SRE 团队用 Go 写了一个运维 Agent:
- 收到告警 → Agent 自动查 Prometheus + 查日志 + 查部署记录
- 判断是代码变更导致的 → 自动生成回滚建议
- 值班人员确认 → Agent 调用 K8s API 执行回滚
- 整个过程,Agent 进程内存占用不到 50MB,CPU 几乎不涨
如果是 Python,同样的逻辑,内存起步 200MB+,高并发下还得加进程。
案例 3:API 网关的智能路由
某团队在 Go 写的 API 网关上集成了 Agent:
- 用户请求进来,Agent 分析请求意图
- 自动路由到对应的模型(简单问题走便宜模型,复杂问题走贵模型)
- 对敏感内容做实时拦截——Agent 判断风险等级,高风险拒绝,低风险放行
这种"嵌在网关里"的场景,Python 完全没法搞——你不能让每个请求都跨进程调一下 Agent。
1.2.4 为什么要现在开始学?
第一,生态刚刚起来。 Eino 2024 年才开源,Go AI 社区的教程、文章、讨论都还很少。现在入场的开发者,两三年后就是"Go + AI"方向的经验老人。
第二,企业需求在涨。 越来越多的公司后端是 Go,老板要求"接 AI"。不是每个团队都能接受"再加一个 Python 服务"的架构方案。能直接用 Go 搞定,就是核心竞争力。
第三,技术栈在融合。 过去 Go 开发者的技能树是 Go + K8s + 数据库 + 微服务;未来要加上 Eino + LLM + Prompt 工程 + Agent 设计——老的够用,新的升值。
1.3 Go 做 AI 的三个理由:快、稳、省
1.3.1 快——天生高并发
Go 的并发模型是语言级的。你在 Python 里写异步代码,要 async / await、要事件循环、要担心阻塞;Go 里就一个 go 关键字。
go
// Go:同时查 10 个数据源
var wg sync.WaitGroup
for _, source := range sources {
wg.Add(1)
go func(s DataSource) {
defer wg.Done()
result := s.Query() // 每个 goroutine 独立执行
results <- result
}(source)
}
wg.Wait()在一个 Agent 需要同时调多个工具、查多个数据源的场景里,goroutine 比 Python 的 asyncio 直观太多。
1.3.2 稳——编译期就能抓错
Python 最大的痛:类型错误要到运行时才暴露。Agent 系统调用链路长,一个类型不匹配可能要到上线后才炸。
Go 的静态类型 + 泛型,让你在编译期就能抓到这些错误:
go
// Eino 的 Tool 定义——类型安全
type WeatherTool struct{}
func (t *WeatherTool) Info() *schema.ToolInfo {
return &schema.ToolInfo{
Name: "get_weather",
Desc: "查询指定城市的天气",
ParamsOneOf: schema.NewParamsOneOfByParams(map[string]*schema.ParameterInfo{
"city": {Type: schema.String, Desc: "城市名", Required: true},
}),
}
}
func (t *WeatherTool) InvokableRun(ctx context.Context, params *WeatherParams) (*WeatherResult, error) {
// 参数类型是编译期确定的,不可能传错
return queryWeather(params.City)
}Python 的 LangChain 写同样的逻辑,参数类型全靠注释和运气。
1.3.3 省——一个二进制搞定一切
部署一个 Python Agent 服务,你要准备:
- Python 版本(3.9? 3.10? 3.11?)
- venv + requirements.txt
- 系统依赖库
- uvicorn / gunicorn 配置
部署一个 Go Agent 服务:
bash
go build -o agent
./agent容器镜像从 300MB 缩到 15MB,启动时间从秒级缩到毫秒级。K8s 的 Pod 调度成本大幅降低。
1.4 两条路,你选哪条?
1.4.1 本书的内容结构
这本书分为四部分、18 章:
第一部分:准备篇(第1-3章)
└─ Go 环境搭建 + Go 核心语法速览
第二部分:原理篇(第4-10章)
└─ AI Agent 核心原理:Eino ChatModel、Tool、Memory、Chain、Graph
第三部分:进阶篇(第11-15章)
└─ goroutine 并发实战、生产安全、MCP + gRPC、边界与架构
第四部分:实战篇(第16-18章)
└─ 3 个企业级项目:智能客服、文档分析、Agent 网关
附录:面试题精选1.4.2 两条阅读路线
路线 A:完整学习(推荐)
适合:Go 基础不扎实,或者想从零系统学习 Go + AI Agent 的读者
路线 B:快速实战
适合:Go 基础扎实,想快速上手用 Eino 做项目的读者
1.4.3 学习建议
建议 1:代码一定要跑
这本书的每一个代码示例,都是完整可运行的。不要只是"看",要复制 → 粘贴 → 运行 → 改改看。改改参数、改改 Prompt、删掉某行代码看看会报什么错——改动是最好的学习方式。
建议 2:先用 Mock 模式,再接真实 API
这本书所有项目都支持 Mock 模式——不用买 API Key、不用连 VPN,就能把代码跑通。先用 Mock 跑通逻辑,再接入真实的 LLM API(通义千问、OpenAI、DeepSeek 都行)。这样你不用花一分钱,就能学完所有内容。
建议 3:Go 老手也别全跳过第 2-3 章
你可能会想:"我 Go 写了三年了,第 3 章还需要看?"——第 3 章讲的不是 Go 基础语法,而是写 Agent 最常用的 Go 特性:goroutine 编排、channel 通信、context 超时控制、泛型在 Tool 定义里的运用。这些跟常规 Web 开发的 Go 写法不太一样,过一遍不亏。
建议 4:加入交流群,别一个人死磕
这本书配套有免费的 AI 学习交流微信群。你遇到的问题,可能已经有其他人问过了。你卡住的地方,可能群友已经遇到过了。一个人学 AI Agent,容易放弃。一群人学,能坚持下来。
1.5 本章小结
这一章,我们讲了:
- AI Agent 是什么:能理解目标、自主规划、调用工具、完成任务的 AI 系统。ChatGPT 是参谋,Agent 是助理。
- 为什么 Go 能做 AI Agent:Eino 框架开源、LLM API 标准化、Go 泛型落地——三大变化让 Go 做 Agent 从"能用但费劲"变成"好用且顺手"。
- Go 做 AI 的三张牌:快(goroutine 天生并发)、稳(编译期类型检查)、省(一个二进制部署)。
- 已经有人在做:字节 AI 中台、运维 Agent、网关智能路由——不是未来,是现在。
- 本书的学习路径:四部分 18 章,从 Go 基础到企业落地。两条路线,任你选择。
✅ 知识点检查
学完这一章,试试回答这几个问题:
- [ ] AI Agent 和普通聊天机器人最核心的区别是什么?
- [ ] Go 做 AI Agent 的三大优势是什么?
- [ ] 为什么说"现在"是用 Go 做 AI Agent 的好时机?
- [ ] 如果你 Go 基础不错,应该走哪条阅读路线?
- [ ] Mock 模式是什么?它帮你解决了什么痛点?
📚 延伸阅读
- Eino 官方仓库:https://github.com/cloudwego/eino
- Eino 官方文档:https://www.cloudwego.io/zh/docs/eino/
- 我的公众号「图解AI系列」:有更多 Go + AI 的图解教程
- 本书配套源码:关注公众号「图解AI系列」免费领取
🎯 下一章预告
第 2 章,我们不急着写 Agent 代码——
"别急,先把刀磨快。Go 环境搭不对,后面全是坑。"

