Begrenzte Extraktion von Backtick-Blöcken
Extrahiere Dreifach-Backtick-Blöcke ab Spalte null aus höchstens 4096 Zeichen mit optionalem ASCII-Sprachlabel.
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
Modelle
Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
Projekt
Teste leere Blöcke und normalisierte Zeilenumbrüche, lehne offene Blöcke ab und lasse andere Markdown-Formen ohne Interpretation oder Ausführung stehen.
Vor dem Anwenden prüfen
Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
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
Den Extraktionsvertrag von der Ausführung trennen
FenceLilt bietet eine KI-Programmierumgebung für Windows für Entwickler kleiner Textverarbeitungsfunktionen mit bewusst begrenzten Eingaberegeln. Öffnen Sie das Projekt und beschreiben Sie, was die Funktion erkennen, unverändert lassen und bei unvollständigen Eingaben melden soll. Das verbundene Modell kann anschließend den Quellcode untersuchen und innerhalb dieser Grenzen eine Änderung vorschlagen.
Das Extrahieren eingefasster Codeblöcke liefert eine konkrete Aufgabe. Besprechen Sie anhand der Regeln des vorhandenen Beispiels für Markierungen und Sprachbezeichnungen die akzeptierten Formen einschließlich leerer Blöcke und Zeilenumbrüche. Lassen Sie den Assistenten erklären, wie der vorgeschlagene Parser einen nicht geschlossenen Block behandelt, bevor Sie seine Implementierung prüfen. Der extrahierte Inhalt ist Text; daraus etwas auszuführen wäre eine andere Funktion mit anderen Anforderungen.
Führen Sie nach der Patch-Prüfung Testfälle mit exakten Ausgaben in Ihrem Projekt aus und nehmen Sie nicht unterstützte Formen auf, die nicht versehentlich umgedeutet werden dürfen. Prüfen Sie Größenlimit und Fehlerbehandlung neben erfolgreicher Extraktion. Konfigurieren Sie für KI-Unterstützung einen unterstützten OpenAI-kompatiblen oder Anthropic-Endpunkt, gegebenenfalls mit Zugangsdaten. Ein uneingeschränktes Modell ist wählbar, wenn der Dienst eines bereitstellt; Kontextkapazität und Werkzeugverfügbarkeit hängen vom Server ab. Eine nützliche Sitzung endet mit einer Änderung, deren akzeptierte Sprache und Fehlerverhalten Sie klar beschreiben können.
Eine eingeschränkte Extraktionsfunktion prüfen
Bedeutet das Extrahieren eines Codeblocks, seinen Inhalt auszuführen?
Nein. Diese Aufgabe liefert Text gemäß einem definierten Markierungsvertrag. Halten Sie jede spätere Ausführungsentscheidung von der Extraktion getrennt und prüfen Sie nachgelagerten Code, damit die Verarbeitung eines zurückgegebenen Inhalts nicht unerwartet Befehle aufruft oder Quellcode auswertet.
Sollte diese Routine jede Markdown-Codeblockform akzeptieren?
Das vorhandene Beispiel unterstützt absichtlich eine eingeschränkte Form. Listen Sie benötigte Markierungen und Bezeichnungen auf und prüfen Sie diese ausdrücklich. Die Erweiterung auf andere Markdown-Formen ist eine Anforderungsänderung, keine automatische Folge einer Parserbereinigung.
Wie sollte ein nicht geschlossener Block behandelt werden?
Legen Sie vor der Implementierung fest, ob unvollständige Eingaben zurückgewiesen werden. Die Beispielaufgabe weist sie zurück. Ergänzen Sie einen Testfall, der bei offenem Block das Ende erreicht, und prüfen Sie, ob der Aufrufer dieses Ergebnis angemessen darstellt.
Warum nicht unterstützte Beispiele in Tests beibehalten?
Sie zeigen die Grenzen der Funktion. Ein vom Modell vorgeschlagener Ausdruck kann versehentlich zusätzliche Formen erkennen und ohne offensichtlichen Fehler das Verhalten ändern. Prüfen Sie akzeptierten und unberührten Text gemeinsam, damit die Implementierung die beabsichtigte Grenze bewahrt.
FenceLilt · Aktualisiert 2026-10-25