プロジェクト
空のルートポインターとエスケープしたキーを試し、不正なエスケープ、存在しない要素、非正規の配列インデックスを拒否します。
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空のルートポインターとエスケープしたキーを試し、不正なエスケープ、存在しない要素、非正規の配列インデックスを拒否します。
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
OpenAI互換またはAnthropicのエンドポイントを、ベース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用AIコーディング作業環境を開発者に提供します。パス、データの形、期待する値がそろって会話にあれば、検索失敗の診断が容易になります。小さな再現可能なテストデータから始め、実際にそれを利用する実装を調べるようモデルに依頼してください。
一つの依頼例としてJSON Pointerによる検索が考えられます。スラッシュを含むオブジェクトキー、配列の添字、存在しない対象を示し、それぞれに意図する結果を指定します。現在のコードがパスを誤って扱う場合は、対象を絞った修正を求めてください。テストデータを自分の実装と呼び出し元に結び付けることに価値があります。
成功結果だけでなく提案全体をレビューします。無効なパス、存在しないキー、スカラーを通る探索は、アプリケーションで別々の扱いが必要かもしれません。変更を読み、関連するテストを実行して、有効な検索の戻り値と同じくらい注意深く利用側に伝わるエラーを確認してください。
モデル接続には対応するOpenAI互換またはAnthropicのエンドポイントを使い、必要なら認証情報を指定できます。そこで提供される拒否抑制を除去したAIモデルを選ぶ場合も、プロバイダーの制約は適用されます。コンテキストの上限とツールはモデルとサーバーによって異なるため、推論と提案コードを直接評価できる小さなテストデータを保持してください。
それぞれに別のテストデータと期待結果を示します。現在のコードで解析がどこで終わり探索がどこで始まるか尋ね、各失敗が呼び出し元へどう届くかをレビューしてください。一つの空の結果にまとめると入力エラーを隠す可能性があります。
格納先のデータ型が重要です。数値に見えるオブジェクトキーのテストデータと、別の配列のテストデータを含めます。同じ文字列なら同じ種類の場所を指すと考えず、それぞれのパス処理の分岐をレビューしてください。
問題を引き起こすデータ形状を分離でき、期待結果を確認しやすくなるためです。失敗するパスを保ちながら無関係なフィールドや機密値を除き、その後、代表的なプロジェクトデータで修正を確認してください。
仕様はアプリケーションに属します。別のモデルが異なるエラー規則を提案しても、動作変更が許可されたことにはなりません。ツールの接続先もレビューしてください。ローカルのモデルサーバーを使っても、すべての接続ツールがローカルになるわけではありません。
PointerMallow · 更新日 2026-10-25