| """Exercise the published, weight-free Kev request path with the pinned tokenizer.""" |
|
|
| from __future__ import annotations |
|
|
| import copy |
| import json |
|
|
| import numpy as np |
| import pytest |
| from huggingface_hub import snapshot_download |
| from kev.api import SystemOneRequest, to_record |
| from kev.model import encode |
| from transformers import AutoTokenizer |
|
|
| from assets import LOCK_PATH |
| from preprocessing import Shape, prepare_runtime_inputs |
| from verify import fixtures |
|
|
|
|
| @pytest.fixture(scope="module") |
| def tokenizer(): |
| lock = json.loads(LOCK_PATH.read_text()) |
| source = snapshot_download( |
| lock["checkpoint"]["repo"], |
| revision=lock["checkpoint"]["revision"], |
| allow_patterns=["tokenizer.json", "tokenizer_config.json", "special_tokens_map.json", "added_tokens.json"], |
| ) |
| return AutoTokenizer.from_pretrained(source, local_files_only=True) |
|
|
|
|
| def unlabelled(request: dict) -> dict: |
| request = copy.deepcopy(request) |
| for question in request["questions"].values(): |
| question.pop("label", None) |
| question.pop("src", None) |
| return request |
|
|
|
|
| @pytest.mark.parametrize( |
| "sample", fixtures(), ids=["tetris-choice", "phishing-noul", "billing-choice", "delivery-score"] |
| ) |
| def test_unlabelled_runtime_uses_upstream_serving_encoding(tokenizer, sample): |
| sample = unlabelled(sample) |
| arrays, encoded, metadata, parsed = prepare_runtime_inputs(tokenizer, sample, Shape()) |
| record, expected_metadata = to_record(SystemOneRequest.model_validate(sample)) |
| direct = encode(tokenizer, record, max_state=8192, max_branch=16384, option_isolation=False) |
| assert encoded["ids"] == direct["ids"] |
| assert metadata == expected_metadata |
| assert parsed.questions |
| assert arrays["input_ids"].shape == (1, 128) |
| assert arrays["option_map"].shape == (1, 32, 128) |
| np.testing.assert_array_equal(arrays["input_ids"][0, : len(encoded["ids"])], encoded["ids"]) |
| assert arrays["decide_map"][0, 0, encoded["decide_idx"][0]] == 1 |
| for option, position in enumerate(encoded["opt_idx"][0]): |
| assert arrays["option_map"][0, option, position] == 1 |
|
|
|
|
| def test_runtime_rejects_multiple_questions(tokenizer): |
| request = unlabelled(fixtures()[0]) |
| request["questions"]["second"] = copy.deepcopy(request["questions"]["q"]) |
| with pytest.raises(ValueError, match="exactly one question"): |
| prepare_runtime_inputs(tokenizer, request, Shape()) |
|
|
|
|
| def test_runtime_rejects_overlong_question_branch(tokenizer): |
| request = unlabelled(fixtures()[0]) |
| request["questions"]["q"]["instructions"] = "Which placement? " * 200 |
| with pytest.raises(ValueError, match="branch"): |
| prepare_runtime_inputs(tokenizer, request, Shape()) |
|
|