generative-ai-for-beginners 增强特性与改进路线图:安全加固、API 现代化与工程质量实践
2026/9/10 14:44:26 网站建设 项目流程

generative-ai-for-beginners 增强特性与改进路线图:安全加固、API 现代化与工程质量实践

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

本路线图基于对 generative-ai-for-beginners 仓库的全面代码评审与业界最佳实践分析,系统梳理了课程在安全、代码质量、教学效果、API 现代化与基础设施五个维度的改进计划。读者读完本文后将掌握该 21 课生成式 AI 课程的技术架构现状、已落地的安全与工程化改造(如共享工具模块、CI/CD 工作流、Responses API 迁移),以及面向未来的课程演进方向(安全课程、生产部署、高级 RAG 等)。

路线图概览与执行摘要

本仓库是一套面向初学者的 21 课生成式 AI 课程(见 README.md),覆盖提示工程、文本生成、聊天应用、搜索应用、图像生成、函数调用、RAG、AI Agent、微调、小型语言模型(SLM)等主题。在交付教学价值的同时,仓库本身也持续经历工程化治理:安全评审、代码质量规范、共享组件抽取、API 模式现代化以及 CI/CD 基础设施的建设。

本文档对应的完整英文源文档位于 docs/ENHANCED_FEATURES_ROADMAP.md,其多语言译本(含克罗地亚语版本)统一维护在 translations/hr/docs/ENHANCED_FEATURES_ROADMAP.md。以下是整份路线图的核心脉络:

  1. 安全增强(优先级:最高):紧急修复已完成,后续补充限流、密钥轮换与内容安全能力;
  2. 代码质量改进:引入 Black/Ruff/mypy 配置、ESLint/Prettier 规范与共享 Python 工具模块;
  3. 教学增强:新增安全、生产部署、高级 RAG 等课程主题,并改进既有课程;
  4. API 现代化:从 Chat Completions 迁移至 Responses API,演示结构化输出、视觉能力与内置工具;
  5. 基础设施改进:CI/CD 质量门禁与 CodeQL 安全扫描已落地;
  6. 开发者体验:DevContainer 开箱即用的 Python/Node 开发环境;
  7. 多语言支持:Python 全覆盖,TypeScript/JavaScript/.NET 部分覆盖;
  8. 性能与成本优化:异步模式、缓存策略、Token 优化;
  9. 可访问性与国际化:50+ 语言自动翻译同步机制;
  10. 实施优先级:四阶段推进计划。

一、安全增强:从紧急修复到纵深防御

1.1 已完成的紧急修复

代码评审首先聚焦于课程示例中常见的安全隐患,以下问题已修复完毕:

问题涉及文件状态
硬编码的 SECRET_KEY05-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/已修复

这些修复的共同思路是:教学示例也应遵循生产级安全习惯。例如请求超时问题,在共享模块中通过统一的make_safe_request包装器(默认 30 秒超时、3 次重试)从机制上杜绝了无超时请求的产生(见下文 2.2 节源码分析)。

1.2 建议追加的安全能力

除已完成修复外,路线图建议课程补充以下安全内容:

  1. 限流示例(Rate Limiting)
    • 提供 API 调用限流的示例代码;
    • 演示指数退避(exponential backoff)模式。
  2. API 密钥轮换
    • 补充 API 密钥轮换最佳实践文档;
    • 加入 Azure Key Vault 或同类服务的使用示例。
  3. 内容安全集成
    • 加入 Azure Content Safety API 示例;
    • 演示输入/输出内容审核模式。

配套的 docs/SECURITY_GUIDELINES.md 已系统梳理了生成式 AI 应用的安全最佳实践,涵盖环境变量管理、输入校验与净化、API 安全、提示注入防护、HTTP 请求安全、错误处理、文件操作与代码质量工具八个主题,可作为上述追加内容的教学蓝本。

二、代码质量改进:工具链、共享组件与规范

2.1 已落地的配置文件

路线图引入了三份核心配置文件,为 Python 与 JavaScript/TypeScript 代码确立了统一的工程基线:

文件用途
.eslintrc.jsonJavaScript/TypeScript 的 Lint 规则
.prettierrc代码格式化标准
pyproject.tomlPython 工具链配置(Black、Ruff、mypy)

以 pyproject.toml 为例,它集中定义了本仓库的 Python 工程质量基线:

  • Blackline-length = 100,目标版本py310/py311/py312,并排除了.gitnode_modulesdist等目录;
  • Rufftarget-version = "py310",启用了E(pycodestyle)、W(pycodestyle 警告)、F(Pyflakes)、I(isort)、B(flake8-bugbear)、C4(flake8-comprehensions)、UP(pyupgrade)、S(flake8-bandit 安全规则)等规则集,同时忽略E501(行长交给 Black 处理)与S101(教育代码中允许使用 assert);
  • mypypython_version = "3.10",开启check_untyped_defswarn_return_any
  • pytesttestpaths = ["tests"],默认参数-v --tb=short
  • 开发依赖统一收口在[project.optional-dependencies] dev中:black>=24.0.0isort>=5.13.0mypy>=1.8.0ruff>=0.2.0pytest>=8.0.0pytest-cov>=4.1.0

2.2 共享 Python 工具模块

路线图的核心工程举措之一,是抽取了shared/python/模块,将分散在各课程示例中的重复、易错逻辑集中管理:

  • shared/python/env_utils.py:环境变量安全处理
  • shared/python/input_validation.py:输入校验与净化
  • shared/python/api_utils.py:安全的 API 请求包装器

下面结合源码逐一展开其设计要点。

环境变量处理(env_utils.py)

def get_required_env(var_name: str, description: str | None = None) -> str: value = os.getenv(var_name) if not value: desc_part = f" ({description})" if description else "" raise ValueError( f"Missing required environment variable: {var_name}{desc_part}. " f"Please set it in your .env file or environment." ) return value

get_required_env在变量缺失或为空时抛出带提示信息的ValueErrordescription参数可附加用途说明,帮助开发者快速定位配置缺失点。配套的validate_env_vars(*var_names)支持批量校验多个变量并一次性报告全部缺失项,而get_env_with_default(var_name, default)则为可选配置提供默认值兜底。

输入校验与净化(input_validation.py)

def sanitize_prompt_input(value: str, max_length: int = 1000, strict: bool = False) -> str: # 去除空字节与控制字符 sanitized = re.sub(r"[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]", "", sanitized) # 去除潜在危险的模板/注入模式 dangerous_patterns = [ r"\{\{.*?\}\}", # 模板注入 r"\${.*?}", # 变量替换 r"<script.*?>.*?</script>", # 脚本标签 r"javascript:", # JavaScript URL ] for pattern in dangerous_patterns: sanitized = re.sub(pattern, "", sanitized, flags=re.IGNORECASE | re.DOTALL)

sanitize_prompt_input是专门面向 LLM 提示词的安全净化函数:它删除控制字符、模板注入模式({{...}})、变量替换(${...})、<script>标签与javascript:URL,strict模式还会进一步只保留安全字符集。这一设计与路线图中「防护提示注入攻击」的教学目标完全对应。模块还提供validate_number_input(数值区间校验)、validate_text_input(文本长度校验)、validate_email(邮箱格式)与validate_url(HTTPS 强制校验)等通用工具。

API 请求包装器(api_utils.py)

def make_safe_request( url: str, method: str = "GET", timeout: int = 30, retries: int = 3, **kwargs: Any ) -> requests.Response: for attempt in range(retries): try: response = requests.request(method=method, url=url, timeout=timeout, **kwargs) response.raise_for_status() return response except RequestException as e: last_exception = e if attempt < retries - 1: # Exponential backoff could be added here continue raise

make_safe_request统一为 HTTP 请求施加超时(默认 30 秒)与重试(默认 3 次)策略——这正是对 1.1 节「请求缺少超时」修复的机制化保障。同模块的create_openai_clientcreate_azure_openai_client则封装了 OpenAI/Azure OpenAI 客户端的创建逻辑:后者将 endpoint 规范化为<endpoint>/openai/v1/的 v1 端点形态,无需再传api_version,与下文第四节介绍的 Responses API 迁移直接配套。download_image则复用make_safe_request实现带超时的图片下载。

2.3 建议的代码改进方向

路线图还提出了三项代码质量建议:

  1. 类型覆盖:为全部 Python 文件补充类型注解,并在所有 TypeScript 项目中启用 strict 模式;
  2. 文档规范:为所有 Python 函数补充 docstring,为 JavaScript/TypeScript 函数补充 JSDoc 注释(上述共享模块已完整践行该规范);
  3. 测试框架:pytest 配置已写入 pyproject.toml,并为共享工具模块提供了示例测试(见下文 5.1 节);JavaScript/TypeScript 侧可进一步引入 Jest。

2.4 测试用例佐证

共享模块的测试位于 tests/ 目录,由 tests/conftest.py、tests/test_env_utils.py、tests/test_input_validation.py 与 tests/test_api_utils.py 组成,并在 CI 中随 pytest 运行。

以 tests/test_input_validation.py 为例,测试覆盖了净化函数的关键行为:

  • sanitize_prompt_input("Hello {{system}} world")会移除{{/}},验证模板注入防护;
  • sanitize_prompt_input("value ${danger} here")会移除${,验证变量替换防护;
  • sanitize_prompt_input("hi <script>alert(1)</script> there")会移除<script,验证脚本标签防护;
  • sanitize_prompt_input("click javascript:alert(1)")会移除javascript:,验证危险 URL 防护;
  • 超出max_length与仅含非法字符(如"{{a}}")的输入都会抛出ValueError

tests/test_env_utils.py 则验证了get_required_env对缺失变量、空值、描述信息透传,以及validate_env_vars批量报告缺失、get_env_with_default默认值兜底等行为。这些测试是「共享工具模块可被 CI 强制保障」的直接证据。

三、教学增强:新课程主题与既有课程改进

3.1 拟新增的课程主题

路线图规划了三门候选新课程,分别对应生成式 AI 应用开发中最常被初学者忽略的三个工程环节:

课程 22:AI 应用安全

  • 提示注入攻击与防御
  • API 密钥管理
  • 内容审核
  • 限流与滥用预防

课程 23:生产部署

  • Docker 容器化
  • CI/CD 流水线
  • 监控与日志
  • 成本管理

课程 24:高级 RAG 技术

  • 混合检索(关键词 + 语义)
  • 重排序策略
  • 多模态 RAG
  • 评估方法论

这三门课程的规划与仓库现状高度呼应:安全主题可直接依托 docs/SECURITY_GUIDELINES.md 与共享工具模块的教学素材;生产部署主题与第五节已落地的 CI/CD 基础设施一脉相承;高级 RAG 则可基于 15-rag-and-vector-databases/ 的基础 RAG 课程自然延伸。

3.2 既有课程改进建议

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

其中课程 09 的图像编辑/变体建议,仓库中已有对应素材:09-building-image-applications/python/ 目录下的aoai-app-variation.pyoai-app-variation.py正是图像变体生成的示例实现。

四、API 现代化:迁移至 Responses API

4.1 已完成的废弃模式迁移

路线图最重要的技术决策之一,是将课程示例全面从 Chat Completions API 迁移至 OpenAIResponses APIclient.responses.create(...)response.output_text)。Python 与 TypeScript 的聊天类示例均已迁移完毕:

旧模式新模式状态
openai.api_type = "azure"/AzureOpenAI()(聊天类)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/aoai-app.py 中的调用方式:

response = client.responses.create(model=deployment, input=prompt, store=False)

而 06-text-generation-apps/python/aoai-app-recipe.py 则展示了带生成参数与多轮对话的用法:

response = client.responses.create(model=deployment, input=prompt, max_output_tokens=600, temperature=0.1, store=False) response = client.responses.create(model=deployment, input=new_prompt, max_output_tokens=600, temperature=0, store=False)

迁移边界说明:使用 Microsoft Foundry 模型且基于azure-ai-inference/@azure-rest/ai-inferenceSDK(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,而非直接使用AzureOpenAI()的 api_version 机制。

4.2 建议演示的新 API 能力

路线图建议课程进一步覆盖以下新能力:

  1. 结构化输出(OpenAI)
    • JSON 模式
    • 使用严格定义 schema 的函数调用
  2. 视觉能力
    • 使用 GPT-4o(vision)进行图像分析
    • 多模态提示词
  3. Responses API 内置工具(取代旧版 Assistants API)
    • 代码解释器
    • 文件搜索
    • 网页搜索与自定义工具

仓库在 .github/skills/azure-openai-to-responses/ 目录下还提供了配套的迁移技能包(含 .github/skills/azure-openai-to-responses/SKILL.md 与 .github/skills/azure-openai-to-responses/references/cheat-sheet.md),可作为迁移对照速查表。

五、基础设施改进:CI/CD 与安全扫描

5.1 CI/CD 质量门禁(已落地)

路线图 5.1 节给出的 CI/CD 基线示意被进一步落地为真实的 .github/workflows/code-quality.yml,其设计要点如下:

  • 触发条件:仅对main分支的 push 与 pull_request 生效,且路径过滤限定在**.py**.ts**.jspyproject.toml.eslintrc.json及工作流自身,避免无关提交空跑流水线;
  • Python Lint & Format(强制):对受维护的shared/共享模块执行ruff check shared/black --check shared/不通过即失败
  • 全仓库 Ruff 检查(advisory)ruff check .continue-on-error: true,仅提示问题但不阻塞构建——教学示例刻意保持简单,不设严格门槛;
  • Python 测试(强制):安装pytest openai requests python-dotenv后执行pytest tests/,对共享工具模块做回归保障;
  • JS/TS Lint(advisory):安装 ESLint 8 及 TypeScript 解析插件后执行npx eslint . --ext .js,.ts,同样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 包含两个任务:

  1. CodeQL 分析:使用github/codeql-action/init@v4analyze@v4,通过 matrix 策略对javascript-typescriptpython两种语言并行扫描;触发条件为 push、pull_request 以及每周一 06:00 UTC 的定时扫描cron: '0 6 * * 1'),并对security-events授予写权限以写入扫描结果;
  2. 依赖审查(Dependency Review):仅对 pull_request 生效,使用actions/dependency-review-action@v5,当依赖变更存在风险时在 PR 中输出失败评论(comment-summary-in-pr: on-failure)。

工作流统一声明permissions: contents: read,遵循最小权限原则。路线图原始基线示例如下:

# .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

此外仓库还配置了依赖机器人 .github/dependabot.yml 以及 .github/workflows/validate-markdown.yml(Markdown 语法校验,对应路线图 5.1 中「当前 workflow 覆盖 Markdown 语法检查」的现状描述)。

六、开发者体验改进:开箱即用的 DevContainer

6.1 DevContainer 增强(已落地)

路线图规划的 DevContainer 已落实为 .devcontainer/devcontainer.json 与 .devcontainer/post-create.sh。容器方案的关键点:

  • 基于mcr.microsoft.com/devcontainers/universal通用基础镜像,该镜像已内置 Python 与 Node,无需额外添加 features;
  • 预装 Pylance、Black 格式化器、Ruff、ESLint、Prettier 与 Copilot 扩展;
  • 开启「保存即格式化」(format-on-save),并与仓库的 Black/Prettier 配置对接;
  • 安装开发工具链(ruffblackmypypytest),使开发者能够在本地复现 CI 中的 code-quality 工作流——这是工程一致性的重要设计。

路线图原始基线示例如下:

{ "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 笔记本;
  • 面向视觉学习者的 Gradio/Streamlit 演示示例;
  • 用于知识评估的交互式测验。

七、多语言支持现状

7.1 当前语言技术覆盖

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

从仓库目录结构看,Python 示例几乎贯穿每课(各python/目录),TypeScript 示例出现在 06-text-generation-apps/typescript/、07-building-chat-applications/typescript/、08-building-search-applications/typescript/、09-building-image-applications/typescript/ 与 11-integrating-with-function-calling/typescript/,JavaScript(GitHub Models 变体)则分布在 06-text-generation-apps/js-githubmodels/ 等目录,与路线图的覆盖矩阵一致。

7.2 建议新增语言

  1. Go:AI/ML 工具链生态增长中;
  2. Rust:面向性能敏感型应用;
  3. Java/Kotlin:面向企业级应用。

八、性能优化方向

8.1 代码级优化建议

  1. Async/Await 模式
    • 增加批量处理的 async 示例;
    • 演示并发 API 调用。
  2. 缓存策略
    • 增加 embedding 缓存示例;
    • 演示响应缓存模式。
  3. Token 优化
    • 增加 tiktoken 使用示例;
    • 演示提示词压缩技术。

其中 tiktoken 已作为正式依赖列入 pyproject.toml(tiktoken>=0.5.0),说明 Token 计数优化在课程示例中已有应用基础。

8.2 成本优化示例

路线图建议补充三类成本优化演示:

  • 根据任务复杂度选择模型;
  • 面向 Token 效率的提示工程;
  • 批量操作使用批处理。

九、可访问性与国际化

9.1 翻译覆盖现状

英文源文档 docs/ENHANCED_FEATURES_ROADMAP.md 指出:课程的全部翻译均已完成,由 Azure Co-op Translator 自动生成并持续同步,产出并维护 50+ 语言版本:

维度状态
翻译覆盖完整——50+ 语言,覆盖全部课程
翻译方式通过 Azure Co-op Translator 自动生成
与英文源同步是——自动重新生成

从仓库结构可以直接验证这一点:translations/ 目录下每个语言子目录均包含 40 份 Markdown 文档与 28 份 Jupyter 笔记本(共 68 个文件),本路线图的克罗地亚语版本即位于 translations/hr/docs/;对应的本地化图片则统一存放在 translated_images/ 下的各语言子目录(每语言 145 张 webp 图片),可用语言全列表发布在仓库根 README.md 顶部。

9.2 可访问性改进建议

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

十、实施优先级:四阶段推进

路线图将全部改进项按风险与收益划分为四个阶段,其中带[x]的条目已在英文源文档中标注完成:

阶段一:紧急(第 1-2 周)

  • 修复关键安全问题
  • 添加代码质量配置
  • 创建共享工具模块
  • 编写安全指南文档(即 docs/SECURITY_GUIDELINES.md)

阶段二:短期(第 3-4 周)

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

阶段三:中期(第 2-3 个月)

  • 新增安全课程
  • 新增生产部署课程
  • 改进 DevContainer 设置(.devcontainer/devcontainer.json)
  • 添加交互式演示

阶段四:长期(第 4 个月以上)

  • 新增高级 RAG 课程
  • 扩展语言覆盖
  • 添加全面测试套件
  • 创建认证项目

结语

这份路线图的价值在于它为课程演进提供了结构化、可验证、按风险分级的推进路径:安全层面从紧急修复走向限流、密钥轮换与内容安全的纵深防御;工程层面通过共享工具模块、代码质量配置与 CI/CD 门禁建立了可复制的质量基线;API 层面完成了从 Chat Completions 到 Responses API 的现代化迁移;教学层面规划了安全、生产部署与高级 RAG 三门新课程。

最值得开发者借鉴的是其「教学示例同样遵循生产级实践」的工程哲学——DevContainer 让本地开发与 CI 完全一致,共享模块将安全习惯机制化而非停留在文档说教。对于希望系统学习生成式 AI 应用工程化的读者,建议沿着本路线图的四阶段顺序,结合各课程目录(如 06-text-generation-apps/python/、08-building-search-applications/、15-rag-and-vector-databases/)中的实际示例逐一对照学习。

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询