Skip to content

第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 能力工程化、产品化

场景PythonGo
训练大模型✅ 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 本章小结

这一章,我们讲了:

  1. AI Agent 是什么:能理解目标、自主规划、调用工具、完成任务的 AI 系统。ChatGPT 是参谋,Agent 是助理。
  2. 为什么 Go 能做 AI Agent:Eino 框架开源、LLM API 标准化、Go 泛型落地——三大变化让 Go 做 Agent 从"能用但费劲"变成"好用且顺手"。
  3. Go 做 AI 的三张牌:快(goroutine 天生并发)、稳(编译期类型检查)、省(一个二进制部署)。
  4. 已经有人在做:字节 AI 中台、运维 Agent、网关智能路由——不是未来,是现在。
  5. 本书的学习路径:四部分 18 章,从 Go 基础到企业落地。两条路线,任你选择。

✅ 知识点检查

学完这一章,试试回答这几个问题:

  • [ ] AI Agent 和普通聊天机器人最核心的区别是什么?
  • [ ] Go 做 AI Agent 的三大优势是什么?
  • [ ] 为什么说"现在"是用 Go 做 AI Agent 的好时机?
  • [ ] 如果你 Go 基础不错,应该走哪条阅读路线?
  • [ ] Mock 模式是什么?它帮你解决了什么痛点?

📚 延伸阅读


🎯 下一章预告

第 2 章,我们不急着写 Agent 代码——

"别急,先把刀磨快。Go 环境搭不对,后面全是坑。"