Проект
Проверьте пустой указатель корня и экранированные ключи, отклоняя неверные escape-последовательности, отсутствующие элементы и неканонические индексы.
Косая черта может задавать путь или входить в имя ключа. PointerMallow объединяет структурированные примеры и код указателей в обсуждении Windows-проекта с ИИ, где результат поиска можно проверить до принятия правки.
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-последовательности, отсутствующие элементы и неканонические индексы.
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
Базовый URL, учётные данные и доступный сервер.
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