← Back to 文字

环境准备与学习方法

本文来自《AI 应用开发课程》月份 1 课程文档,已整理为网站文章版本。

1. 学习目标

学完本节后,你应当能够:

  • 明确本月需要的软件和账户。
  • 在 macOS 上搭好 Python 学习环境。
  • 理解课程中的目录、项目和命令如何组织。
  • 用一致的方法记录问题、实验和结论。

2. 前置知识

无。

如果你只会其他语言但不会 Python,这一节也必须从头做完。

3. 本月需要准备的环境

必需软件

  • Homebrew
  • Python 3.11Python 3.12
  • uv
  • git
  • 一个代码编辑器,推荐 VS Code 或 Cursor
  • 一个终端工具,macOS 自带 Terminal 或 iTerm2 均可

必需账户

  • DeepSeek API 账户
  • GitHub 账户

推荐但非必须

  • Postman 或 Bruno,用于调试 API
  • Obsidian 或 Notion,用于记学习日志

4. macOS 环境准备步骤

第一步:检查基础命令

在终端执行:

git --version
python3 --version

预期结果:

  • git 能返回版本号
  • python3 版本建议不低于 3.11

如果 python3 不存在,先安装 Python。

第二步:安装 uv

执行:

brew install uv
uv --version

预期结果:

  • 能看到 uv 版本号

第三步:创建统一学习目录

建议在你的工作区创建以下结构:

month1-workspace/
├── llm_api_lab/
├── prompt_lab/
├── fastapi-ai-service/
├── rd-assistant/
└── notes/

说明:

  • llm_api_lab:用于第 1 周练习
  • prompt_lab:用于第 2 周练习
  • fastapi-ai-service:用于第 3 周练习
  • rd-assistant:用于第 4 周综合项目
  • notes:记录问题、结论、复盘和截图

5. API Key 管理规则

不要把 API Key 直接写在代码里。统一放在 .env 中。

示例:

DEEPSEEK_API_KEY=your_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat

规则:

  • .env 只能本地使用,不应提交到公共仓库
  • 读取配置时通过环境变量或配置类处理
  • 如果将来切模型,只改配置,不要把厂商信息散落到业务代码里

6. 学习记录方法

建议你在 notes/ 下维护三类文档:

study-log.md

每天记录:

  • 今天学了什么
  • 跑了哪些命令
  • 成功了什么
  • 卡在什么地方

error-log.md

每次报错记录:

  • 报错原文
  • 触发条件
  • 排查过程
  • 解决方法

experiment-log.md

记录 Prompt、结构化输出和 Tool Calling 的实验对比:

  • 使用了什么输入
  • 模型返回了什么
  • 哪种 Prompt 更稳定
  • 哪种实现最容易失败

7. 学习时必须遵守的工程规则

  • 所有项目都要创建独立目录。
  • 每个项目都要有 README.md
  • 每个项目都要有最小测试。
  • 每个项目都要有 .env.example
  • 每次实验要保留可复现步骤。

这些规则看起来麻烦,但它们会直接决定你后面是否能顺利做 RAG、Agent 和综合项目。

8. 推荐学习时间安排

工作日方案

  • 每天 2 小时
  • 30 分钟复习昨天内容
  • 中间 60 分钟操作文档
  • 最后 30 分钟整理笔记和总结

周末方案

  • 每天 3-4 小时
  • 先做本周未完成的实验
  • 再做总结和验收

9. 学习中的常见误区

误区一:只看不敲

AI 应用开发是高度实践型技能。只看文档不会形成能力。

误区二:复制即掌握

把代码复制进去能跑,不等于你会写。你必须能独立改一个字段名、加一个参数、改一段逻辑。

误区三:环境问题拖太久

环境问题超过 30 分钟还没解决,先回退到最小可运行状态,而不是继续堆更多工具。

误区四:太早关注高级主题

月份 1 不研究向量数据库、不研究复杂 Agent、不研究前端美化。当前阶段先把 Python、API、服务化和基础抽象做扎实。

10. 学习前检查清单

开始月份 1 前,确认以下项目全部完成:

  • 已安装 python3
  • 已安装 uv
  • 已准备 DeepSeek API Key
  • 已创建学习目录
  • 已准备代码编辑器
  • 已理解 .env 不应提交

11. 自测题

  1. 为什么 API Key 不应该直接写在代码里?
  2. 为什么要把不同阶段练习放在不同项目目录?
  3. 为什么本月需要单独维护错误日志和实验日志?

如果 3 个问题都能用自己的话答清楚,就可以进入 Python 补位模块。

12. 本章与前文关系

本章承接“学习导航”和“4 周学习节奏表”,把抽象的课程安排落地成具体准备工作。你可以把它理解为:后续所有课程运行前的准备层。

如果不把这一层做好,后面你很容易把不同性质的问题混在一起:

  • 代码没写对
  • 命令没跑对
  • 依赖没装对
  • 环境变量没加载

这会大幅提高学习挫败感。

13. 为什么课程在月份 1 一开始就强调环境纪律

很多人把环境准备视为“杂事”,但实际上,工程能力从你如何准备环境就已经开始了。

你后面在做:

  • uv 项目初始化
  • .env 配置读取
  • pytest 测试
  • FastAPI 服务启动
  • DeepSeek API 请求

每一步都依赖稳定、清晰、可复现的本地环境。如果环境混乱,后面你无法判断错误到底来自:

  • Python 语法
  • 项目结构
  • 配置缺失
  • API Key 无效
  • 路径不一致

月份 1 的目标是建立“可诊断性”。环境准备就是可诊断性的第一层。

14. 一套推荐的本地目录组织方法

你可以照下面的方式,把“学习资料”和“练习项目”分开:

词元跳动/
├── 知识库/
│   └── AI应用开发课程/
└── month1-workspace/
    ├── llm_api_lab/
    ├── prompt_lab/
    ├── fastapi-ai-service/
    ├── rd-assistant/
    └── notes/

这样组织的好处是:

  • 文档与代码不混
  • 每个练习项目各自独立
  • 日志、截图、实验记录有单独位置
  • 你后面回顾月份 1 时不会被零散文件淹没

15. 为什么推荐多个练习项目,而不是一个项目从头写到尾

这是课程设计中的一个关键取舍。

一个项目写到底的优点

  • 连续感强
  • 看起来更像真实项目

但它对初学者也有明显问题

  • 错误会累积
  • 目录会越来越重
  • 很难区分“本周新增问题”和“上周遗留问题”

因此月份 1 采用“练习项目 + 综合项目”的双轨方式:

  • 前三周用小项目分别练单项能力
  • 第四周再把能力收束到综合项目

这比从第 1 天就扛一个大项目更适合零基础转入者。

16. 环境变量文件应该如何讲给初学者听

很多新手第一次接触 .env 时,会把它理解成“一个必须有的神秘文件”。其实更准确的理解是:

  • .env 是本地开发阶段常见的配置承载方式
  • 它的作用是把“会变化的配置”从代码中拿出来
  • 它尤其适合存放密钥、模型名、基础 URL、调试开关等内容

对于月份 1 来说,最重要的不是掌握所有配置管理理论,而是建立一个稳定习惯:

  • 代码里不写死密钥
  • 默认值集中管理
  • 配置读取逻辑统一收口

这会直接影响后面 config.py 的设计。

17. 一个完整的环境准备检查流程

建议你在正式开始 Python 模块前,完整走一次下面的流程。

步骤 1:确认基础命令

git --version
python3 --version
uv --version

你此时不是为了记版本号,而是为了确认:

  • 命令是否存在
  • 路径是否正确
  • 当前终端环境是否可用

步骤 2:确认工作目录

pwd
ls

很多后续错误,其实是因为你根本不在自己以为的目录里。

步骤 3:确认 API Key 管理方式

建立一个 .env.example,再复制为 .env。不要一开始就把真实密钥散落在多个脚本里。

步骤 4:确认学习记录位置

确保 notes/ 已存在,并至少创建:

  • study-log.md
  • error-log.md
  • experiment-log.md

18. 错误示例 vs 正确示例

错误示例:把所有敏感信息写死在脚本里

API_KEY = "sk-xxxx"
BASE_URL = "https://api.deepseek.com"
MODEL = "deepseek-chat"

这种写法短期看似方便,长期会带来:

  • 安全问题
  • 配置散落
  • 无法快速切换环境
  • 多个文件状态不一致

正确示例:使用 .env + 统一读取

DEEPSEEK_API_KEY=your_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat
import os

from dotenv import load_dotenv


load_dotenv()

api_key = os.getenv("DEEPSEEK_API_KEY")
base_url = os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com")
model = os.getenv("DEEPSEEK_MODEL", "deepseek-chat")

这种方式的价值,不在于“更高级”,而在于“后续所有章节都能复用”。

19. 本章在研发助手项目中的位置

综合项目 rd-assistant 到第 4 周时会依赖这里确立的全部环境约定:

  • 独立项目目录
  • .env.example
  • 本地 .env
  • notes/ 中的学习与实验记录
  • 统一终端命令习惯

如果这些约定前面没有建立,到了综合项目阶段你会发现 README 很难写,别人也很难复现你的项目。

20. 本章完成后你应该具备的能力

完成本章后,你至少应该做到:

  1. 能清楚描述本地工作目录结构。
  2. 能解释 .env.example.env 的区别。
  3. 能说明为什么月份 1 拆成多个练习项目。
  4. 能记录学习日志,而不是靠临时记忆回忆问题。

21. 如果你卡在这里,先回看哪几章

22. 从本章过渡到下一章的桥接说明

接下来进入 01-Python语言补位/01-Python最小入门.md

环境层准备完成后,你现在需要解决的第一个核心问题是:如何从“会其他语言,但不会 Python”平滑过渡到“能读懂月份 1 后续全部代码”。后面的 Python 模块不会走“百科式语言大全”,而是专门围绕后续 AI 应用开发会用到的能力做最小且扎实的补位。

Fin