Extraction limitée des blocs à accents graves
Extrayez les blocs à trois accents graves en colonne zéro d’un texte de 4096 caractères au plus avec une étiquette ASCII facultative.
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
Modèles
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
Projet
Testez les blocs vides et les sauts de ligne normalisés, rejetez les blocs non fermés et laissez les autres formes Markdown sans interprétation ni exécution.
Vérifiez avant d’appliquer
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
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
Séparez le contrat d’extraction de l’exécution
FenceLilt propose un espace de programmation avec IA pour Windows aux développeurs créant de petites fonctions de traitement de texte dont les règles d’entrée sont volontairement limitées. Ouvrez le projet et décrivez ce que la fonction doit reconnaître, laisser intact et signaler en cas d’entrée incomplète. Le modèle connecté peut alors examiner le code et proposer une modification respectant ces limites.
L’extraction de blocs de code délimités fournit une tâche concrète. Utilisez les règles de marqueurs et d’étiquettes de langage de l’exemple existant pour discuter des formes acceptées, notamment des blocs vides et des sauts de ligne. Demandez à l’assistant d’expliquer le traitement d’un bloc non fermé par l’analyseur proposé avant d’examiner son implémentation. Le contenu extrait est du texte ; choisir d’en exécuter quoi que ce soit serait une autre fonctionnalité avec d’autres exigences.
Après examen du correctif, exécutez des jeux d’essai à sortie exacte dans votre projet et incluez des formes non prises en charge qui ne doivent pas être réinterprétées accidentellement. Examinez la limite de taille et la gestion des erreurs avec les extractions réussies. Pour l’aide de l’IA, configurez un point de terminaison compatible OpenAI ou Anthropic pris en charge avec des identifiants si nécessaire. Un modèle sans restrictions peut être sélectionné si le service en fournit un ; capacité de contexte et outils disponibles dépendent du serveur. Une session utile se termine par une modification dont vous pouvez décrire clairement le langage accepté et le comportement en cas d’échec.
Vérifier une fonction d’extraction limitée
Extraire un bloc de code signifie-t-il exécuter son contenu ?
Non. Cette tâche renvoie du texte selon un contrat de marqueurs défini. Séparez toute décision d’exécution ultérieure de l’extraction et examinez le code en aval pour que le traitement du contenu renvoyé n’appelle pas inopinément des commandes ou n’évalue pas du code source.
Cette routine doit-elle accepter tous les styles de blocs Markdown ?
L’exemple existant prend volontairement en charge une forme limitée. Listez les marqueurs et étiquettes nécessaires à l’application, puis vérifiez-les explicitement. Étendre le traitement à d’autres formes Markdown modifie les exigences ; cela ne découle pas automatiquement d’un nettoyage de l’analyseur.
Comment traiter un bloc non fermé ?
Précisez si l’entrée incomplète est rejetée avant d’implémenter la modification. La tâche illustrée la rejette. Incluez un jeu d’essai atteignant la fin avec un bloc ouvert et vérifiez que l’appelant présente correctement ce résultat.
Pourquoi conserver des exemples non pris en charge dans les tests ?
Ils montrent les limites de la fonction. Une expression suggérée par le modèle peut reconnaître accidentellement d’autres formes et modifier le comportement sans échec évident. Vérifiez ensemble le texte accepté et le texte laissé intact pour préserver la frontière voulue.
FenceLilt · Mis à jour 2026-10-25