Progetto
Prova il puntatore radice vuoto e chiavi con escape, rifiutando escape errati, membri assenti e indici non canonici.
Risolvi un JSON Pointer in dizionari e liste senza modificarli.
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 valueProva il puntatore radice vuoto e chiavi con escape, rifiutando escape errati, membri assenti e indici non canonici.
Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
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 offre agli sviluppatori un ambiente di programmazione con IA per Windows per seguire il comportamento dei dati strutturati in un progetto. Una ricerca fallita è più facile da diagnosticare quando percorso, struttura dei dati e valore atteso sono tutti presenti nella conversazione. Parti da un piccolo caso riproducibile e chiedi al modello di esaminare l’implementazione che lo usa effettivamente.
Considera come richiesta una ricerca JSON Pointer. Fornisci una chiave di oggetto contenente una barra, un indice di array e una destinazione mancante, poi indica l’esito previsto per ciascuno. Chiedi una correzione mirata se il codice attuale tratta quei percorsi in modo errato. Il valore deriva dal collegare i casi di prova all’implementazione e ai suoi chiamanti.
Esamina la proposta oltre al risultato riuscito. Un percorso non valido, una chiave mancante e l’attraversamento di uno scalare possono richiedere trattamenti distinti nell’applicazione. Leggi le modifiche ed esegui i test pertinenti, verificando l’errore mostrato all’utilizzatore con la stessa cura del valore restituito per una ricerca valida.
La connessione al modello può usare un endpoint supportato compatibile con OpenAI o di Anthropic, con credenziali quando richieste. Se scegli un modello IA abliterato offerto lì, si applicano comunque le restrizioni del fornitore. Limiti di contesto e strumenti variano secondo modello e server: conserva piccoli casi di prova che permettano di valutare direttamente ragionamento e codice proposto.
Fornisci casi separati ed esiti attesi per entrambi. Chiedi dove termina il parsing e inizia l’attraversamento nel codice attuale, poi esamina come ogni errore raggiunge il chiamante. Riunirli in un unico risultato vuoto può nascondere un errore di input.
Conta il tipo di dati contenitore. Includi un caso con una chiave di oggetto dall’aspetto numerico e un caso separato con un array. Esamina il ramo di gestione del percorso per ciascuno, senza presumere che un testo identico indichi sempre lo stesso tipo di posizione.
Isola la struttura dei dati responsabile del problema e rende più facile verificare il risultato atteso. Rimuovi campi estranei e valori sensibili preservando il percorso che fallisce, poi conferma la correzione su dati rappresentativi del progetto.
Il contratto appartiene all’applicazione. Un modello diverso può suggerire un’altra convenzione di errore, ma ciò non autorizza a cambiare comportamento. Esamina anche le destinazioni degli strumenti: un server di modelli locale non rende locali tutti gli strumenti collegati.
PointerMallow · Aggiornato 2026-10-25