首页
/ Generative AI for Beginners 课程增强路线图解析:从安全加固到 API 现代化与工程化落地

Generative AI for Beginners 课程增强路线图解析:从安全加固到 API 现代化与工程化落地

2026-09-08 22:04:30作者:董斯意

本指南基于开源仓库 generative-ai-for-beginnersdocs/ENHANCED_FEATURES_ROADMAP.md(及其多语言翻译版)整理而成。该路线图是一份基于对课程代码库全面审查(安全、代码质量、教学有效性三个维度)后产出的改进与升级计划,明确区分了"已完成修复项"与"未来规划项"。读者读完本文后,可以完整掌握这套 21 课生成式 AI 课程体系的增强路径:包括关键安全问题的修复清单、共享工具模块的设计、旧版 API 到 Responses API 的迁移模式、CI/CD 与安全扫描工作流的真实落地方式,以及按优先级排期的实施计划。

路线图背景与总体思路

仓库本身就是一套面向初学者的 21 课生成式 AI 课程(pyproject.toml 中描述为 "A comprehensive 21-lesson curriculum teaching everything you need to know to start building Generative AI applications")。路线图文档的定位并非新增课程内容,而是对课程代码库的一次工程质量审视:哪些问题必须立刻修复、哪些能力应该补齐、哪些过时用法需要升级。

文档开篇的 Executive Summary 给出了明确的分析框架:安全(Security)、代码质量(Code Quality)、教学有效性(Educational Effectiveness)。全文按此框架展开为十大板块,并配套了四阶段实施优先级(即刻 / 短期 / 中期 / 长期)。这份文档的价值在于:它把"课程示例代码"从"能跑"提升到"接近生产级工程实践",学生学到的每个模式都可以直接迁移到真实项目。

1. 安全增强(优先级:关键)

1.1 已完成的即时修复

路线图将安全问题列为最高优先级,并列出五类已在仓库中修复的典型问题:

问题类型 受影响文件 状态
硬编码密钥(SECRET_KEY) 05-advanced-prompts/python/aoai-solution.py 已修复
缺少环境变量校验 多个 JS/TS 文件 已修复
不安全的函数调用 11-integrating-with-function-calling/js-githubmodels/app.js 已修复
文件句柄泄漏 08-building-search-applications/scripts/ 已修复
请求缺少超时设置 09-building-image-applications/python/ 已修复

这五类问题非常典型,几乎覆盖了教学代码常见的全部安全隐患:把密钥写死在源码里、依赖环境变量却不校验、对模型/API 输入不加防护、读写文件不释放资源、HTTP 请求不设超时导致无限挂起。修复方式之一集中体现在下文将介绍的共享工具模块中——例如 make_safe_request() 强制要求 timeout 参数,get_required_env() 对缺失变量直接抛出带提示的错误。

1.2 推荐的补充安全特性

路线图对"已完成"之外,还规划了三项新增安全能力(仍属推荐、未落地):

  1. 限流示例(Rate Limiting):补充展示如何为 API 调用实现限流的示例代码,并演示指数退避(exponential backoff)重试模式。值得注意的是,shared/python/api_utils.py 中的 make_safe_request() 已经内置了重试循环(默认 retries=3),其注释明确标注 "Exponential backoff could be added here",即指数退避正是下一步可扩展点。
  2. API 密钥轮换(API Key Rotation):补充 API 密钥轮换最佳实践文档,并给出使用 Azure Key Vault 或同类服务(如云厂商 Secret Manager)的示例。
  3. 内容安全集成(Content Safety):增加使用 Azure Content Safety API 的示例,演示输入/输出审核(moderation)模式,用于拦截有害内容进出模型。

2. 代码质量改进

2.1 已新增的配置文件

文件 用途
.eslintrc.json JavaScript/TypeScript 的 lint 规则
.prettierrc 代码格式化标准
pyproject.toml Python 工具链配置(Black、Ruff、mypy)

其中 pyproject.toml 是仓库 Python 工程化的核心,实际配置远比路线图描述更细致:

  • [tool.black]:行宽 100,目标版本 py310/py311/py312
  • [tool.ruff]:行宽 100,select 启用 E/W(pycodestyle)、F(Pyflakes)、I(isort)、B(flake8-bugbear)、C4(flake8-comprehensions)、UP(pyupgrade)、S(flake8-bandit 安全规则),并豁免 E501(超长行交给 Black 处理)与 S101(教学代码中常见 assert);
  • [tool.mypy]python_version = "3.10",开启 warn_return_anycheck_untyped_defs 等;
  • [tool.pytest.ini_options]testpaths = ["tests"]addopts = "-v --tb=short"

也就是说,Python 侧同时覆盖了格式、lint、类型检查、测试四条线。

2.2 共享工具模块 shared/python/

路线图规划了 shared/python/ 模块,仓库中已实际落地为三个文件,全部带完整 docstring 与类型标注(type hints):

  • shared/python/env_utils.py:环境变量安全处理。核心函数:
    • get_required_env(var_name, description=None):变量缺失或为空时抛出 ValueError,错误信息会附上用途描述与设置指引;
    • validate_env_vars(*var_names):一次性校验多个变量并返回 {变量名: 值} 字典,把所有缺失项合并到一条错误信息中;
    • get_env_with_default(var_name, default):带默认值读取,适合 MODEL_NAME 这类可选配置。
  • shared/python/input_validation.py:输入校验与清洗,重点防提示注入
    • validate_number_input() / validate_text_input() / validate_email() / validate_url():边界与格式校验,validate_url 默认强制 https://
    • sanitize_prompt_input(value, max_length=1000, strict=False):专门面向 LLM 提示词的清洗函数,会移除空字节与控制字符,删除模板注入({{...}})、变量替换(${...})、<script> 标签、javascript: 协议等危险模式,strict=True 时进一步只保留白名单字符,最后统一空白并截断超长输入。
  • shared/python/api_utils.py:安全的 API 请求封装:
    • make_safe_request(url, method="GET", timeout=30, retries=3, **kwargs):每次请求强制携带超时,失败后按次数重试,配合 raise_for_status() 抛出异常;
    • create_openai_client(api_key=None):从 OPENAI_API_KEY 环境变量构建官方 OpenAI 客户端;
    • create_azure_openai_client(endpoint=None, api_key=None):从 AZURE_OPENAI_ENDPOINT / AZURE_OPENAI_API_KEY 构建指向 Azure OpenAI v1 端点(<endpoint>/openai/v1/)的客户端——这正是路线图 API 现代化中 Responses API 方案的底层支撑;
    • download_image(url, save_path, timeout=30):复用安全请求机制下载图片并自动创建目录。

这三个模块与 tests/ 目录下的 test_env_utils.pytest_input_validation.pytest_api_utils.py 一一对应,测试会直接在 CI 中运行。

2.3 推荐的代码改进方向(未完成项)

  1. Type Hints 全覆盖:为所有 Python 文件补充类型标注;在所有 TS 项目中开启严格模式。目前路线图备注为"仅为维护中的 shared/ 模块完成,课程示例刻意保持简单"。
  2. 文档规范:所有 Python 函数加 docstring、所有 JS/TS 函数加 JSDoc 注释。
  3. 测试框架:Python 侧已落地 pytest(配置见 pyproject.toml,示例测试见 tests/ 并在 CI 运行);JavaScript/TypeScript 侧的 Jest 配置仍在规划中。

3. 教学增强

3.1 拟新增课程主题

路线图规划了三个新增课程(当前仓库仍为 21 课):

  1. AI 应用安全(拟议第 22 课):提示注入攻击与防御、API 密钥管理、内容审核、限流与滥用防范——内容与第 1 节安全增强、docs/SECURITY_GUIDELINES.md 安全指南相互呼应;
  2. 生产环境部署(拟议第 23 课):Docker 容器化、CI/CD 流水线、监控与日志、成本管理;
  3. 高级 RAG 技术(拟议第 24 课):混合检索(关键词 + 语义)、重排序策略、多模态 RAG、评估指标——是对第 15 课 15-rag-and-vector-databases 的进阶延伸。

3.2 现有课程的改进建议

课程 建议改进
06 文本生成 增加流式(streaming)响应示例
07 聊天应用 增加对话记忆模式
08 搜索应用 增加向量数据库对比
09 图像生成 增加图像编辑/变体示例
11 函数调用 增加并行函数调用
15 RAG 增加分块(chunking)策略对比
17 AI Agents 增加多智能体编排

这些改进点都对应仓库中已存在的课程目录(如 06-text-generation-apps07-building-chat-applications 等),属于"在现有课程上加深"的渐进式增强,而非推倒重来。

4. API 现代化

4.1 已完成的弃用 API 模式迁移

路线图中 API 现代化部分更新较快,英文版明确指出:所有 Python 与 TypeScript 的 chat 示例均已从 Chat Completions API 迁移到 Responses APIclient.responses.create(...)response.output_text)。迁移对照表如下:

旧模式 新模式 状态
openai.api_type = "azure" / AzureOpenAI()(chat) OpenAI(base_url="<endpoint>/openai/v1/")(Responses API) 已完成
openai.ChatCompletion.create() / client.chat.completions.create() client.responses.create(input=...)response.output_text 已完成
@azure/openaiOpenAIClient.getChatCompletions()(TypeScript) openai 包的 client.responses.create()response.output_text 已完成
df.append()(pandas) pd.concat() 已完成

这一迁移在课程示例中有大量实证,例如 06-text-generation-apps/python 下的多个示例脚本均使用 responses.create / AzureOpenAI 模式。路线图同时给出一个重要保留条件:

Microsoft Foundry Models 示例(使用 azure-ai-inference / @azure-rest/ai-inference SDK 的 client.complete())仍停留在 Model Inference API——该 API 不支持 Responses API,因此保持原样;而 AzureOpenAI()嵌入(embeddings)与图像生成场景中仍然有效并被有意保留。

这与 shared/python/api_utils.py 的设计完全一致:create_azure_openai_client() 通过 v1 端点(<endpoint>/openai/v1/)调用 Responses API,因此无需再传 api_version

4.2 待演示的新 API 特性

  1. 结构化输出(Structured Outputs):JSON 模式;带严格 schema 的函数调用。
  2. 视觉能力(Vision):用 GPT-4o 做图像分析;多模态提示词。
  3. Responses API 内置工具(取代旧版 Assistants API):代码解释器(code interpreter)、文件搜索(file search)、网页搜索与自定义工具。

5. 基础设施改进

5.1 CI/CD 增强:代码质量工作流

路线图给出了示意性的基线 YAML(code-quality.yml,含 Python 的 ruff/black 检查与 JS 的 eslint 检查),而仓库中 .github/workflows/code-quality.yml实际实现更精细:

  • 触发条件限定 main 分支的 push / pull_request,且只针对 Python/TS/JS 文件及 pyproject.toml.eslintrc.json、工作流自身变更(路径过滤减少无效构建);
  • permissions: contents: read 遵循最小权限原则;
  • Python 质量 Job:对 shared/ 目录的 ruff 与 black 检查是强制的(ruff check shared/black --check shared/,失败即阻断);对全仓库的 ruff check . 则是建议性的(continue-on-error: true),因为课程示例刻意保持简单,不强制达标;
  • Python 测试 Job:安装 pytest openai requests python-dotenv 后运行 pytest tests/,即共享模块的单元测试随 CI 执行;
  • JS/TS 质量 Job:ESLint 8 + TypeScript 解析器/插件,全程 continue-on-error: true 建议性运行。

路线图中的基线示例(供参考):

# .github/workflows/code-quality.yml
name: Code Quality

on: [push, pull_request]

jobs:
  python-lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.10'
      - run: pip install ruff black mypy
      - run: ruff check .
      - run: black --check .

  js-lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npx eslint .

5.2 安全扫描工作流

仓库中 .github/workflows/security.yml 已实际落地:

  • CodeQL 分析:对 javascript-typescriptpython 两种语言采用矩阵策略,fail-fast: false(一种语言失败不阻塞另一种);触发条件为 main 分支 push、pull_request,以及每周一 06:00 UTC 的定时扫描cron: '0 6 * * 1');Job 单独授予 security-events: write 等必要权限;
  • 依赖审查(Dependency Review):仅在 pull_request 上运行(if: github.event_name == 'pull_request'),comment-summary-in-pr: on-failure 让失败时在 PR 内自动生成摘要评论。

路线图中的基线示例(供参考):

# .github/workflows/security.yml
name: Security Scan

on: [push, pull_request]

jobs:
  codeql:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: javascript, python
      - uses: github/codeql-action/analyze@v3

  dependency-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/dependency-review-action@v4

6. 开发者体验改进

6.1 DevContainer 增强(已落地)

仓库中 .devcontainer/devcontainer.json.devcontainer/post-create.sh 均已实现路线图方案。实际配置要点:

  • 基础镜像使用 mcr.microsoft.com/devcontainers/universal:2.13(自带 Python 与 Node,因此无需额外 features),并声明 hostRequirements: cpus: 4
  • VS Code 扩展内置 ms-python.pythonms-python.vscode-pylancems-toolsai.jupyterms-python.black-formattercharliermarsh.ruffdbaeumer.vscode-eslintesbenp.prettier-vscodegithub.copilot
  • 编辑器设置开启 editor.formatOnSave: true,并分别把 Python 默认格式化器绑定到 Black、把 JS/TS 绑定到 Prettier——与仓库的 Black/Prettier 配置对齐;
  • postCreateCommand 执行 bash .devcontainer/post-create.sh,该脚本安装 python-dotenvopenai 以及 ruff black mypy pytest,目的正如脚本注释所述:"与 .github/workflows/code-quality.yml 中的检查一致,贡献者可在本地复现 CI 结果后再提交 PR"。

路线图中的基线示例(供参考):

{
  "name": "Generative AI for Beginners",
  "image": "mcr.microsoft.com/devcontainers/universal:2",
  "features": {
    "ghcr.io/devcontainers/features/python:1": {
      "version": "3.11"
    },
    "ghcr.io/devcontainers/features/node:1": {
      "version": "20"
    }
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.vscode-pylance",
        "ms-toolsai.jupyter",
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode",
        "github.copilot"
      ],
      "settings": {
        "python.formatting.provider": "black",
        "editor.formatOnSave": true
      }
    }
  },
  "postCreateCommand": "pip install -e .[dev] && npm install"
}

6.2 交互式实验环境(规划中)

路线图建议补充:通过环境变量预填 API 密钥的 Jupyter Notebook;面向视觉学习者的 Gradio/Streamlit 演示;用于知识评估的交互式测验。仓库目前已有大量 Jupyter Notebook(各课程 python/ 目录下的 *-assignment.ipynb),但 Gradio/Streamlit 演示与测验仍属未落地项。

7. 多语言支持

7.1 当前语言覆盖情况

技术栈 覆盖课程 状态
Python 全部 完整
TypeScript 06-09, 11 部分
JavaScript 06-08, 11 部分
.NET/C# 部分 部分

这与仓库目录结构一致:Python 示例遍布每个课程目录,TypeScript/JavaScript 示例集中出现在第 06、07、08、09、11 课的 typescript/js-githubmodels/ 子目录中,.NET 示例则以 dotnet/notebook-azure-openai.dib 形式存在于部分课程。

7.2 推荐新增语言

  1. Go:在 AI/ML 工具链中增长迅速;
  2. Rust:适合性能关键型应用;
  3. Java/Kotlin:企业级应用场景。

7.3 翻译状态(已全量完成)

路线图的国际化部分指出:所有翻译均已完整,由 Azure Co-op Translator 自动生成并持续与英文源同步,覆盖 50+ 语言。这与仓库现状吻合——translations/ 目录下存在 ar/bg/zh-CN/ja/ko/ 等数十种语言的课程文档(每种语言 40 个 md + 28 个 ipynb),本地化图片则存放在 translated_images/ 下按语言代码分子目录。各语言文档末尾(如本文对应的 translations/he/docs/ENHANCED_FEATURES_ROADMAP.md)均附有 Co-op Translator 的免责声明,说明 AI 翻译可能存在误差、以英文原版为准。

8. 性能优化

8.1 代码级优化建议

  1. Async/Await 模式:增加批量处理的异步示例,演示并发 API 调用;
  2. 缓存策略:增加嵌入(embedding)缓存示例,演示响应缓存模式;
  3. Token 优化:增加 tiktoken 使用示例,演示提示词压缩技术。仓库依赖中已包含 tiktoken>=0.5.0(见 pyproject.toml),课程第 01、04 课也配有分词器示例图,具备直接落地的条件。

8.2 成本优化示例

  • 按任务复杂度选择模型(简单任务用 mini 级模型,复杂任务用旗舰模型);
  • 面向 token 效率的提示词工程;
  • 批量操作时使用批处理(batch processing)。

9. 无障碍与国际化

路线图列出四项无障碍改进:

  1. 为所有图片补充 alt 文本;
  2. 确保代码示例有正确的语法高亮;
  3. 为所有视频内容添加字幕/转录文本;
  4. 确保颜色对比度符合 WCAG 指南。

以上均属建议项,仓库中暂未见独立的无障碍审计文件佐证其完成状态。

10. 实施优先级(四阶段排期)

路线图将全部工作按时间与依赖关系分为四个阶段,其中勾选项已在仓库中落地,未勾选项为未来规划:

阶段 1:即刻(第 1-2 周)——全部完成

阶段 2:短期(第 3-4 周)——大部分完成

  • [x] 更新弃用 API 模式(Chat Completions → Responses API,Python + TypeScript)
  • [ ] 为所有 Python 文件添加类型标注(仅维护中的 shared/ 模块完成,课程示例保持简洁)
  • [x] 添加代码质量 CI/CD 工作流(.github/workflows/code-quality.yml
  • [x] 创建安全扫描工作流(.github/workflows/security.yml

阶段 3:中期(第 2-3 个月)——部分完成

阶段 4:长期(第 4 个月以上)——规划中

  • [ ] 新增高级 RAG 课程(拟议第 24 课)
  • [ ] 扩展语言覆盖(Go / Rust / Java / Kotlin)
  • [ ] 添加全面测试套件(Jest 等)
  • [ ] 创建认证计划

总结:从教学仓库到工程化标杆

这份路线图的价值在于它示范了一条教学代码工程化的完整路径:先用共享工具模块与安全指南解决"教得对不对"(安全与质量),再用 Responses API 迁移解决"教得新不新"(技术时效性),最后用 CI/CD、安全扫描与 DevContainer 解决"学得顺不顺"(开发体验)。从仓库现状看,阶段 1 已全部落地、阶段 2 大部分落地、阶段 3 部分落地,说明路线图并非停留在纸面,而是持续驱动着仓库演进。

对学习者而言,本仓库(README.md)的课程示例本身就是"如何安全、规范地编写生成式 AI 应用"的活教材:查看 shared/python 可以学习环境变量校验、输入清洗与超时重试的写法;查看 .github/workflows/code-quality.yml.github/workflows/security.yml 可以复刻一套课程级的质量门禁;对照路线图的未勾选项,则能清晰看到生成式 AI 教育内容未来的演进方向。若要参与贡献,可按 CONTRIBUTING.md 的指引提交 Issue 或 PR,与路线图互动。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
898
5.82 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
921
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.8 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
596
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
519
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
391