import re | |
def chunk_text(text, max_chars=2040): | |
sentences = re.split(r'(?<=[.!?])\s+', text) | |
chunks = [] | |
current_chunk = [] | |
current_length = 0 | |
for sentence in sentences: | |
sentence_length = len(sentence) | |
if current_length + sentence_length <= max_chars: | |
current_chunk.append(sentence) | |
current_length += sentence_length | |
else: | |
if current_chunk: | |
chunks.append(' '.join(current_chunk)) | |
current_chunk = [sentence] | |
current_length = sentence_length | |
if current_chunk: | |
chunks.append(' '.join(current_chunk)) | |
return chunks | |