From 670ea83751a2e6286969c0e697dbace873f9f64d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Wed, 27 May 2026 06:34:20 +0000 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B3=D0=B5=D0=BD=D1=82=20=D1=81=20RAG?= =?UTF-8?q?=E2=80=91=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D1=8C=D1=8E:=20chunker.?= =?UTF-8?q?py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chunker.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/chunker.py diff --git a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/chunker.py b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/chunker.py new file mode 100644 index 0000000..9e87f57 --- /dev/null +++ b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/chunker.py @@ -0,0 +1,41 @@ +<|channel|>final code<|message|>```python +# chunker.py +""" +Модуль для разбиения больших текстов на небольшие чанки. +Использует RecursiveCharacterTextSplitter из LangChain. + +Публичный API: + split_text(text: str, chunk_size: int = 1000, chunk_overlap: int = 200) -> List[str] +""" + +from typing import List +from langchain.text_splitter import RecursiveCharacterTextSplitter + + +def split_text( + text: str, + *, + chunk_size: int = 1000, + chunk_overlap: int = 200, +) -> List[str]: + """ + Разбивает входной текст на чанки заданного размера с перекрытием. + + Args: + text: Текст, который нужно разбить. + chunk_size: Максимальная длина одного чанкa (по символам). + chunk_overlap: Количество символов, которые будут пересекаться между + соседними чанками. Позволяет сохранить контекст при поиске. + + Returns: + Список строк – чанков текста. + """ + if not isinstance(text, str): + raise TypeError("text must be a string") + + splitter = RecursiveCharacterTextSplitter( + chunk_size=chunk_size, + chunk_overlap=chunk_overlap, + separators=["\n\n", "\n", " ", ""], + ) + return splitter.split_text(text) \ No newline at end of file