第 84 章 Prompt 编译器:从创作合同生成供应商调用

第十六部 工程实施与制作基础设施

第 84 章 Prompt 编译器:从创作合同生成供应商调用#

本章目录
84.1 把创作意图编译为约束系统84.2 参考选择、上下文压缩与模型适配84.3 清单、解析与回归控制84.4 故障诊断与编译差异审查

生产系统不应让每位操作者临场拼提示词。Prompt 是 Episode Pack、身份契约、状态快照、镜头需求和供应商适配器编译出的执行产物。创作事实保存在上游,提示版本只负责把它们翻译为当前模型能理解的形式。

84.1 把创作意图编译为约束系统#

五层输入。

第一层是任务目标与验收;第二层是锁定事实;第三层是当前状态;第四层是视觉、声音或表演参考;第五层是供应商控制参数。层之间有优先级,低层不能覆盖高层。

prompt_source:
  task: 文件从林夏左手转移到顾舟右手
  facts: [folder_red, holder_in_lin, holder_out_gu]
  identity: [lin_v03, gu_v04]
  state: [wardrobe_state_06, boardroom_bluehour_v04]
  camera: [zone_a, 50mm, subtle_push]
  acceptance: [dual_grip_visible, no_mirror, identity_pass]
  provider_adapter: video_b_2026_06

正向约束、负向约束与不变量。

正向约束描述必须出现的状态,负向约束列出高概率灾难,不变量声明任何情况下不能改变的事实。负面列表不应塞入几十个通用词;它只包含该镜头风险,如“文件不得复制、小痣不得换侧、结束持有者不得错误”。

抽象意图要翻译成可观察行为。“冷静强大”被编译为坐下后再开口、音量不提高、目光不看文件、句尾落地。模型仍可在包络内表演,不被逐像素控制。

84.2 参考选择、上下文压缩与模型适配#

参考选择器。

参考图按镜头角度、表情、光线和可见部位检索,不固定给每次调用同一张正面照。侧脸镜头优先侧脸身份锚,手部动作加入袖口与道具参考,多人镜头给槽位图。过多参考会产生冲突,选择器必须能解释每张图为何加入。

reference_selection:
  selected:
    - {asset: lin_3q_v03, reason: face_angle_match, weight_role: identity_primary}
    - {asset: folder_dual_grip_v02, reason: action_peak, weight_role: state_primary}
    - {asset: boardroom_zone_a_v05, reason: spatial_match, weight_role: environment}
  excluded:
    - {asset: lin_front_v03, reason: angle_conflict}
    - {asset: old_wardrobe_v01, reason: lifecycle_retired}

上下文压缩与来源证明。

编译器只加入镜头直接依赖。整季秘密、未来伤势和无关角色不能进入,以免模型提前泄露。压缩摘要保留 source_ref 与校验和,出现争议可回到原事实。

当两份权威资料冲突,例如镜头表写左手、状态表写右手,编译器必须失败并生成冲突报告,不能按最近时间或文本顺序自行选择。

供应商适配器。

统一语义层转换为各服务的字段、参考数量、时长和限制。适配器还负责单位转换、默认值、不可支持能力和输出标准化。供应商不支持结束帧时,应返回 capability mismatch,不应丢掉该约束后继续调用。

适配器版本与生成资产绑定。更新适配器可能改变提示顺序和参数,即使模型版本不变也要跑回归。

84.3 清单、解析与回归控制#

Prompt Manifest。

prompt_manifest:
  prompt_run_id: prun_e001_015_a04
  compiler_version: 2.7.0
  template_version: shot_handoff_4.2.1
  adapter_version: video_b_1.8.0
  source_checksums:
    episode_pack: sha256:aaa
    identity_bundle: sha256:bbb
    state_packet: sha256:ccc
  rendered_prompt_checksum: sha256:ddd
  assumptions: []
  excluded_context: [future_secret, retired_wardrobe]

Manifest 让同一结果可解释,不保证供应商完全确定性。可复现的最低标准是知道输入与编译过程,而不是承诺得到相同像素。

输出解析与污染隔离。

模型返回的文字说明和元数据均视为非权威。解析器验证文件、时长、格式和 Schema;模型声称“连续性已通过”不能写入批准状态。候选进入隔离区,经过独立评测与人工门禁才晋升。

若模型输出提出新剧情事实,只可作为候选建议,不进入 Fact Registry。生成层没有改写故事的权限。

Prompt 回归测试。

黄金集覆盖身份、动作、空间、文字和安全边界。测试结构化输出是否有效、必要字段是否存在、退役资产是否排除、冲突是否阻断、Token 是否超限。图像结果用统计与人工评审,不要求像素快照。

灰度发布 10% 任务,比较 Schema 失败、人工拒绝、批准秒成本和错误类型。任何 blocker 逃逸立即回滚。

84.4 故障诊断与编译差异审查#

故障树。

提示越来越长但效果下降:上下文没有按依赖裁剪;角色知道未来秘密:知识状态隔离失败;参考图互相打架:选择器没有角度与生命周期规则;换供应商后约束丢失:适配器静默降级;结果污染事实库:候选输出与权威写入没有分域。

SOP、检查表与交付物。

定义统一语义 Schema;实现来源解析;选择最小参考;检查冲突;编译可观察行为;应用供应商适配;保存 Manifest;隔离输出;运行回归与灰度;监测质量和成本。

  • Prompt 可由上游合同重新生成。
  • 每段上下文有来源和权威级别。
  • 不支持能力会失败,不静默忽略。
  • 模型输出不能直接写事实与批准状态。
  • 编译器和适配器都有独立版本。

练习:实现一个镜头语义包到两种供应商格式的编译器,交付 prompt_schema.jsonreference_selector.yamladapters/manifests/regression_cases/canary_report.md

编译差异审查。

任何 Prompt 模板或适配器升级,都生成语义差异而非只比较整段文本。审查要回答:新增了哪些事实,删除了哪些约束,参考选择为何变化,供应商不支持项怎样处理,Token 预算怎样改变。空格和句序变化可以折叠,身份、动作和权利变化必须突出。

用《逆光收购》文件交接镜做演练:新版适配器只允许两张参考,于是选择器删除会议室全景。系统不能静默提交,而应显示空间锚点缺失风险并提供三种路线:把空间信息编译进文字、合成一张经过批准的参考板、改用支持三张参考的能力路由。人类决定后,理由进入 Manifest,后续失败才可追溯。

编译器的通过条件包括:相同权威输入产生相同语义输出;冲突输入必然阻断;退役资产无法进入;供应商能力缺口不会静默消失;任何生成结果都能反查完整来源。

发布前再用人工可读视图抽查,防止结构正确而语义失真。

抽查结果必须归档。