test_thinking_summary.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import importlib.util
  2. import sys
  3. import types
  4. from pathlib import Path
  5. PROJECT_ROOT = Path(__file__).resolve().parents[1]
  6. MODULE_PATH = PROJECT_ROOT / "utils" / "thinking_summary.py"
  7. utils_module = types.ModuleType("utils")
  8. config_module = types.ModuleType("utils.config")
  9. prompt_loader_module = types.ModuleType("utils.prompt_loader")
  10. config_module.settings = types.SimpleNamespace(thinking_summary=types.SimpleNamespace(enabled=True))
  11. prompt_loader_module.load_prompt = lambda *args, **kwargs: ""
  12. sys.modules.setdefault("utils", utils_module)
  13. sys.modules["utils.config"] = config_module
  14. sys.modules["utils.prompt_loader"] = prompt_loader_module
  15. spec = importlib.util.spec_from_file_location("thinking_summary_under_test", MODULE_PATH)
  16. thinking_summary = importlib.util.module_from_spec(spec)
  17. spec.loader.exec_module(thinking_summary)
  18. def test_normalize_thinking_summary_uses_user_question_prefix():
  19. text = (
  20. "用户问的是“蜀道矿业集团出台过哪些有关于汛期安全管理的制度和办法”。"
  21. "这个问题属于集团或子公司内部制度查询。"
  22. )
  23. normalized = thinking_summary.normalize_thinking_summary(text)
  24. assert normalized.startswith("用户问的是")
  25. assert "我们需要理解问题:" not in normalized
  26. assert "识别用户明确查询" not in normalized
  27. assert "问题核心主题" not in normalized
  28. assert "需结合公司主体" not in normalized
  29. def test_fallback_thinking_summary_uses_user_question_prefix():
  30. summary = thinking_summary._build_fallback_summary(
  31. "蜀道矿业集团出台过哪些有关于汛期安全管理的制度和办法",
  32. max_points=3,
  33. max_output_chars=600,
  34. )
  35. assert summary.startswith("用户问的是")
  36. assert "我们需要理解问题:" not in summary