🔧 Кастомный Text Splitter
*. ✂️
(* сложная задача, можете спокойно её пропустить)
Вам предоставляется текст с четко обозначенными разделами и подразделами, как показано на картинке ниже (оглавление текущего курса с ключевыми словами в некоторых разделах и подразделах.)
Задача — написать функцию
get_content_from_sections(text: str) -> List[str]
, которая принимает
такой текст в качестве входных данных и возвращает список, содержащий ключевые слова
(весь текст) из каждого раздела и подраздела, исключая сами заголовки.
Замечание — Собранный текст с каждого основого раздела
(1, 2, 3
и т.д.) поместить в одну строку, разделив пробелами. То есть
список на выходе должен иметь длину, равную количеству основных разделов.
Ответ для примера с картинки
[
"Описание курса, начальные требования, для кого этот курс. Цели курса, канал и комьюнити, глоссарий, PET-проект, хард режим vs лайт режим? Рассказываем почему важно разбираться в LLM. Нужен ли ИИ обычному человеку? Получаем ключ в боте. Получаем официальный ключ от OpenAI. Ныряем в Open Source и получаем ключ от HuggingFace.",
"Поясняем за промпты. Техники и лайфхаки для промптинга. Из чего состоит промпт? Few-shot learning. Output Parser. Рассказываем про преимущества LangChain.",
"Переводим LLM в чат-режим. Типы памяти. Chains & LCEL. Агенты и цепи. Инструменты (tools)."
]
Тексты из тестов
text1 = """
1. Вступление
Описание курса, начальные требования, для кого этот курс.
1.1 Как правильно входить в курс
Цели курса, канал и комьюнити, глоссарий, PET-проект, хард режим vs лайт режим?
1.2 Общий подход и точки улучшения приложений с LLM
Рассказываем почему важно разбираться в LLM. Нужен ли ИИ обычному человеку?
1.3 API ключ курса или от OpenAI?
1.3.1 Ключ от команды курса
Получаем ключ в боте.
1.3.2 Ключ от OpenAI
Получаем официальный ключ от OpenAI.
1.3.3 Ключ от HuggingFace
Ныряем в Open Source и получаем ключ от HuggingFace.
2. Промптинг - объясни LLM, что тебе от неё надо!
2.1 Введение в Prompt Engineering
Поясняем за промпты. Техники и лайфхаки для промптинга. Из чего состоит промпт?
2.2 Дизайн промптов в LangChain
Few-shot learning. Output Parser.
2.2.1 Введение в LangChain
Рассказываем про преимущества LangChain.
3. LangChain или причем тут попугаи?
3.1 Память в LangChain
Переводим LLM в чат-режим. Типы памяти.
3.2 Chains - собери свою цепь
Chains & LCEL.
3.3 Агенты intro
Агенты и цепи. Инструменты (tools).
"""
text2 = """
"""
text3 = """
1. Главный заголовок
Тут содержимое, которое нужно достать из главного заголовка.
1.1 Подзаголовок
Тут содержимое, которое нужно достать из подзаголовка.
"""
text4 = """
1. Первый заголовок
2. Второй заголовок
"""
text5 = """
1. Введение
Краткое описание целей и задач документа.
2. Основные разделы
Краткий обзор основных разделов.
2.1 Первый подраздел
Какие-то мелкие детали.
3. Заключение
Выводы и заключительные комментарии.
4. Приложения
Дополнительная информация и материалы.
"""
Failed. Runtime error Error: Traceback (most recent call last): File "jailed_code", line 109, in <module> assert False, "Ошибка на тесте 4." AssertionError: Ошибка на тесте 4.
Подскажите по решению, локально проверяю - все тесты из наличия проходит, а тут jailed_code на 4ом. Что-то не учтено?
@Albert_Murtazin, тексты из тестов есть в подсказке
все тексты из подсказок проходят тесты локально, но на платформе на 4ом тесте падает с ошибкой "jailed_code"
@Albert_Murtazin, ответом на 4-й тест должен быть пустой список [ ]. Посмотрите, что у вас
@Иван_Александров, тогда это противоречит условию "список на выходе должен иметь длину, равную количеству основных разделов". Даже если в разделе ничего нет, то из этого условия подразумевается, что элемент списка становится пустой строкой (или None\False\etc). Подправить бы.
@Albert_Murtazin, хорошо, проверим