Ograniczone wydobywanie bloków z grawisami
Wydobądź bloki potrójnych grawisów w kolumnie zerowej z tekstu do 4096 znaków z opcjonalną etykietą języka 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
Modele
Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.
Projekt
Sprawdź puste bloki i normalizację końców wierszy, odrzuć blok niezamknięty i pozostaw inne formy Markdown bez interpretacji ani wykonywania kodu.
Sprawdź przed zastosowaniem
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
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
Oddziel kontrakt ekstrakcji od wykonywania kodu
FenceLilt udostępnia środowisko programowania z AI dla Windows dla twórców małych funkcji przetwarzania tekstu o celowo ograniczonych regułach wejścia. Otwórz projekt i opisz, co funkcja ma rozpoznawać, co pozostawiać bez zmian i jak zgłaszać niekompletne wejście. Podłączony model może wtedy przejrzeć źródło i zaproponować zmianę względem tych granic.
Wyodrębnianie bloków kodu otoczonych znacznikami to konkretne zadanie. Użyj reguł znaczników i etykiet języka z istniejącego przykładu, aby omówić przyjmowane formy, w tym puste bloki i podziały wierszy. Poproś asystenta o wyjaśnienie traktowania niezamkniętego bloku przez proponowany parser przed przeglądem implementacji. Wyodrębniona treść jest tekstem; decyzja o uruchomieniu czegokolwiek z niej byłaby inną funkcją z innymi wymaganiami.
Po sprawdzeniu poprawki uruchom w projekcie dane testowe z dokładnymi wynikami, uwzględniając nieobsługiwane formy, których nie wolno przypadkowo reinterpretować. Sprawdź limit rozmiaru i obsługę błędów obok udanej ekstrakcji. Aby korzystać z pomocy AI, skonfiguruj obsługiwany punkt końcowy zgodny z OpenAI lub Anthropic, z danymi uwierzytelniającymi tam, gdzie są potrzebne. Model bez ograniczeń można wybrać, jeśli usługa go udostępnia, natomiast pojemność kontekstu i dostępność narzędzi zależą od serwera. Użyteczna sesja kończy się zmianą, której przyjmowany język i zachowanie przy błędach potrafisz jasno opisać.
Sprawdzanie ograniczonej funkcji ekstrakcji
Czy wyodrębnienie bloku kodu oznacza uruchomienie jego treści?
Nie. To zadanie zwraca tekst według określonego kontraktu znaczników. Oddziel późniejszą decyzję o wykonaniu od ekstrakcji i sprawdź dalszy kod, aby obsługa zwróconej treści nie wywoływała niespodziewanie poleceń ani nie wykonywała kodu źródłowego.
Czy ta procedura powinna przyjmować każdy styl bloków Markdown?
Istniejący przykład celowo obsługuje ograniczoną formę. Wymień znaczniki i etykiety potrzebne aplikacji, a następnie jawnie je sprawdź. Rozszerzenie na inne formy Markdown jest zmianą wymagania, a nie automatyczną konsekwencją porządkowania parsera.
Jak obsłużyć niezamknięty blok?
Przed implementacją zmiany określ, czy niekompletne wejście jest odrzucane. Pokazane zadanie je odrzuca. Dodaj dane testowe dochodzące do końca przy otwartym bloku i zweryfikuj odpowiednią prezentację tego wyniku przez kod wywołujący.
Dlaczego zachować nieobsługiwane przykłady w testach?
Pokazują, gdzie kończy się zakres funkcji. Wyrażenie zaproponowane przez model może przypadkowo rozpoznawać dodatkowe formy, zmieniając zachowanie bez oczywistego błędu. Sprawdzaj razem tekst przyjmowany i pozostawiany bez zmian, aby implementacja zachowała zamierzoną granicę.
FenceLilt · Zaktualizowano 2026-10-25