Parameter Validation
no_llm provides a robust parameter validation system that ensures model parameters are used correctly and safely.
Validation Modes
no_llm supports three validation modes for handling invalid parameter values:
Mode | Description |
---|---|
ERROR |
Raises an exception when validation fails |
WARN |
Logs a warning and keeps the original parameter value |
CLAMP |
Clamps values to the nearest valid value within range |
from no_llm.settings import settings as no_llm_settings
from no_llm.settings import ValidationMode
# Set validation mode
no_llm_settings.validation_mode = ValidationMode.CLAMP
# Now out-of-range values will be clamped instead of raising errors
parameters.validate_parameters(temperature=2.5) # Will be clamped to 2.0
Types of Validation
Range Validation
Ensures numeric parameters stay within defined bounds:
# Will raise InvalidRangeError in ERROR mode
# Will clamp to 2.0 in CLAMP mode
parameters.validate_parameters(temperature=2.5)
# Will raise InvalidRangeError in ERROR mode
# Will clamp to 0.0 in CLAMP mode
parameters.validate_parameters(temperature=-0.5)
Enum Validation
Ensures parameters only take predefined values:
# Will raise InvalidEnumError
parameters.validate_parameters(
reasoning_effort="very_high" # Only low/medium/high allowed
)
Capability-Based Validation
Some parameters require specific model capabilities:
# Check if parameters are valid for model capabilities
validated_params = parameters.validate_parameters(
capabilities={ModelCapability.STREAMING},
include_reasoning=True # Requires REASONING capability
)
Handling Unsupported Parameters
When validating parameters, you can control how unsupported parameters are handled:
# Silently drop unsupported parameters (default)
validated_params = parameters.validate_parameters(
capabilities={ModelCapability.STREAMING},
include_reasoning=True, # Will be dropped if REASONING not supported
drop_unsupported=True
)
# Raise error for unsupported parameters
try:
validated_params = parameters.validate_parameters(
capabilities={ModelCapability.STREAMING},
include_reasoning=True,
drop_unsupported=False # Will raise UnsupportedParameterError
)
except UnsupportedParameterError as e:
print(f"Parameter {e.param_name} requires capability: {e.required_capability}")
Validation Best Practices
- Use
ERROR
mode during development to catch issues early - Use
CLAMP
mode in production for better user experience - Always check model capabilities before setting parameters
- Handle unsupported parameters explicitly in critical code paths