| name | synapse-result-schemas |
| description | Explains result schema classes for Synapse plugin actions. Use when the user mentions "TrainResult", "InferenceResult", "ExportResult", "UploadResult", "WeightsResult", "MetricsResult", "result_model", "result schema", or needs help with action return type validation. |
Result Schemas
Synapse SDK provides standardized result schema classes for common action outputs. These provide type-safe, validated return types for actions.
Available Result Schemas
from synapse_sdk.plugins.schemas import (
TrainResult,
InferenceResult,
ExportResult,
UploadResult,
WeightsResult,
MetricsResult,
)
| Schema | Purpose |
|---|
TrainResult | Training output with weights and metrics |
InferenceResult | Inference predictions |
ExportResult | Data export output |
UploadResult | File upload results |
WeightsResult | Model weights only |
MetricsResult | Evaluation metrics only |
Quick Usage
With Class-Based Actions
from synapse_sdk.plugins.actions.train import BaseTrainAction
from synapse_sdk.plugins.schemas import TrainResult
class MyTrainAction(BaseTrainAction[TrainParams]):
result_model = TrainResult
def execute(self) -> TrainResult:
return TrainResult(
weights_path='/models/best.pt',
final_epoch=100,
train_metrics={'loss': 0.05},
val_metrics={'mAP50': 0.85},
)
With Function-Based Actions
from synapse_sdk.plugins.decorators import action
from synapse_sdk.plugins.schemas import InferenceResult
@action(name='infer', result=InferenceResult)
def infer(params: InferParams, ctx: RuntimeContext) -> InferenceResult:
return InferenceResult(
predictions=[{'class': 'dog', 'confidence': 0.95}],
processed_count=100,
)
Schema Details
TrainResult
class TrainResult(BaseModel):
weights_path: str
final_epoch: int
best_epoch: int | None
train_metrics: dict = {}
val_metrics: dict = {}
InferenceResult
class InferenceResult(BaseModel):
predictions: list[dict] = []
processed_count: int = 0
output_path: str | None
ExportResult
class ExportResult(BaseModel):
output_path: str
exported_count: int
format: str
file_size_bytes: int | None
UploadResult
class UploadResult(BaseModel):
uploaded_count: int
remote_path: str | None
status: str = 'completed'
WeightsResult
class WeightsResult(BaseModel):
weights_path: str
checkpoint_paths: list = []
format: str = 'pt'
MetricsResult
class MetricsResult(BaseModel):
metrics: dict[str, float]
category: str = 'default'
Detailed References