Add text chunking and Persian language helpers
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
TG_LIMIT = 4096
|
||||
|
||||
|
||||
def chunk_text(text: str, max_length: int = TG_LIMIT) -> list[str]:
|
||||
"""Split text into ≤max_length chunks, preferring newline then space boundaries."""
|
||||
if len(text) <= max_length:
|
||||
return [text]
|
||||
|
||||
chunks: list[str] = []
|
||||
while text:
|
||||
if len(text) <= max_length:
|
||||
chunks.append(text)
|
||||
break
|
||||
|
||||
split_at = text.rfind('\n', 0, max_length)
|
||||
if split_at == -1:
|
||||
split_at = text.rfind(' ', 0, max_length)
|
||||
if split_at == -1:
|
||||
split_at = max_length
|
||||
|
||||
chunk = text[:split_at].strip()
|
||||
if chunk:
|
||||
chunks.append(chunk)
|
||||
text = text[split_at:].strip()
|
||||
|
||||
return chunks
|
||||
Reference in New Issue
Block a user