Project
Test de lege hoofdverwijzing en ge-escapete sleutels en weiger foutieve escapes, ontbrekende leden en niet-canonieke indices.
Volg een JSON Pointer door woordenboeken en lijsten zonder ze te wijzigen.
import re
def pointer_get(root, pointer):
if not isinstance(pointer, str): raise ValueError("pointer text")
if pointer == "": return root
if not pointer.startswith("/"): raise ValueError("root slash")
value = root
for raw in pointer[1:].split("/"):
if re.search(r"~(?![01])", raw): raise ValueError("escape")
key = raw.replace("~1", "/").replace("~0", "~")
if isinstance(value, dict): value = value[key]
elif isinstance(value, list):
if not re.fullmatch(r"0|[1-9][0-9]*", key):
raise ValueError("array index")
if len(key) > len(str(len(value))): raise IndexError(key)
value = value[int(key)]
else: raise ValueError("not a container")
return valueTest de lege hoofdverwijzing en ge-escapete sleutels en weiger foutieve escapes, ontbrekende leden en niet-canonieke indices.
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
import re
def pointer_get(root, pointer):
if not isinstance(pointer, str): raise ValueError("pointer text")
if pointer == "": return root
if not pointer.startswith("/"): raise ValueError("root slash")
value = root
for raw in pointer[1:].split("/"):
if re.search(r"~(?![01])", raw): raise ValueError("escape")
key = raw.replace("~1", "/").replace("~0", "~")
if isinstance(value, dict): value = value[key]
elif isinstance(value, list):
if not re.fullmatch(r"0|[1-9][0-9]*", key):
raise ValueError("array index")
if len(key) > len(str(len(value))): raise IndexError(key)
value = value[int(key)]
else: raise ValueError("not a container")
return valuePointerMallow biedt ontwikkelaars een AI-programmeeromgeving voor Windows om gedrag van gestructureerde gegevens door een project te volgen. Een mislukte opzoekactie is gemakkelijker te diagnosticeren als pad, gegevensstructuur en verwachte waarde allemaal in het gesprek staan. Begin met een klein reproduceerbaar testgeval en vraag het model de implementatie te inspecteren die het werkelijk verwerkt.
Neem bijvoorbeeld een JSON Pointer-opzoekactie. Geef een objectsleutel met een slash, een array-index en een ontbrekend doel en vermeld voor elk de bedoelde uitkomst. Vraag om een gerichte correctie als de huidige code die paden verkeerd behandelt. De waarde ligt in het verbinden van de testgevallen met uw implementatie en de aanroepers.
Beoordeel het voorstel verder dan alleen het geslaagde resultaat. Een ongeldig pad, ontbrekende sleutel en navigatie door een scalaire waarde kunnen verschillende behandeling vereisen in uw toepassing. Lees de wijzigingen en voer de relevante tests uit; controleer de fout die de afnemer ontvangt even zorgvuldig als de waarde bij een geldige opzoekactie.
Uw modelverbinding kan een ondersteund OpenAI-compatibel of Anthropic-endpoint gebruiken, met toegangsgegevens waar vereist. Als u een daar aangeboden abliterated AI-model kiest, blijven providerbeperkingen gelden. Contextlimieten en tools verschillen per model en server, dus behoud kleine testgevallen waarmee u de redenering en voorgestelde code direct kunt beoordelen.
Geef afzonderlijke testgevallen en verwachte uitkomsten voor beide. Vraag waar het parsen eindigt en de navigatie begint in de huidige code en beoordeel hoe elke fout de aanroeper bereikt. Beide reduceren tot één leeg resultaat kan een invoerfout verbergen.
Het type van de omvattende gegevens is belangrijk. Geef een testgeval met een numeriek ogende objectsleutel en een apart arraytestgeval. Beoordeel voor elk de tak die het pad behandelt in plaats van aan te nemen dat dezelfde tekst altijd hetzelfde soort locatie benoemt.
Het isoleert de gegevensstructuur die het probleem veroorzaakt en maakt het verwachte resultaat gemakkelijker controleerbaar. Verwijder ongerelateerde velden en gevoelige waarden met behoud van het falende pad en bevestig de correctie daarna met representatieve projectgegevens.
Het contract hoort bij uw toepassing. Een ander model kan een andere foutconventie voorstellen, maar dat machtigt geen gedragswijziging. Beoordeel ook toolbestemmingen: een lokale modelserver maakt niet elke aangesloten tool lokaal.
PointerMallow · Bijgewerkt 2026-10-25