osint-dashboard/news/summerizer/tests/test_prompts.py
Sirius DevOps 7822d45f37 fix: stop summarizer from bailing to a canned empty brief
The reduce/recap prompts told the model to AND STOP with "No qualifying…"
whenever nothing looked breaking enough, so full article batches became
one sentence. Always write summary_en from the provided stories; ticker
and map may still be empty. Futures/market tape stay ignored.
2026-08-28 23:20:40 -04:00

52 lines
1.6 KiB
Python

"""Default prompts: breaking news, ignore futures/market tape."""
from summarizer import MAP_PROMPT_DEFAULT, RECAP_PROMPT_DEFAULT, SUMMARY_PROMPT_DEFAULT
def _assert_breaking_not_futures(prompt: str) -> None:
p = prompt.lower()
assert "breaking" in p
assert "futures" in p
assert "ignore" in p or "do not" in p or "not" in p
assert "es=f" not in p
assert "yfinance" not in p
def test_map_prompt_focuses_on_breaking_news_not_futures():
_assert_breaking_not_futures(MAP_PROMPT_DEFAULT)
def test_summary_prompt_focuses_on_breaking_news_not_futures():
_assert_breaking_not_futures(SUMMARY_PROMPT_DEFAULT)
p = SUMMARY_PROMPT_DEFAULT.lower()
assert "commodity" in p or "market" in p
def test_summary_prompt_does_not_bail_out_with_canned_empty_brief():
p = SUMMARY_PROMPT_DEFAULT
assert "AND STOP" not in p
assert "REPEAT 3 TIMES" not in p
assert "No qualifying" not in p
assert "no-qualifying" not in p.lower()
low = p.lower()
assert "always" in low
assert "recap" in low or "summar" in low
def test_recap_prompt_does_not_bail_out_with_canned_empty_brief():
p = RECAP_PROMPT_DEFAULT
assert "AND STOP" not in p
assert "No qualifying" not in p
assert "no-qualifying" not in p.lower()
low = p.lower()
assert "always" in low
assert "daily" in low
assert "24" in low
p = RECAP_PROMPT_DEFAULT.lower()
_assert_breaking_not_futures(RECAP_PROMPT_DEFAULT)
assert "daily" in p
assert "24" in p
assert "summary_en" in p
assert "ticker" in p
assert "map_items" in p