| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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,
- DECODE_RETRIEVAL_WORKER_PROMPT,
- DIRECTION_WORKER_PROMPT,
- ELEMENT_SET_WORKER_PROMPT,
- EXTERNAL_RETRIEVAL_WORKER_PROMPT,
- KNOWLEDGE_RETRIEVAL_WORKER_PROMPT,
- PARAGRAPH_WORKER_PROMPT,
- PATTERN_RETRIEVAL_WORKER_PROMPT,
- PLANNER_PROMPT,
- ROOT_VALIDATOR_PROMPT,
- SCRIPT_CANDIDATE_VALIDATOR_PROMPT,
- STRUCTURE_WORKER_PROMPT,
- script_build_prompt_manifest,
- )
- def test_retrieval_roles_freeze_distinct_source_specific_prompts() -> None:
- retrieval_presets = {
- "script_pattern_retrieval_worker": (
- "pattern_retrieval_worker.md",
- PATTERN_RETRIEVAL_WORKER_PROMPT,
- "query_pattern_qa",
- ),
- "script_decode_retrieval_worker": (
- "decode_retrieval_worker.md",
- DECODE_RETRIEVAL_WORKER_PROMPT,
- "search_script_decode_case",
- ),
- "script_external_retrieval_worker": (
- "external_retrieval_worker.md",
- EXTERNAL_RETRIEVAL_WORKER_PROMPT,
- "external_search_case",
- ),
- "script_knowledge_retrieval_worker": (
- "knowledge_retrieval_worker.md",
- KNOWLEDGE_RETRIEVAL_WORKER_PROMPT,
- "search_knowledge",
- ),
- }
- manifest = {str(item["preset"]): item for item in script_build_prompt_manifest()}
- assert len({content for _, content, _ in retrieval_presets.values()}) == 4
- for preset, (filename, content, tool_name) in retrieval_presets.items():
- assert manifest[preset]["source_id"] == filename
- assert manifest[preset]["content"] == content
- assert tool_name in content
- assert "且仅再调用一次" in content
- def test_registered_retrieval_presets_use_their_own_prompt() -> None:
- register_script_presets()
- expected = {
- "script_pattern_retrieval_worker": PATTERN_RETRIEVAL_WORKER_PROMPT,
- "script_decode_retrieval_worker": DECODE_RETRIEVAL_WORKER_PROMPT,
- "script_external_retrieval_worker": EXTERNAL_RETRIEVAL_WORKER_PROMPT,
- "script_knowledge_retrieval_worker": KNOWLEDGE_RETRIEVAL_WORKER_PROMPT,
- }
- for preset, prompt in expected.items():
- assert get_preset(preset).system_prompt == 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
|