资讯动态

在提示词里写控制流:product-manager-prompts 的 Jinja2 结构深度解析

发布时间:2026/10/14 18:27:36 来源:尧图企业网站定制
【免费下载链接】product-manager-promptsA repository of Generative AI prompts for product managers using agents such as ChatGPT, Claude, Gemini项目地址https://gitcode.com/gh_mirrors/pr/product-manager-prompts点击查看免费下载product-manager-prompts是一个面向产品经理的 AI 提示词仓库教你在提示词里用 Jinja2 语法写控制流循环、分支与停止条件。仓库收录了 108 个可直接粘贴进 ChatGPT、Claude、Gemini 的 prompt 资产本文深度解析这套 Jinja2 提示词结构并给出一条新手可直接上手的路径。谁适合读刚入门提示词工程的新手以及希望让提示词在循环、定时任务、agent 工作流里稳定运行的进阶用户。一、为什么普通提示词会失控其实大多数提示词里早就藏着控制流只是被写成了散文散文式指令它的真实身份一次问 3–5 个问题有界循环PRD 一个章节一个章节地写for section in template只报告实质性变化带过滤的循环 空分支需要多少 Given 步骤就写多少数量未知的嵌套循环问题在于散文式控制流靠希望来执行会朝两个方向失效AI 提前停下漏写故事、跳过章节或者停不下来无限生成、再多给一个方案的漂移。Jinja2 记号同时堵死这两个方向循环遍历的是命名且有限的集合分支是显式的空集合有明确定义的行为。二、Jinja2 只写不渲染AI 就是你的渲染器这是仓库最反直觉的一点写在 jinja2-prompt-structures.md 的开头Notational, not rendered.没有任何 Jinja2 引擎真正渲染这些模板——AI 助手本身就是渲染器它把{% for %}、{% if %}读成关于迭代与分支的无歧义指令。这带来两个直接好处每个提示词都能复制粘贴即用粘贴进任意聊天 AI 就能跑无需安装模板引擎控制流变得可检查——人一眼就能看到循环边界、分支条件和出口在哪。如果你要构建真正的 agent这套记号故意是合法的 Jinja2配上 JSON schema 和真实渲染器可以字面渲染。先看一段仓库里典型的最小结构{% set max_runs 6 %} {% if run_count max_runs %} STOP: budget exhausted. Summarize state and hand back to the human. {% elif goal_met %} STOP: goal reached. Report the evidence for goal_met. {% else %} ... one iteration of the work ... {% endif %} 注意顺序先写停止条件再写工作指令——这是刹车线先于油门的设计原则。三、三大结构角色给 AI 循环装刹车仓库把 Jinja2 结构归为三个角色Role 1/2/3覆盖反复运行的提示词的三类需求。角色一控制流安全loops 与 goals面向在/loop、定时任务或 agent 中反复运行的提示词三条规则每个循环型提示词先命名停止条件——预算budget、目标谓词goal predicate、无变化出口no-change exit目标谓词必须可检查goal_met 所有关键数据点都有引用来源而不是感觉差不多了就停每个守护分支的兜底都升级给人类预算耗尽、置信度不足、动作越权。角色二输出契约面对数量不定的数据当输出里包含有多少写多少的东西——epic、故事、竞品、Given 步骤——循环把单条输出的形状从示例升级为契约{% for epic in epics %} ## Epic {{ epic.id }}: {{ epic.title }} {% for story in epic.stories %} ### User Story {{ epic.id }}.{{ story.id }} - **As a** {{ story.role }} {% endfor %} {% else %} NOTE: no epics were derivable from the input. Stop and ask. {% endfor %}章节顺序保持规范数量则由数据决定。它的天然搭档是两步流水线第一个提示词或 agent产出符合 schema 的结构化数据第二个提示词把数据渲染成模板——schema 才是真契约模板只是它的投影。角色三先规划后迭代derive the bound, then exhaust it对付停不下来的循环最好的答案不是跑 N 次武断而是迭代集合在开始前就已冻结有原则Phase A —— 推理按评分标准rubric推导出集合Gate —— 人工闸门先展示几行计划让你 10 秒审阅而不是花 10 分钟审 6 份成品。除非你修改否则继续Phase B —— 迭代{% for item in derived_list %}耗尽冻结集合禁止中途加项。目标达成 列表耗尽。四、控制流编写 6 条规则以下规则来自仓库的 Authoring Rules也是你自写提示词时的检查清单#规则一句话解释1循环遍历数组绝不按下标取{{ metrics[2] }}在只有 2 项时静默出错{% for m in metrics %}对任何数量都成立2每个标识符只有一个权威来源不要这里用loop.index、那里用epic.id数据顺序一变就会分叉3每个循环必须有空分支Jinja2 的 for 循环支持{% else %}空集合渲染出光秃秃的标题是静默失败4边界与停止条件写在最前让/loop或 agent 先看到刹车再看到油门5在 Gate 处冻结派生集合Phase B 不许加项新发现记入 Found During Iteration6记号保持最小化for、if/elif/else、set、{{ 变量 }}够用需要 macro 或 filter说明该拆成两个提示词了五、实战案例仓库里的 Jinja2 结构长什么样5.1 旗舰示例用户故事拆分循环vibes/user-story-splitting-jinja2-loop.md 是官方认定的旗舰范例一个提示词里同时用满三个角色——角色一{% set max_stories 8 %}推导出 0 个故事停下来要更小的 epic或超过 8 个这其实是个 theme不是 epic都直接 STOP角色三Phase A 按 Richard Lawrence 的拆分 rubric 推导故事清单Gate 展示并冻结Phase B 逐条耗尽角色二Phase B 用规范的用户故事 Gherkin 模板渲染每一条空列表触发 STOP 并退回 Phase A。5.2 输出契约示例Epic 到故事的格式化 Agentvibes/epic-to-stories-formatter-jinja2.md 展示两步流水线的第二步接收上游产出的 epic/story JSON严格通过三层嵌套循环epics → stories → givens渲染只格式化、不编辑、不臆造。每一层循环都带{% else %}守护——输入里没有任何 epic会直接 STOP 并索要数据而不是渲染一堆空标题。5.3 三级配方从 plain 命令到 Just Enough Jinja2loops/ 目录把关键提示词重铸为命令配方每个配方分三级Level 0 — 原味纯/goal、/loop、/batch、/routine命令今天就能用Level 1 — 循环术语一段纯英文的运营契约轮次、上限、停止条件、压缩携带Level 2 — Just Enough Jinja2JEJMarkdown 是正餐Jinja2 只是调味——只标出哪里重复、何时停下、如何署名。以 loops/story-splitting-loop.md 的 Level 2 为例{% set routine_version story-split-v1.0 %} {% for pass in range(1, 4) %} ## Splitting pass {{ pass }} of 3 ...对每条故事先做廉价检查再按 rubric 拆分... {% endfor %} 上限 3 轮直接写进循环同一条故事存活 2 轮就停下来问人写进循环体——控制流不再依赖你的记忆力。更多活例子loops/prd-section-loop.md章节表变成数据——每个章节是{n, name, covers, after}的字典after声明依赖循环里先确认依赖章节已批准再动笔loops/epic-story-batch.md{% for epic in epics[:10] %}一次性写死批量上限每个 epic 收尾附 receipt收据失败即 STOP 整个批次并留下恢复点loops/competitive-watch-routine.md循环前先守护——没有基线快照就 STOP因为没有 diff 基线的运行只是伪装成增量的重新生成。loops/README.md 还总结了 4 条循环纪律源自 Leen Ammeraal 1987 年出版的 C 语言数据结构教材只算一次、按成本排序检查、先建索引再搜索、先弄清关键路径。建议配合 interaction-modes.md 的三种交互模式一起读理解会更完整。六、避坑清单6 种反模式反模式症状修复按下标访问{{ items[0] }} {{ items[1] }} {{ items[2] }}改为循环规则 1标识符权威分裂这里loop.index、那里item.id只保留一个权威来源规则 2无守护循环空输入渲染出空标题加{% else %}分支规则 3无界 while一直做到满意为止先派生集合再耗尽角色三目标凭感觉做完了就停换成可检查谓词角色一静默范围扩张循环体内偷偷加项在 Gate 处冻结规则 5七、新手上手路径从 clone 到跑通第一个循环git clone https://gitcode.com/gh_mirrors/pr/product-manager-prompts推荐阅读顺序jinja2-prompt-structures.md —— 结构总纲三大角色、6 条规则、反模式全在这loops/README.md —— 四原语/goal、/loop、/batch、/routine、三级配方与 4 条循环纪律loops/story-splitting-loop.md —— 对照三级配方看同一工作流如何逐级加料vibes/user-story-splitting-jinja2-loop.md —— 直接粘贴进任意聊天 AI跑一遍先规划后迭代的完整循环。相关文档导航Jinja2 结构规范jinja2-prompt-structures.md循环配方目录loops/结构范本目录实验与 agent 就绪vibes/交互模式说明interaction-modes.md引导式提问预算有界循环的另一面generative-guidance-pattern.md全部资产目录catalog/INDEX.md仓库采用 CC BY-NC-SA 4.0 许可商业使用需书面授权详见 LICENSING.md。小结product-manager-prompts 用 Jinja2 记号回答了一个提示词工程的根本问题如何让 AI 按程序而非心情执行。记住三句话就够了——AI 是渲染器{% for %}、{% if %}就是写给 AI 的无歧义指令先刹车后油门停止条件永远写在工作指令之前先冻结后耗尽清单在 Gate 处定稿循环只负责执行。把这三条带进你自己的提示词失控的循环和残缺的输出都会少很多。赞分享【免费下载链接】product-manager-promptsA repository of Generative AI prompts for product managers using agents such as ChatGPT, Claude, Gemini项目地址https://gitcode.com/gh_mirrors/pr/product-manager-prompts点击查看免费下载相关推荐awesome-prompts 中的 Prompt Creater一份可迭代的结构化元提示词工作流深度解析awesome prompts 中的 Prompt Creater一份可迭代的结构化元提示词工作流深度解析 本篇技术指南以 prompts/Prompt Cr提示工程文档人工智能Nexent 提示词工程实战12 种 YAML 提示词编写模式与 Jinja2 模板渲染全解析Nexent 提示词工程实战12 种 YAML 提示词编写模式与 Jinja2 模板渲染全解析 本文以 Nexent 开源智能体平台中的提示词编写示例文档为核人工智能AI AgentAgent 编排低代码AI 技能RAGfloating-ui 浮动定位库让工具提示与弹出层自动避让边缘快速上手少写适配代码floating ui 浮动定位库让工具提示与弹出层自动避让边缘快速上手少写适配代码 floating ui 是一个专注浮动定位的轻量开源库帮你把工具提示前端UI组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑