40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
"""Focused contracts for Hermes's local inference admission proxy."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
import yaml
|
|
|
|
|
|
HERMES = Path(__file__).parents[2] / "services/hermes"
|
|
|
|
|
|
def _model_gate_namespace() -> dict:
|
|
document = yaml.safe_load((HERMES / "model-gate-configmap.yaml").read_text())
|
|
namespace = {"__name__": "hermes_model_gate_test"}
|
|
exec(compile(document["data"]["model_gate.py"], "model_gate.py", "exec"), namespace)
|
|
return namespace
|
|
|
|
|
|
def test_model_gate_clamps_hosted_only_reasoning_efforts():
|
|
normalize = _model_gate_namespace()["_normalize_reasoning"]
|
|
|
|
top_level = json.loads(normalize(b'{"reasoning_effort":"xhigh"}'))
|
|
string_reasoning = json.loads(normalize(b'{"reasoning":"max"}'))
|
|
nested = json.loads(normalize(b'{"reasoning":{"effort":"xhigh"}}'))
|
|
|
|
assert top_level["reasoning_effort"] == "high"
|
|
assert string_reasoning["reasoning"] == "high"
|
|
assert nested["reasoning"]["effort"] == "high"
|
|
|
|
|
|
def test_model_gate_preserves_supported_and_non_json_requests():
|
|
normalize = _model_gate_namespace()["_normalize_reasoning"]
|
|
supported = b'{"reasoning_effort":"medium","messages":[]}'
|
|
non_json = b"streamed-body"
|
|
|
|
assert normalize(supported) == supported
|
|
assert normalize(non_json) == non_json
|