LocalVlmSettings
Settings for LocalVlm. Values fall back through three levels: document → SDK → built-in default. Writes target the document only when set on a document’s settings, otherwise the SDK globally when set on SdkSettings.
Tags: Vision, Advanced
from nutrient_sdk import LocalVlmSettingsConstruction
LocalVlmSettings is accessed through a Document instance for per-document overrides, or via SdkSettings for SDK-wide defaults.
# Per-document overridewith Document.open("input.pdf") as doc: settings = doc.settings.local_vlm_settings settings.some_field = new_value # mutate fields directly
# SDK-wide default (applies to all documents)SdkSettings.local_vlm_settings.some_field = new_valueSettings are configured by writing to fields on the returned object. The settings property itself cannot be reassigned — doc.settings.local_vlm_settings = other_settings is rejected.
Properties
batch_size
@propertydef batch_size(self) -> int
@batch_size.setterdef batch_size(self, value: int) -> NoneNumber of zone images to include per VLM call.
Type: int
Default: 8
classification_strategy
@propertydef classification_strategy(self) -> VlmClassificationStrategy
@classification_strategy.setterdef classification_strategy(self, value: VlmClassificationStrategy) -> NoneStrategy for how zones are sent to the VLM for classification.
Type: VlmClassificationStrategy
Default: VlmClassificationStrategy.MultiZone
context_tokens
@propertydef context_tokens(self) -> int
@context_tokens.setterdef context_tokens(self, value: int) -> NoneContext size in tokens; 0 uses the engine default (4096).
Type: int
Default: 8192
gpu_layers
@propertydef gpu_layers(self) -> int
@gpu_layers.setterdef gpu_layers(self, value: int) -> NoneModel layers to offload to GPU; 0 is pure CPU. GPU backends are runtime-provisioned (NAT-519), never linked.
Type: int
Default: 0
image_min_tokens
@propertydef image_min_tokens(self) -> int
@image_min_tokens.setterdef image_min_tokens(self, value: int) -> NoneMinimum image tokens for dynamic-resolution vision models; 0 uses the model default. Qwen-VL grounding tasks want at least 1024.
Type: int
Default: 1024
max_concurrency
@propertydef max_concurrency(self) -> int
@max_concurrency.setterdef max_concurrency(self, value: int) -> NoneMaximum number of concurrent VLM calls. Sizes the in-process context pool: the model weights are shared, each extra context costs only its KV/compute buffers and runs one more call in parallel (callers beyond the pool block for a free context).
Type: int
Default: 1
max_tokens
@propertydef max_tokens(self) -> int
@max_tokens.setterdef max_tokens(self, value: int) -> NoneMaximum tokens in response (-1 = engine default)
Type: int
Default: -1
mmproj_path
@propertydef mmproj_path(self) -> str
@mmproj_path.setterdef mmproj_path(self, value: str) -> NoneFilesystem path to the GGUF multimodal projector (mmproj) matching the model.
Type: str
Default: string.Empty
model_path
@propertydef model_path(self) -> str
@model_path.setterdef model_path(self, value: str) -> NoneFilesystem path to the GGUF text model (e.g. a Qwen VLM). Model provisioning through the resource downloader is a follow-up; until then the path must point at an existing file.
Type: str
Default: string.Empty
send_full_page_reference
@propertydef send_full_page_reference(self) -> bool
@send_full_page_reference.setterdef send_full_page_reference(self, value: bool) -> NoneWhether to send the full page image as reference context alongside cropped zones.
Type: bool
Default: false
system_prompt
@propertydef system_prompt(self) -> str
@system_prompt.setterdef system_prompt(self, value: str) -> NoneOptional custom system prompt for zone classification. When empty, the module uses a default prompt based on the ClassificationStrategy.
Type: str
Default: string.Empty
temperature
@propertydef temperature(self) -> float
@temperature.setterdef temperature(self, value: float) -> NoneTemperature for response generation (0.0 = deterministic, 1.0 = creative). Defaults to 0.0 because zone classification and verbatim text extraction are deterministic tasks — randomness only adds run-to-run noise.
Type: float
Default: 0.0
threads
@propertydef threads(self) -> int
@threads.setterdef threads(self, value: int) -> NoneInference threads; 0 uses the engine default.
Type: int
Default: 0