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-trainer

OpenAI ↔ 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.yaml

Live runner deferred to v0.45.1.