Unit 10.04: Deciding when the model should refuse
Some refusal conditions are computable before the model is called.
Two cheap checks, two policy decisions
Region size, blur, unobservable properties, counting limits, and identity.
The code lists the conditions with the reason for each.
REFUSE_WHEN = [
("the region of interest is smaller than ~20px", "cannot resolve it"),
("the image is blurred beyond a threshold", "measurable before asking"),
("the question asks about something not visible", "unanswerable from pixels"),
("the count exceeds ~5 objects", "known weak point"),
("the answer would identify a person", "policy, not capability"),
]
print(f"{'refuse when':48} why")
for condition, why in REFUSE_WHEN:
print(f"{condition:48} {why}")
print("""
The first two are computable before the model is called: measure the region
size and the blur, and refuse without spending anything.
The last is different in kind -- it is a policy decision, and it holds
regardless of how well the model could answer.
""")
Region size and blur are measurable before spending anything on a model call. If the area of interest is twenty pixels across, no model can resolve it, and the refusal costs a subtraction.
The last condition is different in kind. Refusing to identify a person is a policy decision that holds regardless of how well the model could do it, and it belongs in the routing rather than in the prompt.
The mistake this prevents
The mistake is implementing all refusals as prompt instructions. The computable ones belong in code, where they are free and certain, and the policy one belongs in routing, where it cannot be argued with.
Takeaway
Compute the refusals you can before calling the model, and enforce policy refusals in routing. Only genuine judgement calls belong in the prompt.
