用途:当需要新建一个用于服务模型、LLM、RAG 或嵌入的 FastAPI 后端,并希望预置生产基础(lifespan 模型加载、鉴权、数据库、探针、测试、Docker)而非单文件 main.py 时使用。若只想理解模式或调试已有应用、准备面试,或已有项目结构只需加一个端点,则不适合使用(可参考 fastapi-ai-patterns 等)。
主要能力:脚本复制内置骨架、去除 .tmpl 后缀并替换项目 slug,输出 JSON 摘要。生成项目采用 router→service→repository 分层,含 lifespan 单例(模型句柄、共享 httpx.AsyncClient、数据库引擎)、/health 与 /ready 探针、bcrypt 与 JWT 鉴权及 get_current_user、/predict(CPU 工作经 anyio.to_thread 移出事件循环)与 SSE 的 /chat/stream、输入校验与 generate→validate→retry 的 guardrails、基于 dependency_overrides 与内存 SQLite 的测试,以及多阶段非 root Dockerfile、gunicorn_conf.py、pyproject.toml、.env.example 和 Alembic 配置。
使用方式: bash skills/local/fastapi-ai-scaffold/scripts/new-fastapi-ai-service.sh ./my-service 可先用 --dry-run 预览,或用 --name churn-scorer ./services/churn 覆盖 slug。随后: cd ./my-service uv venv && source .venv/bin/activate uv pip install -e ".[dev]" cp .env.example .env uvicorn app.main:app --reload pytest -q 模型真实化后用 alembic revision --autogenerate -m "init" 与 alembic upgrade head 生成迁移。
限制与注意:生成的模型与 LLM 是确定性桩,非真实推理,部署前须替换;包名固定为 app,仅项目元数据使用 slug,重命名需同步所有导入;骨架文件必须带 .tmpl 后缀;内置测试用裸 TestClient 且跳过 lifespan,依赖真实启动时需用 with TestClient(app) as client:;init_db 仅在 development 运行,生产 schema 必须走 Alembic。脚本支持 --name、--force、--dry-run、--help 参数。官方文本、收费与授权信息暂未提供。