FFenceLilt
Робоче середовище з ШІ для коду

Обмежене вилучення блоків зі зворотними лапками

Вилучіть блоки з трьома зворотними лапками на початку рядка з тексту до 4096 символів із необов’язковою ASCII-міткою мови.

● ● ●FenceLilt●
Сценарії · Обмежене вилучення блоків зі зворотними лапками ×
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
✳Обмежене вилучення блоків зі зворотними лапками
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
  1. Моделі

    Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.

  2. Проєкт

    Перевірте порожні блоки й нормалізацію перенесень, відхиліть незакритий блок та не інтерпретуйте інші форми Markdown і не виконуйте код.

  3. Перевірте перед застосуванням

    Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.

Сценарії

Обмежене вилучення блоків зі зворотними лапками

Сценарії ↗
Сценарії
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 — це зміна вимог, а не автоматичний наслідок очищення парсера.

Як обробляти незакритий блок?

Перед реалізацією зміни зазначте, чи відхиляється неповний вхід. У показаному завданні він відхиляється. Додайте тест, що доходить до кінця з відкритим блоком, і перевірте належне представлення цього результату кодом виклику.

Навіщо зберігати непідтримувані приклади в тестах?

Вони показують межі функції. Запропонований моделлю вираз може випадково розпізнавати додаткові форми, змінюючи поведінку без очевидного збою. Перевіряйте прийнятий і незмінений текст разом, щоб реалізація зберігала потрібну межу.

Завантажити для Windows ↗

FenceLilt · Оновлено 2026-10-25