generative-ai-for-beginners 增强路线图全解析:从安全加固、API 现代化到 CI/CD 与工程化落地 generative-ai-for-beginners 增强路线图全解析从安全加固、API 现代化到 CI/CD 与工程化落地【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners本篇技术指南以 docs/ENHANCED_FEATURES_ROADMAP.md 为主体系统解读该 21 课时生成式 AI 课程仓库在代码审查基础上沉淀出的工程化改进路线安全修复、共享工具库、API 现代化迁移、CI/CD 质量门禁与开发者体验优化。读完本文你将掌握课程仓库当前已完成与规划中的全部改进项并能在自己的生成式 AI 项目中复现同样的安全、质量与交付实践。一、路线图背景一次代码审查驱动的工程化升级generative-ai-for-beginners是一个面向初学者的 21 课时生成式 AI 课程仓库包含 Python、JavaScript、TypeScript、.NET 等多语言示例、Jupyter Notebook 与配套图片。为了把这些教学示例提升到可安全落地生产的工程水准维护者对代码库进行了安全、代码质量与教学效果三个维度的全面审查并产出一份分阶段执行的增强路线图。路线图的核心主张非常明确教学示例不应只是能跑通还应当示范正确的工程实践——不硬编码密钥、请求带超时、输入做校验、API 用最新范式、代码进 CI 质量门禁。整份文档按已完成[x]/ 待办[ ]精确标注了每个改进项的落地状态这种可追踪性本身也是工程化的一部分。二、安全增强优先级Critical安全是路线图中唯一被标记为严重Critical优先级的领域分为已完成修复与推荐追加两部分。2.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/已修复以 SECRET_KEY 修复为例可以在源码中直接验证其落地方式05-advanced-prompts/python/aoai-solution.py 现在是app.config[SECRET_KEY] os.environ.get(FLASK_SECRET_KEY, os.urandom(32))即优先从环境变量FLASK_SECRET_KEY读取未设置时退化为os.urandom(32)生成的随机值彻底避免了把固定密钥写死在仓库中的风险。这正是环境变量优先、随机兜底的密钥管理范式。2.2 推荐追加的安全功能路线图还规划了三类尚未落地[ ]的安全增强限流Rate Limiting示例提供针对 API 调用的限流实现代码并演示指数退避exponential backoff模式API 密钥轮换补充密钥轮换最佳实践文档并给出使用 Azure Key Vault 或类似服务的示例内容安全集成增加使用 Azure Content Safety API 的示例演示输入/输出双向的内容审核moderation模式。三、代码质量改进3.1 已新增的配置文件文件用途.eslintrc.jsonJavaScript/TypeScript 的 lint 规则.prettierrc代码格式化标准pyproject.tomlPython 工具链配置Black、Ruff、mypy仓库根目录的 pyproject.toml 是 Python 质量工具链的集中配置可以在源码层面看到它的完整设计[project]声明requires-python 3.10运行依赖包括openai1.0.0、python-dotenv1.0.0、requests2.31.0、azure-ai-inference1.0.0b1、tiktoken0.5.0[project.optional-dependencies].dev开发依赖集合black24.0.0、isort5.13.0、mypy1.8.0、ruff0.2.0、pytest8.0.0、pytest-cov4.1.0[tool.black]line-length 100target-version覆盖 py310–py312[tool.ruff]line-length 100lint 规则select了 pycodestyleE/W、PyflakesF、isortI、flake8-bugbearB、flake8-comprehensionsC4、pyupgradeUP以及安全相关的 flake8-banditS同时ignore掉 E501交给 Black 处理与 S101教学代码中常见 assert[tool.mypy]python_version 3.10开启warn_return_any、check_untyped_defs但有意关闭disallow_untyped_defs——这与路线图授课示例保持简单、仅在受维护模块强制类型标注的策略一致[tool.pytest.ini_options]testpaths [tests]addopts -v --tbshort。3.2 新建的共享工具模块shared/python/路线图新建了 shared/python/ 模块包含三个可复用工具均带完整 docstring 与类型标注1env_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( fMissing required environment variable: {var_name}{desc_part}. fPlease set it in your .env file or environment. ) return valueget_required_env(var_name, description)必填变量缺失时抛出带提示信息的ValueErrorvalidate_env_vars(*var_names) - dict[str, str]一次性校验多个变量并返回键值映射可同时报告所有缺失项get_env_with_default(var_name, default)带默认值的读取。2input_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) # 去除模板注入 / 变量替换 / script 标签 / javascript: 等危险模式 dangerous_patterns [ r\{\{.*?\}\}, # 模板注入 r\${.*?}, # 变量替换 rscript.*?.*?/script, rjavascript:, ] ... if strict: # 严格模式仅保留安全字符 sanitized re.sub(r[^\w\s,.\\-?!#$%*():;], , sanitized, flagsre.UNICODE)该模块提供validate_number_input整数范围校验、validate_text_input文本长度校验、sanitize_prompt_input针对 LLM prompt 注入的净化、validate_email、validate_url默认强制 HTTPS等函数。其中sanitize_prompt_input直接面向生成式 AI 特有的威胁模型模板注入、变量替换、script标签与javascript:伪协议是对抗 prompt 注入的第一道输入防线。3api_utils.py——安全的 API 请求封装def make_safe_request(url, methodGET, timeout30, retries3, **kwargs): for attempt in range(retries): try: response requests.request(methodmethod, urlurl, timeouttimeout, **kwargs) response.raise_for_status() return response except RequestException as e: last_exception e if attempt retries - 1: continue # 指数退避可在此处扩展 raisemake_safe_request默认 30 秒超时、最多 3 次重试的 HTTP 请求包装create_openai_client/create_azure_openai_client统一创建 OpenAI 客户端。其中 Azure 客户端使用OpenAI(base_urlf{endpoint}/openai/v1/)指向 v1 端点以启用 Responses API并明确注释无需api_version——这正是第四节 API 现代化的底层支撑download_image带超时与目录自动创建的图片下载函数。3.3 配套测试与 CI 集成路线图特别标注了测试框架的落地进展pytest 配置已写入 pyproject.toml共享工具模块的示例测试位于 tests/ 并在 CI 中运行。从 tests/conftest.py 可以看到它通过把仓库根目录插入sys.path保证shared.python包可在任意工作目录被导入tests/test_env_utils.py 则用 pytest 的monkeypatchfixture 覆盖了get_required_env的返回值、缺失报错、空值报错、描述信息透传以及validate_env_vars批量报告缺失等场景。JavaScript/TypeScript 侧的 Jest 配置仍列为待办[ ]。四、教育内容增强4.1 规划中的新课程主题建议课程核心内容第 22 课AI 应用安全Prompt 注入攻击与防御、API 密钥管理、内容审核、限流与滥用防护第 23 课生产环境部署Docker 容器化、CI/CD 流水线、监控与日志、成本管理第 24 课进阶 RAG 技术混合检索关键词 语义、重排re-rank策略、多模态 RAG、评估指标4.2 既有课程的改进建议课程建议改进06 - 文本生成补充流式streaming响应示例07 - 聊天应用补充对话记忆模式08 - 搜索应用补充向量数据库对比09 - 图像生成补充图像编辑/变体示例11 - 函数调用补充并行函数调用15 - RAG补充分块chunking策略对比17 - AI 智能体补充多智能体编排五、API 现代化5.1 弃用模式迁移已完成路线图记录了课程仓库一次大规模的 API 范式迁移所有 Python 与 TypeScript 的 chat 示例已从 Chat Completions API 迁移到 Responses APIclient.responses.create(...)→response.output_text。旧模式新模式状态openai.api_type azure/AzureOpenAI()chatOpenAI(base_urlendpoint/openai/v1/)Responses API已完成openai.ChatCompletion.create()/client.chat.completions.create()client.responses.create(input...)→response.output_text已完成azure/openai的OpenAIClient.getChatCompletions()TypeScriptopenai包的client.responses.create()→response.output_text已完成df.append()pandaspd.concat()已完成在仓库中可以验证该迁移的真实落地例如 06-text-generation-apps/python/oai-app.py、06-text-generation-apps/python/aoai-app.py 以及 TypeScript 侧 06-text-generation-apps/typescript/recipe-app/src/main.ts 均已采用responses.create/output_text的新范式。同时路线图给出了一条重要的适用性边界Note使用azure-ai-inference/azure-rest/ai-inferenceSDKclient.complete()的 Microsoft Foundry Models 示例仍保留在 Model Inference API 上因为该 API 不支持 Responses APIAzureOpenAI()在 embeddings 与图像生成等仍然有效的场景中被有意保留。5.2 待演示的新 API 能力结构化输出Structured OutputsJSON 模式、带严格 schema 的函数调用视觉能力Vision使用 GPT-4ovision进行图像分析、多模态 promptResponses API 内置工具取代旧的 Assistants API代码解释器、文件搜索、网络搜索与自定义工具。六、基础设施改进CI/CD 与安全扫描6.1 代码质量工作流路线图给出的基础示例baseline为 PythonRuff Black与 JSESLint两个 job仓库中的实际实现 .github/workflows/code-quality.yml 在此基础上做了重要演进Ruff 与 Black 在受维护的shared/模块上是强制enforced执行的而在课程其余部分以建议advisory模式运行continue-on-error: true因为授课示例有意保持简单JS/TS 侧同样为 advisory 的 ESLint 检查。工作流还限定在main分支的 push / pull_request 上触发并对触发路径做了精确过滤**.py、**.ts、**.js、pyproject.toml、.eslintrc.json、工作流自身文件。路线图原文的基础示例可作为自建仓库的参考模板# .github/workflows/code-quality.yml name: Code Quality on: [push, pull_request] jobs: python-lint: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/setup-pythonv5 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/checkoutv4 - uses: actions/setup-nodev4 with: node-version: 20 - run: npm ci - run: npx eslint .6.2 安全扫描工作流仓库中的 .github/workflows/security.yml 已落地CodeQL 分析覆盖 Python 与 JavaScript/TypeScript 两种语言触发时机为 push、pull_request 以及每周一次cron: 0 6 * * 1的定时扫描Dependency Review 仅在 pull_request 上运行if: github.event_name pull_request失败时在 PR 内输出总结评论comment-summary-in-pr: on-failure。权限遵循最小化原则CodeQL job 仅授予security-events: write、actions: read、contents: read。路线图原文的基础示例# .github/workflows/security.yml name: Security Scan on: [push, pull_request] jobs: codeql: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: github/codeql-action/initv3 with: languages: javascript, python - uses: github/codeql-action/analyzev3 dependency-review: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/dependency-review-actionv4七、开发者体验改进7.1 DevContainer 配置已完成路线图记录的改进已落地到 .devcontainer/devcontainer.json 与 .devcontainer/post-create.sh容器内置 Pylance、Black 格式化器、Ruff、ESLint、Prettier 与 Copilot 扩展开启保存即格式化format-on-save并分别绑定 Python→Black、JS/TS→Prettier 的默认格式化器同时安装开发工具链ruff、black、mypy、pytest使得 code-quality.yml 中的检查可以在本地完整复现。基础镜像采用mcr.microsoft.com/devcontainers/universal:2.13其本身已内置 Python 与 Node因此无需额外的 features 声明。与路线图 baseline 相比实际配置通过postCreateCommand: bash .devcontainer/post-create.sh和updateContentCommand完成依赖安装。路线图给出的 baseline 示例{ 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 }7.2 交互式 Playground待办路线图建议后续增加通过环境变量预填 API 密钥的 Jupyter Notebook、面向视觉学习者的 Gradio/Streamlit 演示、以及用于知识评估的交互式测验。八、多语言支持8.1 当前语言覆盖技术栈覆盖课程状态Python全部完整TypeScript06-09, 11部分JavaScript06-08, 11部分.NET/C#部分部分8.2 推荐新增语言Go—— 在 AI/ML 工具链中增长迅速Rust—— 适用于高性能关键应用Java/Kotlin—— 适用于企业级应用。九、性能优化9.1 代码级优化方向Async/Await 模式增加批量处理的 async 示例演示并发 API 调用缓存策略增加 embedding 缓存与响应缓存示例Token 优化增加 tiktoken 使用示例仓库已在 pyproject.toml 中将tiktoken0.5.0列为运行依赖演示 prompt 压缩技术。9.2 成本优化示例建议新增示例以演示基于任务复杂度选择模型、面向 token 效率的 prompt 工程、批量操作的批处理模式。十、可访问性与国际化在文档规划的可访问性改进清单为所有图片添加替代文本、保证代码示例语法高亮、为视频内容添加字幕、确保颜色对比度符合 WCAG 指南之外仓库已经拥有非常成熟的多语言体系翻译内容位于 translations/包含 fr、zh-CN、ja、ko、de、es 等 50 语言目录本地化图片位于 translated_images/例如本文法文原版对应的 translations/fr/docs/ENHANCED_FEATURES_ROADMAP.md 即由自动翻译工具生成并带有明确的机器翻译声明以英文原版为权威来源。十一、实施优先级总览路线图将全部改进项划分为四个阶段并给出可勾选的任务清单Phase 1立即执行第 1-2 周修复关键安全问题添加代码质量配置创建共享工具模块编写安全指南文档Phase 2短期第 3-4 周更新弃用的 API 模式Chat Completions → Responses APIPython TypeScript为所有 Python 文件添加类型标注受维护的shared/模块已完成授课示例有意保持简单添加 CI/CD 代码质量工作流创建安全扫描工作流Phase 3中期第 2-3 个月新增安全课程新增生产部署课程改进 DevContainer 配置添加交互式演示Phase 4长期第 4 个月以上新增进阶 RAG 课程扩展语言覆盖添加完整测试套件创建认证项目十二、结语与落地建议这份路线图的价值在于它把一个教学仓库升级成了示范正确工程实践的样本。安全维度上密钥管理、输入净化、请求超时与重试都有了共享工具支撑质量维度上Ruff/Black/mypy/pytest 通过 pyproject.toml 统一配置并在 CI 强制守护shared/模块API 维度上chat 示例全面迁移到 Responses API 并明确了 Model Inference API 的适用边界基础设施维度上CodeQL Dependency Review 构成每周安全巡检。对于想要借鉴的开发者最直接的落地方案是直接复用 shared/python/ 的三个工具模块环境变量校验、输入净化、安全请求封装对照 pyproject.toml 配置自己的 Python 质量工具链并以 code-quality.yml 与 security.yml 为模板搭建强制核心模块 建议外围代码的分级质量门禁再参考 devcontainer.json 让本地开发环境与 CI 完全一致。这套从教学仓库中提炼出的工程化路线正是生成式 AI 应用从 Demo 走向生产的关键一跃。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考