参考

CLI 与 CI 门禁

promptflow 离线运行引擎,并给出精确的 OpenAI token 数。每个命令都读取一个文件或标准输入(-),并支持 --json 输出机器可读的结果。

安装

npm 包 @promptflow/cli 尚未发布。请从 PromptFlowEngine 仓库的检出代码构建:
shell
# from the root of your PromptFlowEngine checkout
corepack enable && pnpm install
pnpm --filter @promptflow/engine build && pnpm --filter @promptflow/cli build
alias promptflow="node $PWD/packages/cli/dist/cli.js"

命令

命令作用退出码
analyze <file>质量、维度、问题、token、意图0
optimize <file>经过验证的优化。--mode、--goal、--budget、--write0
validate <file>仅输出问题出现任何严重问题时为 1
compare <a> <b>token、质量和问题的差异0
tokens <file>计数与预估输入成本(--model)0
scan <file>注入风险、敏感数据、未加分隔的变量出现严重安全问题时为 1
sanitize <file>输出已替换敏感值的文本0
check <glob…>针对提示词文件的 CI 门禁任一文件未通过时为 1
models模型目录与参考价格0

check 门禁

当文件的质量低于 --min-score、token 超过 --max-tokens,或存在达到 --fail-on 的问题时,该文件即未通过(默认是 critical,所以泄露的密钥一定会失败)。设置可以放在仓库根目录的 .promptflowrc.json 中:

.promptflowrc.json
{
  "include": ["prompts/**/*.md", "src/**/*.prompt.txt"],
  "model": "gpt-4.1",
  "minScore": 70,
  "maxTokens": 2000,
  "failOn": "critical",
  "ignore": ["missing_length_guidance"]
}
.github/workflows/prompts.yml
name: Prompt quality
on: [pull_request]
jobs:
  prompts:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      # Until @promptflow/cli is on npm, make the built CLI available to the job
      # (see Install above), for example as a vendored copy in tools/promptflow.
      - run: node tools/promptflow/cli.js check

glob 相对于工作目录解析,并跳过 node_modules、.git 和构建输出。