A community based topic aggregation platform built on atproto

feat(kagi-news): judge duplicates with Haiku 5.5 and thinking master

Semantic dedup moves from Claude Haiku 4.5 with a forced tool call to Claude Haiku 5.5 with automatic tool choice and high effort, so the model reasons before it reports verdicts. The prompt is rewritten around what a reader would treat as the same story: extra details about an incident, officials still weighing an option, knock-on effects and further stunts by the same actor are duplicates; decisions, outcomes, separate incidents, separate studies and changed forecasts are new. The setup was chosen from an eval that replayed 99 production dedup calls (2026-09-18 to 2026-10-12) against 331 labelled candidates. On the held-out days, production Haiku 4.5 scored F1 0.65 (it suppressed many real follow-ups) and a plain swap to Haiku 5.5 scored 0.51 (it let most duplicates through); this setup scored 0.83 to 0.88 at about $0.0013 a call. Changes: - Model claude-haiku-5-5; tool_choice auto with an instruction to call report_duplicates once; output_config effort high. - max_tokens gains a 16000-token thinking allowance on top of the per-candidate answer budget. - Any response that does not stop with stop_reason "tool_use" (refusal, truncation, pause, context limit, text-only answer) now raises SemanticDedupUnavailable, so a partial verdict list can no longer post unjudged stories. - Tests: the request contract and budget tests now pin the new settings; new tests cover a refusal carrying a partial tool call and thinking and text blocks before the tool call. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>


+117 -34
2 changed files