import re def chunk_text_paragraphs(text: str, max_length: int = 500) -> list[str]: # Absätze trennen paragraphs = re.split(r'\n\s*\n', text.strip()) chunks: list[str] = [] current_chunk = "" for para in paragraphs: para = para.strip() if not para: continue # Passt der Absatz noch zum aktuellen Chunk? +2 für die später hinzugefügten "\n\n" if len(current_chunk) + len(para) + 2 <= max_length: current_chunk = (current_chunk + "\n\n" + para) if current_chunk else para else: # Aktuellen Chunk abschließen if current_chunk: chunks.append(current_chunk) # Ist der Absatz selbst zu groß? Dann hart splitten if len(para) > max_length: for i in range(0, len(para), max_length): chunks.append(para[i:i + max_length]) current_chunk = "" else: current_chunk = para # Letzten Chunk nicht vergessen if current_chunk: chunks.append(current_chunk) return chunks