Proyek
Uji penunjuk akar kosong dan kunci ber-escape, lalu tolak escape rusak, anggota hilang dan indeks tidak kanonis.
Telusuri JSON Pointer pada kamus dan daftar tanpa mengubahnya.
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 valueUji penunjuk akar kosong dan kunci ber-escape, lalu tolak escape rusak, anggota hilang dan indeks tidak kanonis.
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
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 memberi pengembang ruang kerja pemrograman AI Windows untuk menelusuri perilaku data terstruktur dalam proyek. Pencarian yang gagal lebih mudah didiagnosis jika jalur, bentuk data, dan nilai yang diharapkan semuanya ada dalam percakapan. Mulailah dengan data uji kecil yang dapat direproduksi dan minta model memeriksa implementasi yang benar-benar menggunakannya.
Pertimbangkan pencarian JSON Pointer sebagai satu permintaan. Berikan kunci objek yang berisi garis miring, indeks array, dan target yang tidak ada, lalu nyatakan hasil yang dimaksud untuk masing-masing. Mintalah perbaikan terarah jika kode saat ini menangani jalur itu secara keliru. Manfaatnya berasal dari menghubungkan data uji dengan implementasi dan pemanggilnya.
Tinjau usulan melampaui hasil yang berhasil. Jalur tidak valid, kunci yang tidak ada, dan penelusuran melalui skalar mungkin memerlukan penanganan berbeda dalam aplikasi. Baca perubahan dan jalankan pengujian yang relevan, dengan memeriksa kesalahan yang disampaikan kepada pengguna hasil sama telitinya dengan nilai hasil pencarian valid.
Koneksi model Anda dapat memakai endpoint kompatibel OpenAI atau Anthropic yang didukung, dengan kredensial sesuai kebutuhan. Jika Anda memilih model AI abliterated yang ditawarkan di sana, batasan penyedia tetap berlaku. Batas konteks dan alat berbeda menurut model dan server, jadi simpan data uji kecil yang memungkinkan penilaian langsung atas penalaran dan kode usulan.
Berikan data uji dan hasil yang diharapkan secara terpisah untuk keduanya. Tanyakan di mana penguraian berakhir dan penelusuran dimulai dalam kode saat ini, lalu tinjau bagaimana setiap kegagalan mencapai pemanggil. Menggabungkannya menjadi satu hasil kosong dapat menyembunyikan kesalahan masukan.
Tipe data wadahnya penting. Sertakan data uji dengan kunci objek yang tampak numerik dan data uji array terpisah. Tinjau cabang penanganan jalur untuk masing-masing alih-alih menganggap teks identik selalu menamai jenis lokasi yang sama.
Itu mengisolasi bentuk data penyebab masalah dan mempermudah verifikasi hasil yang diharapkan. Hapus bidang tidak terkait dan nilai sensitif sambil mempertahankan jalur yang gagal, lalu konfirmasikan perbaikan terhadap data proyek yang mewakili setelahnya.
Kontrak merupakan milik aplikasi Anda. Model berbeda mungkin menyarankan konvensi kesalahan lain, tetapi itu tidak memberikan izin mengubah perilaku. Tinjau pula tujuan alat: server model lokal tidak menjadikan setiap alat terhubung bersifat lokal.
PointerMallow · Diperbarui 2026-10-25