Ограниченное извлечение блоков с обратными кавычками
FenceLilt предоставляет пространство проекта Windows для обсуждения ограниченного извлечения блоков текста с ИИ. Сопоставьте парсер от совместимой модели с точными правилами маркеров и отделяйте извлечённый текст от выполнения.
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
Подключение
Базовый URL, учётные данные и доступный сервер.
Проект
Проверьте пустые блоки и нормализацию переводов строк, отклоните незакрытый блок и не интерпретируйте другие формы 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