Проєкт
Перевірте порожній кореневий вказівник та екрановані ключі, відхиляючи хибні escape-послідовності, відсутні елементи й неканонічні індекси.
Розв'яжіть 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Перевірте порожній кореневий вказівник та екрановані ключі, відхиляючи хибні escape-послідовності, відсутні елементи й неканонічні індекси.
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
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 надає розробникам середовище програмування з ШІ для Windows, де можна простежувати поведінку структурованих даних у проєкті. Невдалий пошук легше діагностувати, коли розмова містить шлях, форму даних та очікуване значення. Почніть із невеликого відтворюваного прикладу й попросіть модель вивчити реалізацію, яка фактично його споживає.
Розгляньте пошук за JSON Pointer як один із запитів. Надайте ключ об’єкта зі скісною рискою, індекс масиву й відсутню ціль, а потім визначте очікуваний результат кожного. Попросіть точкове виправлення, якщо поточний код неправильно обробляє ці шляхи. Цінність полягає у зв’язку тестових даних із вашою реалізацією та кодом виклику.
Перевіряйте пропозицію не лише за успішним результатом. Некоректний шлях, відсутній ключ і прохід через скаляр можуть потребувати різної обробки у вашому застосунку. Прочитайте зміни й виконайте відповідні тести, перевіряючи помилку, яку отримує споживач, так само уважно, як значення для коректного пошуку.
Підключення моделі може використовувати підтримувану OpenAI-сумісну кінцеву точку або кінцеву точку Anthropic з потрібними обліковими даними. Якщо ви вибираєте запропоновану там аблітеровану модель ШІ, обмеження постачальника все одно діють. Межі контексту й інструменти різняться залежно від моделі та сервера, тому зберігайте невеликі приклади, що дозволяють безпосередньо оцінювати міркування й код.
Надайте окремі приклади та очікувані результати для обох. Запитайте, де в поточному коді закінчується розбір і починається обхід, а потім перевірте, як кожна помилка доходить до коду виклику. Зведення їх до одного порожнього результату може приховати помилку введення.
Важливий тип контейнера. Додайте приклад ключа об’єкта, схожого на число, й окремий приклад масиву. Перевірте гілку обробки шляху для кожного, не припускаючи, що однаковий текст завжди називає той самий тип місця.
Він ізолює форму даних, що спричиняє проблему, і полегшує перевірку очікуваного результату. Вилучіть непов’язані поля й конфіденційні значення, зберігши проблемний шлях, а після цього підтвердьте виправлення на характерних даних проєкту.
Контракт належить вашому застосунку. Інша модель може запропонувати іншу домовленість про помилки, але це не дозволяє змінювати поведінку. Перевіряйте також місця призначення інструментів: локальний сервер моделі не робить усі підключені інструменти локальними.
PointerMallow · Оновлено 2026-10-25