Plugin System (v0.45.0)
5 parts, +169 tests. Public plugin / hook surface.
BasePlugin Protocol
python
from soup_cli.plugins import BasePlugin, PluginSpec
class MyTrainerPlugin(BasePlugin):
spec = PluginSpec(name="my-trainer", version="0.1.0")
def on_train_begin(self, ctx): ...
def on_step_end(self, ctx): ...bash
soup plugins list
soup plugins install ./my_plugin
soup plugins enable my-trainer
soup plugins disable my-trainerOpenAI ↔ Anthropic Messages converter
anthropic_messages.py converts between OpenAI and Anthropic Messages schemas — useful for trace-to-preference + serve.
Server-side tools allowlist
server_tools.py ships a server-side tools allowlist + WebSearchConfig for the inference server.
N-gram speculative decoding
ngram_spec.py schema for n-gram speculative decoding (live runner v0.45.1).
External integrations catalog
15-entry registry of known external integrations (W&B, MLflow, ClearML, Comet, Neptune, etc.).
Advanced trainer-plugin allowlist
Closed allowlist for advanced trainer plugins.
Data Recipe DAG
recipe_dag.py parses a YAML DAG describing data preprocessing steps + dependencies. Topological sort guarantees deterministic execution order.
bash
soup data recipe validate recipe.yamlLive runner deferred to v0.45.1.