用 AI 生成符合多模型规范的 Pydantic API 模型

解决后端接口定义繁琐痛点:通过 AI 生成遵循 Multi-Model Pattern 的 Pydantic 模型,自动构建包含 Base、Create、Update、Response 及 DB Document 的完整类型体系,确保 API 合同清晰且具备强类型验证能力。

为什么需要这个技能

在使用 FastAPI 或 Starlette 开发 Python 后端时,手动定义 BaseModelCreateModelUpdateModelResponseModel 极易出错。字段命名不统一、缺失必填项约束或更新字段未设为可选,都会导致运行时错误。

该技能利用 antigravity 工具包中的模板,一次性生成标准化的模型结构。它强制 AI 输出符合 Base(共享字段)、Create(必需字段)、Update(全可选字段)、Response(全量字段)以及 InDB(数据库文档)的六层模式,从源头保障代码质量。

适用场景

  • 构建新 API 接口:需要快速定义资源类型并自动生成 TS 类型对应的代码。
  • 重构现有模型:将杂乱的模型代码迁移到标准的 Multi-Model Pattern 规范中。
  • 确保类型安全:防止前端/后端字段不一致,特别是处理 camelCasesnake_case 混合命名时。
  • 准备数据库交互:为 Cosmos DB 等需要 doc_type 的场景自动生成对应的 InDB 模型。

核心工作流

  1. 准备模板与替换变量: 从 assets/template.py 复制模板,替换占位符 {{ResourceName}} 为帕斯卡命名(如 Project),替换 {{resource_name}} 为蛇形命名(如 project)。

  2. 配置命名风格别名: 在模型配置中启用 populate_by_name = True,使得模型能同时接受 camelCasesnake_case 输入。

    class MyModel(BaseModel):
        workspace_id: str = Field(..., alias="workspaceId")
        created_at: datetime = Field(..., alias="createdAt")
        
        class Config:
            populate_by_name = True  # Accept both snake_case and camelCase
  3. 定义可选更新字段: 针对 PATCH 请求,单独定义 MyUpdate 模型,将所有字段标记为 Optional,并明确必填字段的 min_length 约束。

    class MyUpdate(BaseModel):
        """All fields optional for PATCH requests."""
        name: Optional[str] = Field(None, min_length=1)
        description: Optional[str] = None
  4. 增强数据库文档模型: 继承 MyResponse 创建 MyInDB 模型,添加 doc_type 字段以适配 Cosmos DB 查询需求。

    class MyInDB(MyResponse):
        """Adds doc_type for Cosmos DB queries."""
        doc_type: str = "my_resource"
  5. 集成步骤

    • src/backend/app/models/ 目录下创建上述模型。
    • src/backend/app/models/__init__.py 导出所有模型。
    • 在客户端或文档中添加对应的 TypeScript 类型定义。

下载和安装

下载 pydantic-models-py 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐