PPointerMallow
AI-werkruimte voor code

Navigatie met JSON Pointer

Volg een JSON Pointer door woordenboeken en lijsten zonder ze te wijzigen.

● ● ●PointerMallow●
Werkprocessen · Navigatie met JSON Pointer ×
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 value
✳Volg een JSON Pointer door woordenboeken en lijsten zonder ze te wijzigen.
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
01

Project

Test de lege hoofdverwijzing en ge-escapete sleutels en weiger foutieve escapes, ontbrekende leden en niet-canonieke indices.

02

Controleer vóór het toepassen

Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.

03

Modellen

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.

Werkprocessen

Navigatie met JSON Pointer

Werkprocessen ↗
Werkprocessen
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 value
AI-werkruimte voor code

Volg een opzoekactie van het invoerpad tot de gebruikte waarde

PointerMallow 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.

Gedrag voor opzoeken in gestructureerde gegevens specificeren

Hoe onderscheid ik een onjuist gevormd pad van een ontbrekende waarde?

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.

Moet een numerieke objectsleutel als array-index worden behandeld?

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.

Waarom een klein testgeval gebruiken in plaats van een volledige payload?

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.

Kan modelselectie het opzoekcontract veranderen?

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.

Download voor Windows ↗

PointerMallow · Bijgewerkt 2026-10-25