Skip to content

第2章 别急,先把刀磨快

第1章讲完了AI Agent是什么、为什么现在学。这一章不急着写Agent代码——我有个朋友,代码写得漂亮,但每次换电脑都要花半天修环境。学AI的第一步,不是AI,是把工具准备好。 环境装对了,后面全是坦途;装错了,每走一步都是坑。


2.1 朋友问我怎么学AI

2.1.1 你不是不会Python,你是在哪写都不知道

去年有个朋友来找我:"我想学AI开发,你觉得我应该从哪开始?"

我说你先装个Python。

他愣了两秒:"……Python?不是应该先学PyTorch吗?"

这个问题我听过无数次。很多人一上来就想跑模型、训数据,结果连 import 都报错不知道为啥。学AI的第一步不是AI,是Python。就好像你想当赛车手,第一件事不是上赛道,而是先考个驾照。

Python不是你工具箱里的一个工具——它就是那个工具箱本身。这一节先把它装好。


2.1.2 安装Python(别在生产环境瞎装)

python.org 下载安装包。关键选择:版本号

  • 不要用Python 2——它已经停止维护了,但有些老系统默认装的还是它
  • 推荐Python 3.10或3.11——稳定、兼容性好,AI生态的库基本都支持
  • Python 3.12/3.13也可以——但个别库可能有兼容性问题,新手建议保守一点

安装完验证一下:

bash
python3 --version
# Python 3.11.9

如果你用的是macOS,系统自带了Python 3,但版本可能偏旧。建议用Homebrew装一个独立的:

bash
brew install python@3.11

为什么要用独立的Python? 因为系统自带的Python是给系统工具用的,你乱装包可能把系统搞崩。就像你不会用厨房的水果刀去砍骨头——工具要对,场景要对。


2.1.3 虚拟环境:你第一个AI项目的"独立房间"

装完Python之后,你可能会想:直接 pip install 不就行了?

可以,但千万别这么干。

问题出在哪? 假设你有两个项目:

  • 项目A用了 langchain==0.3.0
  • 项目B用了 langchain==0.4.0

如果你把所有的包都装在全局,这两个版本会打架。要么A跑不了,要么B报错,要么两个都挂。

虚拟环境就是给每个项目一个独立房间——房间里放什么包、什么版本,互不影响。

创建虚拟环境:

bash
# 创建
python3 -m venv agent_env

# 激活(macOS / Linux)
source agent_env/bin/activate

# 激活(Windows)
agent_env\Scripts\activate

激活后,你的终端前面会多一个 (agent_env) 标记——表示你现在在这个"房间"里了。这时候 pip install 的所有包都只装在这个房间里。

退出虚拟环境

bash
deactivate

2.1.4 一个标准项目骨架

装好Python、建好虚拟环境之后,我习惯按这个结构组织项目:

my-agent-project/
├── .env              # API Key等敏感信息(不要提交到git)
├── .gitignore        # 告诉git哪些文件不用管
├── requirements.txt  # 项目依赖清单
├── src/              # 源代码
│   ├── __init__.py
│   ├── main.py       # 入口文件
│   └── agent/        # Agent相关模块
├── data/             # 数据文件
└── tests/            # 测试

你不一定要一模一样,但有几点值得注意:

  1. .env 文件存敏感信息——API Key、数据库密码放这里,别硬编码到代码里
  2. requirements.txt 是必须的——别人拿到你的项目,pip install -r requirements.txt 一键装好
  3. __init__.py 让文件夹变成Python包——这样你才能 from src.agent import xxx

2.2 依赖地狱,我也踩过

2.2.1 pip:最基本的包管理

pip 是Python自带的包管理工具。用它的场景就三个:

bash
# 装包
pip install langchain

# 卸载
pip uninstall langchain

# 看装了啥
pip list

装包的时候建议加版本号

bash
# 不推荐
pip install langchain

# 推荐
pip install langchain==0.3.30

为什么不推荐不加版本号?因为你的代码是基于某个特定版本写的。半年后你换台电脑,pip install langchain 可能装到 0.5.0——你的代码就全崩了。

锁定整个环境的版本

bash
# 导出当前环境的所有包和版本
pip freeze > requirements.txt

# 别人拿到 requirements.txt 后
pip install -r requirements.txt

这就是 requirements.txt 的作用——不是"建议装这些包",而是"必须装这些版本才能跑"


2.2.2 conda:更重的方案

如果你做数据分析或者机器学习,可能会遇到 conda。它和 pip 的区别:

pipconda
管什么Python包Python包 + 非Python依赖(如C库)
来源PyPIconda-forge / Anaconda
虚拟环境venv内置环境管理
体量重(几百MB起步)

对于AI Agent开发,pip + venv就够了。只有当你需要装一些有复杂C依赖的库(比如某些科学计算库)时,conda才更省心。


2.2.3 依赖地狱与如何避免

做AI开发,你迟早会遇到下面这个场景:

ERROR: langchain 0.3.30 requires pydantic>=2.0, but you have pydantic 1.10.0

这就是"依赖地狱"——包A要求某个库的版本≥X,包B要求同一个库的版本≤Y,X > Y,无解。

几个减少麻烦的习惯

  1. 先建虚拟环境再装包——全局装多了肯定打架
  2. requirements.txt 锁定版本——保证环境可复现
  3. 一次装一个包——别 pip install a b c d e 一行搞定,出错了你不知道是哪个引起的
  4. 如果冲突了,删掉环境重建——别花两小时调试依赖冲突,重建只要两分钟

2.3 工具选对了,写代码是享受

工具没有"最好",只有"最适合你的场景"。


2.3.1 VSCode(推荐)

适合:写项目代码、日常开发

优点

  • 免费、轻量、启动快
  • Copilot插件——AI帮你写代码(本书讲的就是怎么造这种AI)
  • 终端内置——不用来回切换窗口
  • 插件生态丰富:Python、Jupyter、GitLens……

装好VSCode后必装的插件

  • Python(微软官方):代码提示、调试、测试
  • Pylance:更快的语法分析和自动补全
  • Jupyter:在VSCode里跑Notebook

2.3.2 PyCharm

适合:大型项目、团队协作

优点

  • 开箱即用的全功能IDE
  • 重构工具强大
  • 数据库工具内置

缺点

  • 重——启动比VSCode慢
  • 专业版收费(社区版够用,但缺一些功能)

如果你来自Java/Go背景,PyCharm的操作逻辑会更亲切。


2.3.3 Jupyter Notebook / JupyterLab

适合:数据探索、实验性代码、教学演示

优点

  • 代码分"单元格"运行,改一个单元格不用重新跑全部
  • 输出(图表、表格)直接显示在代码下面
  • 适合"边写边看结果"

缺点

  • .ipynb 文件不利于版本管理(git diff 很难看)
  • 不适合写完整项目

本书的使用建议:前几章你可以用Jupyter边学边试,但到了第四部分做项目时,必须切回 .py 文件——真实的Agent系统不是跑在Notebook里的。


2.4 这些库,后面会一个个认识

装完环境,先看一眼你接下来会频繁打交道的几个库。不用现在就装,心里有个地图就行。


2.4.1 LangChain 与 LangGraph

LangChain 是你组装AI应用的"积木箱"——Prompt模板、模型调用、输出解析、记忆管理……每个功能是一块积木,你用 | 管道符把它们串起来。

LangGraph 是LangChain的"升级版"——当你的应用不再是"一条直线",而是"有分支、有循环、有状态"的时候,用它。它用状态机的方式来组织Agent的行为。

简单场景 → LangChain(一条链串到底)
复杂场景 → LangGraph(分支、循环、条件跳转)

本书第11章会详细讲这两个框架的核心原理。


2.4.2 向量数据库

为什么AI Agent需要数据库?因为LLM的"知识"是训练时固定的,它不知道你公司的内部文档、不知道今天的新闻。

RAG(检索增强生成) 的思路是:把文档转成向量存起来 → 用户提问时检索相关内容 → 把内容塞给LLM → LLM基于这些"参考资料"回答。

向量数据库就是存这些向量的地方:

特点
ChromaDB轻量、Python原生、适合原型和小项目
FAISSMeta开源、速度快、适合大规模检索
Milvus企业级、分布式、适合生产环境

本书用ChromaDB——轻、快、和LangChain集成好。


2.4.3 其他你会遇到的库

不要求你记住这些。 后面每用一个库,我都会讲它是干什么的、为什么用它。这只是一个"地图预览"——让你知道接下来的路上会遇到什么。


2.5 不想花钱先学?Mock模式了解一下

2.5.1 一个真实的痛点

学AI开发最大的门槛不是技术,是

调用GPT-4的API要花钱。一次对话几毛钱,听起来不多,但你学一个项目跑几十次、几百次——积少成多,一个月几百块就没了。

更麻烦的是,有些读者在国内,调OpenAI的API还得折腾VPN。还没开始学呢,先被网络问题卡住。

我当年学AI Agent的时候就被这个问题困扰了很久。 所以这本书做了一个"Mock模式"。


2.5.2 Mock模式是什么

简单说:假装调用AI,用预设的模拟数据代替真实的API返回

一个环境变量就能切换:

bash
# Mock模式——零成本,离线也能跑
export USE_MOCK=true
python main.py

# 真实模式——连真实AI
export USE_MOCK=false
export API_KEY=你的key
python main.py

2.5.3 Mock模式不是"假的"

有人可能会觉得:"Mock模式不是骗自己吗?返回的都是假的,学个啥?"

不对。Mock模式让你学的是"整个系统的骨架和逻辑",而不是"某一次API的返回内容"。

举个具体的例子——你在做智能客服项目的时候:

  • 逻辑部分:用户提问 → 意图识别 → 查知识库 → 调用工具 → 生成回答。这一整条链路,Mock模式全都能跑。
  • AI部分:只是最后"生成回答"这步用了模拟数据。

你做的是学会怎么搭这套系统,而不是"看AI说了一句什么话"。那套业务逻辑,Mock和真实模式跑出来的是一样的。

学习路径我建议这样

  1. 先用Mock模式把整个项目跑通(理解骨架)
  2. 然后再接入真实API(理解AI的"灵魂")
  3. 两个都理解之后,你自己就能设计Agent系统了

2.5.4 什么情况下不需要Mock模式

如果你的API是免费的(比如某些国产模型的免费额度),或者公司报销API费用,那直接上真实模式也行。

但即使如此,Mock模式还有一个好处——离线跑。你在高铁上、飞机上、咖啡厅没网的时候,照样能写代码、跑逻辑。


2.6 本章小结

这一章我们没写一行Agent代码,但把最重要的准备工作做了:

  1. Python安装与虚拟环境:用独立Python版本 + venv给每个项目一个独立房间
  2. 包管理:pip装包要带版本号,requirements.txt 保平安
  3. 开发工具:VSCode写项目,Jupyter做实验,各司其职
  4. AI开发库地图:LangChain搭积木、LangGraph管状态、ChromaDB存向量——先认识,后面会详讲
  5. Mock模式:零成本学完所有项目,骨架和逻辑才是你要学的

✅ 知识点检查

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

  • [ ] 为什么要给每个项目建独立的虚拟环境?
  • [ ] pip install 的时候为什么要加版本号?
  • [ ] Mock模式帮你解决了什么问题?
  • [ ] 学AI Agent,为什么建议先用Jupyter做实验,再切回 .py 写项目?

📚 延伸阅读


🎯 下一章预告

第3章,我们快速回顾Python核心语法——

"写Agent之前,这些Python够用了。"