Skip to content

Commit ad304c7

Browse files
committedFeb 12, 2025
- enabled backoff for async chunk processing
1 parent d335871 commit ad304c7

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed
 

Diff for: ‎src/hierarchical.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313

1414
from .types import TYPE_SPECIFIC_PROMPTS, DocumentType
1515
import asyncio
16-
import functools
1716
import nest_asyncio
17+
import backoff
18+
import functools
1819

1920
# Load the LLMDataModel class from the summarize-lib module
2021
LLMDataModel = Import.load_expression("ExtensityAI/primitives-extend", "LLMDataModel")
@@ -183,7 +184,6 @@ def prompt(self):
183184
"""
184185
)
185186
prompt_text += Summary.instruct_llm()
186-
187187
return prompt_text
188188

189189
@property
@@ -284,6 +284,18 @@ def chunk_by_token_count(self, text, chunk_size, include_context=False):
284284
return chunks
285285

286286
async def summarize_chunks(self, chunks):
287+
@backoff.on_exception(
288+
backoff.expo,
289+
Exception,
290+
max_tries=10,
291+
factor=2,
292+
on_backoff=lambda details: logger.warning(
293+
f"Retrying summarization due to error: {details}"
294+
),
295+
on_giveup=lambda details: logger.error(
296+
f"Failed to summarize chunk after {details['tries']} attempts: {details}"
297+
),
298+
)
287299
async def summarize_chunk(chunk):
288300
loop = asyncio.get_event_loop()
289301
forward_fn = functools.partial(

Diff for: ‎src/hierarchical_OLD_BASIC.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
import tempfile
1111

1212
import asyncio
13-
import functools
1413
import nest_asyncio
14+
import backoff
15+
import functools
1516

1617

1718
def always_get_an_event_loop() -> asyncio.AbstractEventLoop:
@@ -230,6 +231,18 @@ def chunk_by_token_count(self, text, chunk_size, include_context=False):
230231
return chunks
231232

232233
async def summarize_chunks(self, chunks):
234+
@backoff.on_exception(
235+
backoff.expo,
236+
Exception,
237+
max_tries=10,
238+
factor=2,
239+
on_backoff=lambda details: logger.warning(
240+
f"Retrying summarization due to error: {details}"
241+
),
242+
on_giveup=lambda details: logger.error(
243+
f"Failed to summarize chunk after {details['tries']} attempts: {details}"
244+
),
245+
)
233246
async def summarize_chunk(chunk):
234247
loop = asyncio.get_event_loop()
235248
forward_fn = functools.partial(

0 commit comments

Comments
 (0)
Please sign in to comment.