AgentSkillsCN

synapse-specialized-actions

讲解适用于特定工作流的 Synapse 专用动作类。当用户提到“BaseTrainAction”、“BaseExportAction”、“BaseUploadAction”、“BaseInferenceAction”、“BaseDeploymentAction”、“AddTaskDataAction”、“训练动作”、“导出动作”、“上传动作”、“推理动作”、“部署动作”、“预标注”、“添加任务数据”、“自动日志记录”、“获取数据集”、“创建模型”,或需要针对特定工作流提供动作开发帮助时,可选用此技能。

SKILL.md
--- frontmatter
name: synapse-specialized-actions
description: Explains specialized Synapse action classes for specific workflows. Use when the user mentions "BaseTrainAction", "BaseExportAction", "BaseUploadAction", "BaseInferenceAction", "BaseDeploymentAction", "AddTaskDataAction", "train action", "export action", "upload action", "inference action", "deployment action", "pre-annotation", "add_task_data", "autolog", "get_dataset", "create_model", or needs workflow-specific action development help.

Specialized Action Classes

Synapse SDK provides specialized base classes for common ML workflows. Each extends BaseAction with workflow-specific helper methods and default settings.

Available Specialized Actions

ClassCategoryPurpose
BaseTrainActionNEURAL_NETTraining models
BaseExportActionEXPORTExporting data
BaseUploadActionUPLOADUploading files
BaseInferenceActionNEURAL_NETRunning inference
BaseDeploymentAction-Ray Serve deployment
AddTaskDataActionPRE_ANNOTATIONPre-annotation workflows

Quick Comparison

python
# Training - autolog, get_dataset, create_model
class TrainAction(BaseTrainAction[TrainParams]):
    def execute(self) -> dict:
        self.autolog('ultralytics')  # Auto-log metrics
        dataset = self.get_dataset()
        # ... train ...
        return self.create_model('./model.pt')

# Export - get_filtered_results
class ExportAction(BaseExportAction[ExportParams]):
    def get_filtered_results(self, filters: dict) -> tuple[Any, int]:
        return self.client.get_assignments(filters)

# Upload - step-based workflow required
class UploadAction(BaseUploadAction[UploadParams]):
    def setup_steps(self, registry: StepRegistry[UploadContext]) -> None:
        registry.register(InitStep())
        registry.register(UploadFilesStep())

# Inference - download_model, load_model, infer
class InferAction(BaseInferenceAction[InferParams]):
    def execute(self) -> dict:
        model = self.load_model(self.params.model_id)
        return {'predictions': self.infer(model, self.params.inputs)}

# Pre-annotation - convert_data_from_file, convert_data_from_inference
class PreAnnotateAction(AddTaskDataAction):
    def convert_data_from_file(self, primary_url, ...) -> dict:
        return {'annotations': [...]}

Execution Modes

All specialized actions (except Deployment) support two modes:

  1. Simple Execute: Override execute() for straightforward workflows
  2. Step-based: Override setup_steps() for complex multi-step workflows with rollback
python
# Simple mode
class SimpleTrainAction(BaseTrainAction[Params]):
    def execute(self) -> dict:
        return {'weights_path': '/model.pt'}

# Step-based mode
class StepTrainAction(BaseTrainAction[Params]):
    def setup_steps(self, registry: StepRegistry[TrainContext]) -> None:
        registry.register(LoadDatasetStep())
        registry.register(TrainStep())
        registry.register(UploadModelStep())

Detailed References