Skip to content

Latest commit

 

History

History
169 lines (127 loc) · 5.8 KB

File metadata and controls

169 lines (127 loc) · 5.8 KB

scripts/ — Python AI 批量生成工作流

可视化拼图编辑器 配套的命令行工具:复用项目里的 AI 生成能力,但脱离浏览器, 在终端里批量根据 prompt 文件生成可部署的 HTML 页面。

与编辑器侧的 app.js AI 模块完全对齐:

  • 同样的 AI_SYSTEM_PROMPTai_client.py
  • 同样的 normalizeAIElements 元素校验/clamp 逻辑(normalize.py
  • 同样的 exportHTML 输出格式(html_export.py

零第三方依赖。仅用 Python 标准库,开箱即用。Python ≥ 3.10。


目录结构

front-pattern/
├── scripts/
│   ├── ai_client.py        DeepSeek / OpenAI 调用 + system prompt + dry-run mock
│   ├── normalize.py       复刻前端的元素 normalize 逻辑
│   ├── html_export.py     复刻前端的 exportHTML,输出独立可部署 HTML
│   ├── generate.py        单 prompt 生成 CLI
│   └── run_all.py         批量工作流入口
├── prompts/               输入:放 *.txt prompt 文件(已带 3 个示例)
├── output/                输出:生成的 .json + .html(目录由 .gitkeep 占位,实际产物被 .gitignore 忽略,仅本地保存)
├── .env.example           API key 配置模板
└── requirements.txt       依赖声明(实际上零依赖)

快速开始

0. 先试 dry-run(无需 API key)

python scripts/run_all.py --dry-run

会在 output/ 里看到三个示例 prompt 生成的 HTML/JSON:

output/咖啡店首页.html     ← 直接双击浏览器打开
output/咖啡店首页.json     ← 结构化数据,可人工再加工
output/个人作品集.html
output/简单落地页.html
...

1. 配置 API key

复制 .env.example.env 并填入 key(别提交 .env):

cp .env.example .env
# 编辑 .env: DEEPSEEK_API_KEY=sk-xxxx

generate.py / run_all.py 启动时会自动加载项目根目录下的 .env(零依赖内置实现,不强制安装 python-dotenv)。已存在的环境变量不会被覆盖——命令行 --api-keyexport 优先级更高。

或者直接用环境变量 / 命令行参数:

export DEEPSEEK_API_KEY=sk-xxxx
python scripts/run_all.py --provider deepseek

# 或:python scripts/run_all.py --provider deepseek --api-key sk-xxxx

2. 跑批量工作流

python scripts/run_all.py --provider deepseek

每个 prompts/*.txt 会被处理一次:

  • 第一行若以 --name: 开头,则作为页面名(也用作输出文件名)
  • 其余行作为 prompt
  • 失败的文件默认会跳过,汇总后输出报告;加 --strict 则首次失败即终止

3. 单 prompt 生成

python scripts/generate.py --prompt "做一个咖啡店首页" \
                            --provider deepseek \
                            -o output/cafe

# -> output/cafe.json + output/cafe.html

命令参考

generate.py 单 prompt

参数 默认 说明
--prompt / -p 必填 页面描述
--provider deepseek deepseek / openai
--api-key env 可不传,从 DEEPSEEK_API_KEY / OPENAI_API_KEY
--model provider 默认 覆盖默认模型
--base-url provider 默认 接 OpenAI 兼容端点(自建网关、本地 ollama、Cursor 等)
--output / -o output/<safe> 输出文件前缀(不含扩展)
--out-dir output 输出根目录
--name prompt 派生 页面名
--dry-run off 本地 mock,不联网
--temperature 0.7 采样温度
--html-only / --json-only off 只输出其中一种

run_all.py 批量

generate.py 的所有参数都支持,额外:

参数 说明
--prompts-dir prompt 文件目录,默认 prompts/
--reset-output 跑前清空 output/ 中旧的 .html / .json
--strict 任一文件失败即终止(默认跳过继续)

prompt 文件格式

--name: 页面名(用作输出文件名)
剩下整段作为 prompt 正文。
可以多行,写越具体效果越好。

如果省略 --name:,则用文件 stem 作为名字。

输出文件

  • <name>.html:与编辑器「导出」按钮产物完全一致,可直接部署
  • <name>.json:项目数据格式,{pages: [...], currentPageId, _prompt, _provider}, 后续可在编辑器里手动加载再编辑

工作流链路图

prompts/*.txt ─┐
               ▼
         run_all.py
               │
       ┌───────┴────────┐
       ▼                ▼
  ai_client.py     normalize.py
   (调 API)         (clamp)
       │                │
       └───────┬────────┘
               ▼
        html_export.py
               │
       ┌───────┴───────┐
       ▼               ▼
   output/xx.html  output/xx.json

FAQ

Q:为什么不直接打开浏览器跑? A:浏览器适合单 prompt 交互式尝试;批量(10+ 个 prompt) aparición、CI 集成、 离线脚本化用 Python CLI 更顺手,也避免 API key 留在浏览器 localStorage。

Q:要不要 pip install A:不需要。requirements.txt 只是声明,实际跑只用标准库。 脚本内置零依赖的 .env 加载器,自动读取项目根目录的 .env 文件。

Q:在 Windows 终端输出乱码怎么办? A:脚本会自动将 stdout/stderr 设为 UTF-8 编码。如果终端仍然显示乱码,请在 PowerShell 中运行 chcp 65001 切换到 UTF-8 代码页后再执行 Python 脚本。

Q:输出的 HTML 跟编辑器导出的能混用吗? A:可以。三者——浏览器实时预览、编辑器导出、Python 脚本生成——输出格式完全相同。