用 AI 生成符合多模型规范的 Pydantic API 模型
解决后端接口定义繁琐痛点:通过 AI 生成遵循 Multi-Model Pattern 的 Pydantic 模型,自动构建包含 Base、Create、Update、Response 及 DB Document 的完整类型体系,确保 API 合同清晰且具备强类型验证能力。
为什么需要这个技能
在使用 FastAPI 或 Starlette 开发 Python 后端时,手动定义 BaseModel、CreateModel、UpdateModel 和 ResponseModel 极易出错。字段命名不统一、缺失必填项约束或更新字段未设为可选,都会导致运行时错误。
该技能利用 antigravity 工具包中的模板,一次性生成标准化的模型结构。它强制 AI 输出符合 Base(共享字段)、Create(必需字段)、Update(全可选字段)、Response(全量字段)以及 InDB(数据库文档)的六层模式,从源头保障代码质量。
适用场景
- 构建新 API 接口:需要快速定义资源类型并自动生成 TS 类型对应的代码。
- 重构现有模型:将杂乱的模型代码迁移到标准的 Multi-Model Pattern 规范中。
- 确保类型安全:防止前端/后端字段不一致,特别是处理
camelCase与snake_case混合命名时。 - 准备数据库交互:为 Cosmos DB 等需要
doc_type的场景自动生成对应的InDB模型。
核心工作流
-
准备模板与替换变量: 从
assets/template.py复制模板,替换占位符{{ResourceName}}为帕斯卡命名(如Project),替换{{resource_name}}为蛇形命名(如project)。 -
配置命名风格别名: 在模型配置中启用
populate_by_name = True,使得模型能同时接受camelCase和snake_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 -
定义可选更新字段: 针对 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 -
增强数据库文档模型: 继承
MyResponse创建MyInDB模型,添加doc_type字段以适配 Cosmos DB 查询需求。class MyInDB(MyResponse): """Adds doc_type for Cosmos DB queries.""" doc_type: str = "my_resource" -
集成步骤:
- 在
src/backend/app/models/目录下创建上述模型。 - 从
src/backend/app/models/__init__.py导出所有模型。 - 在客户端或文档中添加对应的 TypeScript 类型定义。
- 在
下载和安装
下载 pydantic-models-py 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐