fix(writer): auto 模式语言 fallback 改用规则文档,修复日文文档被误判期望 zh
真实 ja 试运行暴露:auto 模式 fallback 误用 impact/data 源数据(含中文元素名 止损风控等 + 汉字标签无假名)→ 把日文文档误判为期望 zh → LLM 正常日文输出被 判违规 → 硬失败。修复:fallback 改用 write_rules/design_rules(RAG 自日文作成 说明书/记入规则检索,含假名可靠判 ja);加回归测试 test_generate_chapter_auto_with_ja_rules_but_chinese_source_data_enforces_ja。 修复后 ja 真实试运行成功(7章);zh 真实试运行成功(7章);425 passed / 99.15%
This commit is contained in:
@@ -170,3 +170,30 @@ def test_generate_chapter_auto_unverifiable_not_enforced():
|
||||
state=WriterState(["db_design"]), max_retries=1)
|
||||
content = agent.generate_chapter(_ctx_with_lang("db_design", "DB 設計", "auto"))
|
||||
assert content is not None
|
||||
|
||||
|
||||
class JaRuleEngine(MixedLanguageEngine):
|
||||
"""返回日文正文(含假名)。"""
|
||||
|
||||
|
||||
def test_generate_chapter_auto_with_ja_rules_but_chinese_source_data_enforces_ja():
|
||||
"""回归:真实试运行暴露——auto 模式 fallback 只用规则文档(日文),
|
||||
不得用 impact/data 源数据(含中文元素名)把期望误判为 zh。
|
||||
构造:标题纯汉字「機能一覧」(无假名)+ 规则文档日文(含假名)+ 源数据中文,
|
||||
期望应推导为 ja;日文正文应通过、中文正文应违规。
|
||||
"""
|
||||
ja_rules_ctx = GenerationContext(
|
||||
chapter_id="function_list", title="2. 機能一覧",
|
||||
template_marker=ChapterSpec(chapter_id="function_list", title="2. 機能一覧"),
|
||||
structured_source="中文源数据:止损风控、下单流程",
|
||||
write_rules=["書込規則に従って記述する。"], # 日文含假名
|
||||
design_rules=["設計方針は本書の通りである。"], # 日文含假名
|
||||
template_styles=set(),
|
||||
output_language="auto",
|
||||
)
|
||||
engine = MixedLanguageEngine(["本機能は注文処理を行う画面であり、詳細は以下の通り。"])
|
||||
agent = WriterAgent(session_id="s", engine=engine,
|
||||
prompt_registry=FakePromptRegistry(),
|
||||
state=WriterState(["function_list"]), max_retries=1)
|
||||
content = agent.generate_chapter(ja_rules_ctx)
|
||||
assert content is not None and "本機能" in content.blocks[0].text
|
||||
|
||||
Reference in New Issue
Block a user