generative-ai-for-beginners 课程云环境实战:用 GitHub Codespaces 零安装启动生成式 AI 开发
【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners
本文基于课程第 0 课"课程设置"中的云端安装指南(对应仓库 00-course-setup/01-setup-cloud.md 的英文原文,另有印地语译文 translations/hi/00-course-setup/01-setup-cloud.md)展开,讲解如何在不安装任何本地依赖的前提下,用 GitHub Codespaces 一键拉起 generative-ai-for-beginners 课程的开发环境:读完你将掌握 Fork 仓库并创建 Codespace 的完整流程、仓库预置 dev container 的构成(基础镜像、依赖安装命令、VS Code 扩展)、通过 Codespaces Secrets 安全注入 API Key 的原理,以及.env文件方案下各环境变量(OpenAI / Azure OpenAI / Foundry / Hugging Face)的完整含义,并能自行验证环境是否就绪。
1. 为什么选择 Codespaces
generative-ai-for-beginners是一套用 21 节课教人构建生成式 AI 应用的课程仓库。课程的入口 00-course-setup/README.md 提供了两种环境准备路径:本地安装(00-course-setup/02-setup-local.md)和云端安装。当你不想在本地安装任何东西时,官方推荐的云路径就是GitHub Codespaces:它提供一个浏览器内的 VS Code 实例,并且所有依赖都预装好了。
原文档给出的收益表如下:
| 收益 | 对你的意义 |
|---|---|
| 零安装(Zero installs) | Chromebook、iPad、学校机房电脑都能直接跑 |
| 预构建的 dev container | Python 3、Node.js、.NET、Java 均已内置 |
| 免费额度 | 个人账号每月120 core-hours / 60 GB-hours |
💡Tip保持额度健康的做法是及时停止或删除闲置的 codespace(View ▸ Command Palette ▸Codespaces: Stop Codespace)。
从源码结构看,"预装依赖"并非空话:仓库根目录下的 .devcontainer/devcontainer.json 声明了 Codespace 打开时自动执行的初始化逻辑(详见下文 第 3 节)。这也意味着"零安装"体验在第一次创建时是有代价的——容器需要现场拉取镜像并安装 Python 依赖,首次启动约需 2 分钟(原文档给出的经验值)。
2. 创建一个 Codespace(一次点击)
原文档给出的两步操作如下:
- Fork本仓库(页面右上角Fork按钮)。
- 在你的 fork 中,点击Code ▸ Codespaces ▸ Create codespace on main。
操作完成后:
- ✅ 浏览器中会打开一个 VS Code 窗口,dev container 开始构建,首次约需~2 分钟;
- 构建由 .devcontainer/devcontainer.json 中声明的
updateContentCommand与postCreateCommand驱动:前者执行python3 -m pip install -r requirements.txt(安装 requirements.txt 中钉死的依赖),后者执行bash .devcontainer/post-create.sh补装 SDK 与开发工具链。
创建完成后可顺手验证环境:在 Codespace 内置终端执行python --version应返回 3.12.x(仓库 .python-version 声明为 3.12.10),执行pip show openai确认 SDK 已就位,再参考 00-course-setup/02-setup-local.md 中的验证方式跑通第一个调用即可。
3. 预构建开发环境:dev container 到底帮你做了什么
原文档只说"Python 3、Node.js、.NET、Java 已经在容器里",而 .devcontainer/devcontainer.json 给出了这份"预装清单"的完整证据,也是理解第一次打开 Codespace 时那约 2 分钟在做什么的关键:
| 配置项 | 取值 | 含义 |
|---|---|---|
name | Generative AI For Beginners | 容器显示名 |
image | mcr.microsoft.com/devcontainers/universal:2.13 | 微软官方 Universal 通用镜像,正是"Python 3 / Node.js / .NET / Java 已内置"的来源 |
hostRequirements.cpus | 4 | 要求 Codespace 实例至少分配 4 核 |
waitFor | onCreateCommand | 等待容器创建命令完成后再打开编辑器 |
updateContentCommand | python3 -m pip install -r requirements.txt | 每次打开/更新 codespace 时同步 Python 依赖 |
postCreateCommand | bash .devcontainer/post-create.sh | 容器首次创建后执行补装脚本 |
requirements.txt 中钉死的课程核心依赖包括:ipywidgets==8.1.8、numpy==2.4.2、matplotlib==3.10.8、pandas==3.0.0、tqdm==4.68.4、python-dotenv==1.2.2、openai>=1.12.0、tiktoken、azure-ai-inference、scikit-learn。
而 .devcontainer/post-create.sh 在容器创建后额外安装:
pip install python-dotenv pip install openai pip install ruff black mypy pytest脚本注释说明,ruff black mypy pytest与.github/workflows/code-quality.yml中运行的检查保持一致,贡献者可以在本地(即 codespace 内)复现 CI 检查。VS Code 扩展方面,devcontainer.json 预装了 Python、Pylance、Jupyter、Black、Ruff、ESLint、Prettier 和 Copilot 等扩展,并配置了按语言选择的保存即格式化(Python 用 Black,JS/TS 用 Prettier),所以课程中的 Jupyter 练习(如 04-prompt-engineering-fundamentals/python/aoai-assignment.ipynb)开箱即可运行。
此外,仓库还保留了 .devcontainer/environment.yml(conda 环境定义,Python 3.10 + openai + python-dotenv + azure-ai-inference)与 .devcontainer/Setup.txt(镜像安装说明),从源码结构看属于早期 conda 方案的遗留物,当前devcontainer.json走的是 pip + universal 镜像路线。
4. 安全地加入 API Key
课程代码统一通过环境变量读取密钥。仓库共享工具模块 shared/python/env_utils.py 中的get_required_env()/validate_env_vars()会调用os.getenv()读取变量,缺失时抛出带提示的ValueError("Please set it in your .env file or environment.");shared/python/api_utils.py 的create_openai_client()也是先显式传参、再回退到os.getenv("OPENAI_API_KEY"),取不到才报错。这解释了原文档为什么说"代码会自动拿到你配置的密钥"——两种注入方式最终都落进进程环境变量。
4.1 方案 A:Codespaces Secrets(推荐)
原文档给出的推荐路径:
- ⚙️ 齿轮图标 → Command Palette →
Codespaces: Manage user secret→Add a new secret - Name:
OPENAI_API_KEY - Value: 粘贴你的 key →Add secret
就这样——Secrets 只保存在 GitHub 侧,codespace 启动时自动注入环境变量,密钥不进入仓库、不进入 git 历史,是零提交风险的做法。
4.2 方案 B:.env 文件(确实需要时再用)
原文档给出的备选命令:
cp .env.copy .env code .env # fill in OPENAI_API_KEY=your_key_here这里有两个配套的安全设计值得说明:
- .gitignore 中明确列出
.env(以及.venv等),保证你填好密钥的.env永远不会被提交; - 仓库提供的模板 .env.copy 是完整的变量清单,不只是
OPENAI_API_KEY,还包含课程后续各课用到的变量:
| 变量 | 用途(来自 .env.copy 注释) |
|---|---|
OPENAI_API_KEY | OpenAI Provider 的密钥 |
AZURE_OPENAI_API_VERSION | 默认已设为2024-10-21(当前稳定 GA 版本) |
AZURE_OPENAI_API_KEY | Microsoft Foundry(原 Azure OpenAI Service)资源密钥 |
AZURE_OPENAI_ENDPOINT | Foundry 资源端点,如https://<resource-name>.openai.azure.com |
AZURE_OPENAI_DEPLOYMENT | 对话模型部署名,如gpt-4o-mini |
AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT | 嵌入模型部署名,如text-embedding-3-small |
AZURE_INFERENCE_ENDPOINT | Microsoft Foundry Models 多提供商目录端点(取代 2026 年 7 月底退役的 GitHub Models) |
AZURE_INFERENCE_CREDENTIAL | Foundry Models API key |
HUGGING_FACE_API_KEY | HuggingFace API / token |
其中AZURE_OPENAI_ENDPOINT与AZURE_OPENAI_API_KEY的组合正是 shared/python/api_utils.py 中create_azure_openai_client()所读取的两个变量(它会把 base_url 拼成<endpoint>/openai/v1/),而python-dotenv在 requirements.txt 中钉死为 1.2.2,正是.env能被课程脚本加载的前提。
5. 小结与额度管理
整套云路径可以归纳为一条主线:Fork 仓库 → Code ▸ Codespaces ▸ Create codespace on main(约 2 分钟构建)→ 用 Manage user secret 注入OPENAI_API_KEY→ 直接跑各课练习。dev container 的构建产物(universal 镜像 + requirements.txt + post-create.sh)决定了你打开 Codespace 时环境已经就绪,而 Secrets 与.env两种注入方式则分别对应"零提交风险"与"需要显式管理文件"的场景。
最后回到原文档的额度提醒:个人账号每月 120 core-hours / 60 GB-hours,长时间挂着的 codespace 会持续消耗配额。用完课程后,通过 View ▸ Command Palette ▸Codespaces: Stop Codespace停止实例,或直接删除闲置 codespace,是保持额度健康的标准操作。
附注:印地语版本 translations/hi/00-course-setup/01-setup-cloud.md 末尾声明该文档由 AI 翻译服务生成,可能与英文原文存在细微差异;本文以英文原文 00-course-setup/01-setup-cloud.md 为准,并结合仓库源码做实现级补充。
【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考