Обмежене вилучення блоків зі зворотними лапками
Вилучіть блоки з трьома зворотними лапками на початку рядка з тексту до 4096 символів із необов’язковою ASCII-міткою мови.
import re
def fenced_blocks(text):
if type(text) is not str or len(text) > 4096:
raise ValueError("fence.input")
blocks, body, language = [], None, None
for line in text.splitlines():
if body is None:
opening = re.fullmatch(r"```([A-Za-z0-9_-]*)", line)
if opening:
body, language = [], opening[1]
elif line == "```":
blocks.append((language, "\n".join(body)))
body = None
else:
body.append(line)
if body is not None:
raise ValueError("fence.unclosed")
return blocks
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
Проєкт
Перевірте порожні блоки й нормалізацію перенесень, відхиліть незакритий блок та не інтерпретуйте інші форми Markdown і не виконуйте код.
Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
import re
def fenced_blocks(text):
if type(text) is not str or len(text) > 4096:
raise ValueError("fence.input")
blocks, body, language = [], None, None
for line in text.splitlines():
if body is None:
opening = re.fullmatch(r"```([A-Za-z0-9_-]*)", line)
if opening:
body, language = [], opening[1]
elif line == "```":
blocks.append((language, "\n".join(body)))
body = None
else:
body.append(line)
if body is not None:
raise ValueError("fence.unclosed")
return blocks
Відокремлюйте контракт витягування від виконання
FenceLilt надає робоче середовище з ШІ для програмування у Windows розробникам невеликих функцій обробки тексту з навмисно обмеженими правилами входу. Відкрийте проєкт і опишіть, що функція має розпізнавати, що залишати без змін і як повідомляти про неповний вхід. Підключена модель зможе перевірити код і запропонувати зміну відповідно до цих меж.
Витягування огороджених блоків коду дає конкретне завдання. Використовуйте правила маркерів і міток мови з наявного прикладу для обговорення допустимих форм, включно з порожніми блоками й розривами рядків. Попросіть помічника пояснити, як запропонований парсер обробляє незакритий блок, перш ніж перевіряти реалізацію. Витягнутий вміст є текстом; рішення щось із нього виконувати було б іншою функцією з іншими вимогами.
Після перевірки виправлення запустіть у проєкті тести точного результату та додайте непідтримувані форми, які не можна випадково переосмислювати. Перевірте межу розміру й обробку помилок поряд з успішним витягуванням. Для допомоги ШІ налаштуйте підтримувану кінцеву точку, сумісну з OpenAI, або Anthropic з обліковими даними за потреби. Модель без обмежень можна вибрати, якщо служба її надає, а місткість контексту й доступність інструментів залежать від сервера. Корисний сеанс завершується зміною, допустиму мову й поведінку при помилках якої можна чітко описати.
Перевірка функції витягування з обмеженою підтримкою
Чи означає витягування блока коду виконання його вмісту?
Ні. Це завдання повертає текст за визначеним контрактом маркерів. Відокремлюйте подальше рішення про виконання від витягування й перевіряйте наступний код, щоб обробка поверненого вмісту несподівано не викликала команд і не виконувала код.
Чи має процедура приймати всі стилі огородження Markdown?
Наявний приклад навмисно підтримує обмежену форму. Перелічіть потрібні програмі маркери й мітки та явно перевірте їх. Розширення на інші форми Markdown — це зміна вимог, а не автоматичний наслідок очищення парсера.
Як обробляти незакритий блок?
Перед реалізацією зміни зазначте, чи відхиляється неповний вхід. У показаному завданні він відхиляється. Додайте тест, що доходить до кінця з відкритим блоком, і перевірте належне представлення цього результату кодом виклику.
Навіщо зберігати непідтримувані приклади в тестах?
Вони показують межі функції. Запропонований моделлю вираз може випадково розпізнавати додаткові форми, змінюючи поведінку без очевидного збою. Перевіряйте прийнятий і незмінений текст разом, щоб реалізація зберігала потрібну межу.
FenceLilt · Оновлено 2026-10-25