v0.5.1
Adds registration for controls defined outside the toolkit, scopes TRL LoRA adapters to the decoder stack, and merges the FewShot example block into the leading system message. This is a patch release without any new methods.
Changes
register_method(category, name, control_cls, args_cls)(algorithms/core/registry.py) registers a control class defined outside the toolkit tree under"<category>_control/<name>", so out-of-tree controls can be saved to and loaded from a.spipebundle. Registration is process-global, so the defining package must be imported before a bundle naming its keys is loadedto_spipe(freeze=True)on an unsteered pipeline no longer loads the model when every enabled control is recipe-frozen (FACTSsteer access, no fits, no exported state, as for a prompt-only pipeline); a blocking control is named in the error- TRL wrappers: a LoRA
target_modulessuffix list is scoped at steer time to the resolved decoder stack through the newlora_target_pattern()(core/internals/model_layout.py), so an adapter no longer lands on the vision tower of a composite multimodal wrapper.target_moduleswidens tolist[str] | str; a string is passed to PEFT as a regex unchanged FewShot: newsystem_mode("append","prepend","insert") andseparatorarguments control how the rendered example block combines with an existing leading system message.appendandprependyield exactly one system message, which some chat templates (Qwen3) requirePhasedDecodingArgsand the controls guide note that a plan whose first phase isfixedmust splice the reasoning close tag under a template that opens the reasoning block in its generation prompt- Dependencies:
vllm-hook-pluginspoints back at IBM/vLLM-Hook@steerability-challenge in thevllmextra anddevgroup, with the matchinguv.lockupdate - Docs: state and output control descriptions on the landing page corrected; README contributing section trimmed to link the steering method tutorial and steering pipelines concept page
Breaking changes
FewShotdefaults tosystem_mode="append": on chat input with an existing leading system message, the example block is merged into it rather than inserted as a second system message. The previous behavior is available assystem_mode="insert". A.spipewritten before this change loads with the new default; one written by 0.5.1 recordssystem_modeandseparatorand does not load on an older toolkit
What's Changed
- Register external controls, fix LoRA targets, and merge the FewShot example block by @emiehling in #31
Full Changelog: v0.5.0...v0.5.1