{"record":{"id":"c5a3989a064a1cec","repo":"sgl-project/sglang","slug":"action-endpoint-requires-samplingparams-or-actions","errorCode":null,"errorMessage":"Action endpoint requires SamplingParams or ActionSamplingParams, got {sampling_params_cls.__name__}","messagePattern":"Action endpoint requires SamplingParams or ActionSamplingParams, got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":400,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/entrypoints/action/protocol.py","lineNumber":278,"sourceCode":"    if pipeline_class_name:\n        from sglang.multimodal_gen.registry import get_pipeline_config_classes\n\n        config_classes = get_pipeline_config_classes(pipeline_class_name)\n        if config_classes is not None:\n            _, sampling_params_cls = config_classes\n            if issubclass(sampling_params_cls, (SamplingParams, ActionSamplingParams)):\n                return sampling_params_cls\n\n    from sglang.multimodal_gen.registry import get_model_info\n\n    model_info = get_model_info(\n        model_path,\n        backend=backend,\n        model_id=model_id,\n    )\n    sampling_params_cls = model_info.sampling_param_cls\n    if not issubclass(sampling_params_cls, (SamplingParams, ActionSamplingParams)):\n        raise ValueError(\n            \"Action endpoint requires SamplingParams or ActionSamplingParams, got \"\n            f\"{sampling_params_cls.__name__}\"\n        )\n    return sampling_params_cls\n\n\ndef _resolve_action_sampling_params_cls(\n    server_args: ServerArgs,\n) -> type[SamplingParams] | type[ActionSamplingParams]:\n    return _resolve_action_sampling_params_cls_cached(\n        server_args.model_path,\n        getattr(server_args, \"backend\", None),\n        getattr(server_args, \"model_id\", None),\n        getattr(server_args, \"pipeline_class_name\", None),\n    )\n\n\n@lru_cache(maxsize=32)","sourceCodeStart":260,"sourceCodeEnd":296,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/entrypoints/action/protocol.py#L260-L296","documentation":"The generic action endpoint resolves the model's sampling-params class from the scheduler and requires it to be a subclass of SamplingParams or ActionSamplingParams. If the served model registers an incompatible sampling_param_cls, the request is rejected before building params. This guards dispatch in build_action_sampling_params.","triggerScenarios":"Loading a model whose model_info.sampling_param_cls is neither SamplingParams nor ActionSamplingParams subclass (e.g. a video-only or text-only params class) and POSTing to /v1/actions.","commonSituations":"Pointing the action endpoint at a non-action model (video generation, standard LLM); model integration registering a custom params class that doesn't inherit from ActionSamplingParams; version skew after a refactor of the class hierarchy.","solutions":["Serve an action-capable model (e.g. Cosmos3) on this server instance for /v1/actions requests","If integrating a new model, make its sampling params class inherit ActionSamplingParams (or SamplingParams)","Check model_info registration/sampling_param_cls wiring for typos in the model plugin"],"exampleFix":"# before\nclass MyParams(BaseSamplingParams):  # not a subclass\n    ...\n# after\nclass MyParams(ActionSamplingParams):\n    ...","handlingStrategy":"fallback","validationCode":"# before using /v1/actions, confirm the served model supports actions, e.g.\n# check the model card / docs; only Cosmos3-class models implement the action endpoint","typeGuard":null,"tryCatchPattern":"try:\n    params = build_action_sampling_params(payload, obs, server_args, cls)\nexcept ValueError as e:\n    if 'Action endpoint requires' in str(e):\n        raise RuntimeError('model does not support /v1/actions; serve an action model') from e\n    raise","preventionTips":["Serve action models on a dedicated server instance","Inherit ActionSamplingParams when adding new model params classes"],"tags":["action-endpoint","sampling-params","model-registry","subclass-validation"],"backgroundTag":"incompatible-model-configuration","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}