主题
环境准备
这一节我们一次性把开发环境配好:Python + 包管理器 + 编辑器 + 大模型 API Key。
一、安装 uv(Python 界的 pnpm)
Python 的工具链历史上比较混乱(pip、venv、conda、poetry……),新手很容易被劝退。好消息是现在有了 uv:一个用 Rust 写的、极快的「一站式」工具,它能帮你:
- 安装和管理 Python 版本(类似
nvm) - 创建项目、管理依赖(类似
pnpm) - 运行脚本(类似
npx/npm run)
bash
curl -LsSf https://astral.sh/uv/install.sh | shpowershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"bash
brew install uv安装后重新打开终端,验证一下:
bash
uv --version
# uv 0.x.x二、安装 Python
用 uv 安装 Python,一条命令搞定(不需要去官网下载安装包):
bash
uv python install 3.12为什么是 3.12?
3.12 / 3.13 都是稳定且被 AI 库广泛支持的版本。太新的版本有时候部分库还没适配,所以我们选 3.12 作为教程的统一版本。
macOS 用户注意
macOS 自带了一个 python3(通常是比较老的 3.9),不要用它,也不要动它。我们始终通过 uv run 来运行代码,uv 会自动使用正确的 Python 版本。
三、npm → uv 对照表
作为前端,你可以这样理解 uv:
| 你想做的事 | npm / pnpm | uv |
|---|---|---|
| 初始化项目 | npm init | uv init |
| 安装依赖 | npm install axios | uv add httpx |
| 安装开发依赖 | npm install -D eslint | uv add --dev ruff |
| 卸载依赖 | npm uninstall axios | uv remove httpx |
| 根据锁文件装全部依赖 | npm ci | uv sync |
| 运行脚本 | node index.js | uv run main.py |
| 依赖清单文件 | package.json | pyproject.toml |
| 锁文件 | package-lock.json | uv.lock |
| 依赖安装目录 | node_modules/ | .venv/ |
| 临时运行一个工具 | npx xxx | uvx xxx |
.venv 叫做「虚拟环境」,它就是 Python 版的 node_modules:每个项目的依赖装在自己的 .venv 里,互不干扰。记得把它加进 .gitignore(uv 会自动帮你做)。
四、创建你的第一个项目
bash
uv init agent-lab
cd agent-labuv 会生成这样的结构:
text
agent-lab/
├── .gitignore
├── .python-version # 锁定 Python 版本,类似 .nvmrc
├── README.md
├── main.py # 入口文件
└── pyproject.toml # 类似 package.json看看 main.py:
python
def main():
print("Hello from agent-lab!")
if __name__ == "__main__":
main()运行它:
bash
uv run main.py
# Hello from agent-lab!🎉 恭喜,你的第一行 Python 跑起来了!
什么是 if __name__ == "__main__":?
这是 Python 的一个惯用写法,意思是「只有当这个文件被直接运行时才执行 main();如果它被别的文件 import,就不执行」。
类比 JS:有点像 Node.js 里的 if (require.main === module)。现在你只需要知道它是「程序入口」的标准写法即可。
五、配置 VS Code
推荐使用 VS Code(或 Cursor / Qoder 等基于 VS Code 的编辑器),安装这两个扩展:
| 扩展 | 作用 | 前端类比 |
|---|---|---|
| Python(Microsoft 出品,会自动附带 Pylance) | 语法高亮、智能补全、类型检查、调试 | TypeScript 语言服务 |
| Ruff | 代码格式化 + Lint,极快 | Prettier + ESLint |
然后在项目根目录创建 .vscode/settings.json:
json
{
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true
},
"python.analysis.typeCheckingMode": "basic"
}选择解释器
用 VS Code 打开项目后,按 Cmd/Ctrl + Shift + P,输入 Python: Select Interpreter,选择项目里的 .venv。这样编辑器才能正确识别你安装的库,提供代码补全。 (如果还没有 .venv,先执行一次 uv sync 或 uv add 任意一个包就会自动创建。)
六、获取大模型 API Key
Agent 的「大脑」是大模型,我们需要通过 API 调用它。本教程的所有代码都使用 OpenAI 兼容接口——这是业界事实标准,国内外绝大多数模型平台都支持。你只需选一家注册即可:
| 平台 | base_url | 模型名示例 | 说明 |
|---|---|---|---|
| DeepSeek | https://api.deepseek.com | deepseek-chat | 便宜、能力强,推荐新手首选 |
| 阿里云百炼(通义千问) | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen-plus | 新用户免费额度多,还提供 Embedding 模型 |
| Moonshot(Kimi) | https://api.moonshot.cn/v1 | 以控制台为准 | 长上下文 |
| OpenAI | https://api.openai.com/v1 | 以控制台为准 | 需要海外网络和支付方式 |
模型名会更新
大模型迭代非常快,模型名称经常更新。上表的 base_url 比较稳定,模型名请以各平台控制台/文档为准。
关于 Embedding 模型
第三阶段的 RAG 章节需要用到「Embedding(向量化)模型」。DeepSeek 目前不提供 Embedding 接口,到时候你可以额外注册一个通义千问(text-embedding-v3)或 OpenAI(text-embedding-3-small)。现在先不用管。
把 Key 存进 .env
永远不要把 API Key 写死在代码里! 和前端项目一样,我们使用 .env 文件。在项目根目录创建 .env:
bash
# .env —— 以 DeepSeek 为例
LLM_API_KEY=sk-xxxxxxxxxxxxxxxx
LLM_BASE_URL=https://api.deepseek.com
LLM_MODEL=deepseek-chat并确认 .gitignore 中有 .env:
bash
echo ".env" >> .gitignore安全提醒
API Key 泄露 = 别人用你的钱。提交代码前务必检查 .env 没有被 git 追踪。如果不小心泄露了,立刻去平台控制台删除这个 Key 并重新生成。
七、验证:让大模型跟你打个招呼
安装两个依赖:
bash
uv add "openai>=1.68,<2" "python-dotenv>=1,<2"把 main.py 改成:
python
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv() # 读取 .env 文件到环境变量
client = OpenAI(
api_key=os.getenv("LLM_API_KEY"),
base_url=os.getenv("LLM_BASE_URL"),
)
response = client.chat.completions.create(
model=os.getenv("LLM_MODEL"),
messages=[{"role": "user", "content": "用一句话向一位前端工程师打个招呼"}],
)
print(response.choices[0].message.content)运行:
bash
uv run main.py如果你看到大模型的回复,说明一切就绪!🎉 这段代码现在看不懂完全没关系,我们会在第二阶段逐行讲解。
常见报错排查
ModuleNotFoundError: No module named 'openai':没有用uv run运行,或者没执行uv add openai。AuthenticationError/ 401:API Key 不对,检查.env是否在项目根目录、有没有多余空格或引号。NotFoundError/ 404:base_url或模型名写错了。- 连接超时:检查网络;使用 OpenAI 需要海外网络环境。
小结
- ✅ 用 uv 管理 Python 版本和依赖,它就是 Python 界的 nvm + pnpm
- ✅
.venv≈node_modules,pyproject.toml≈package.json - ✅ 始终用
uv run xxx.py运行代码 - ✅ API Key 放在
.env,绝不提交到 git
环境准备完毕,开始我们的 Python 速成之旅吧 → 给前端的 Python 导读