Retry failed rewrite batches in smaller chunks
This commit is contained in:
@@ -132,6 +132,42 @@ class Stage4RewriteTests(unittest.TestCase):
|
||||
self.assertEqual([item.title for item in rewritten], ["OpenAI launches GPT-5 API", "OpenAI launches GPT-5 API"])
|
||||
self.assertEqual(report["fallback_count"], 2)
|
||||
|
||||
def test_rewrite_items_retries_failed_large_batch_as_smaller_batches_by_default(self):
|
||||
items = [news_item(str(index)) for index in range(30)]
|
||||
calls = []
|
||||
|
||||
def llm_call(prompt):
|
||||
payload = json.loads(prompt)
|
||||
ids = [item["id"] for item in payload["items"]]
|
||||
calls.append(ids)
|
||||
if len(ids) == 30:
|
||||
return "not json"
|
||||
return json.dumps(
|
||||
{
|
||||
"rewrites": [
|
||||
{
|
||||
"id": item_id,
|
||||
"title": f"title {item_id}",
|
||||
"summary": f"summary {item_id}",
|
||||
"section": "模型与能力",
|
||||
"flags": [],
|
||||
}
|
||||
for item_id in ids
|
||||
]
|
||||
},
|
||||
ensure_ascii=False,
|
||||
)
|
||||
|
||||
rewritten, report = rewrite_items(items, llm_call=llm_call)
|
||||
|
||||
self.assertEqual([len(call) for call in calls], [30, 10, 10, 10])
|
||||
self.assertEqual(report["rewritten_count"], 30)
|
||||
self.assertEqual(report["llm_section_count"], 30)
|
||||
self.assertEqual(report["fallback_count"], 0)
|
||||
self.assertEqual(report["batch_retry_count"], 3)
|
||||
self.assertEqual(report["blocking_errors"], [])
|
||||
self.assertEqual(rewritten[0].title, "title 0")
|
||||
|
||||
def test_rewrite_items_keeps_partial_batch_rewrites_when_some_ids_are_missing(self):
|
||||
items = [news_item("a"), news_item("b"), news_item("c")]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user