| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- from __future__ import annotations
- from agent import get_preset
- from script_build_host.agents.presets import register_script_presets
- from script_build_host.agents.prompts import (
- COMPARISON_WORKER_PROMPT,
- COMPOSE_WORKER_PROMPT,
- DIRECTION_WORKER_PROMPT,
- ELEMENT_SET_WORKER_PROMPT,
- EVIDENCE_RETRIEVAL_WORKER_PROMPT,
- PARAGRAPH_WORKER_PROMPT,
- PLANNER_PROMPT,
- ROOT_VALIDATOR_PROMPT,
- SCRIPT_CANDIDATE_VALIDATOR_PROMPT,
- STRUCTURE_WORKER_PROMPT,
- script_build_prompt_manifest,
- )
- def test_logical_retrieval_prompt_keeps_provider_choice_host_owned() -> None:
- manifest = {str(item["preset"]): item for item in script_build_prompt_manifest()}
- frozen = manifest["script_evidence_retrieval_worker"]
- assert frozen["source_id"] == "evidence_retrieval_worker.md"
- assert frozen["content"] == EVIDENCE_RETRIEVAL_WORKER_PROMPT
- assert "RetrievalPipeline" in EVIDENCE_RETRIEVAL_WORKER_PROMPT
- assert "不由模型选择" in EVIDENCE_RETRIEVAL_WORKER_PROMPT
- register_script_presets()
- assert (
- get_preset("script_evidence_retrieval_worker").system_prompt
- == EVIDENCE_RETRIEVAL_WORKER_PROMPT
- )
- def test_creative_prompts_preserve_quality_and_convergence_contracts() -> None:
- assert "前期可探索不同的真实路径" in PLANNER_PROMPT
- assert "只处理最主要的缺陷簇" in PLANNER_PROMPT
- assert "受众可感知结果" in DIRECTION_WORKER_PROMPT
- assert "不预写 Phase 2" in DIRECTION_WORKER_PROMPT
- assert "段落方案" in DIRECTION_WORKER_PROMPT
- assert "不是完成的正文" in STRUCTURE_WORKER_PROMPT
- assert "不可随意互换" in STRUCTURE_WORKER_PROMPT
- assert "受众最终能直接看到" in PARAGRAPH_WORKER_PROMPT
- assert "不是提纲、创作说明" in PARAGRAPH_WORKER_PROMPT
- assert "只是抽象评价" in ELEMENT_SET_WORKER_PROMPT
- assert "先按完全相同的 criteria 独立评价" in COMPARISON_WORKER_PROMPT
- assert "不在 Compose 阶段补写或润色" in COMPOSE_WORKER_PROMPT
- def test_validator_prompts_require_audience_visible_semantic_evidence() -> None:
- dimensions = (
- "D1 Goal 实现",
- "D2 具体可执行",
- "D3 结构叙事",
- "D4 元素一致",
- "D5 主题与 persona",
- "D6 信息与事实",
- )
- for dimension in dimensions:
- assert dimension in SCRIPT_CANDIDATE_VALIDATOR_PROMPT
- assert "标签、自述和 Artifact URI 本身都不能证明内容质量" in (
- SCRIPT_CANDIDATE_VALIDATOR_PROMPT
- )
- assert "真实受众的阅读顺序" in ROOT_VALIDATOR_PROMPT
- assert "空 evidence、空正文、零独立 Element 或零 Link" in ROOT_VALIDATOR_PROMPT
|