Adapter API(更新中)

Adapter API(更新中)

概述

Adapter 層是 PETsARD 架構中的關鍵組件,負責將各個模組包裝成統一的執行介面,供 Executor 調用。

Adapter 整體架構

classDiagram

    class BaseAdapter {
        <<抽象類別>>
        +config: dict
        +name: str
        +run()
    }

    class LoaderAdapter {
        +loader: Loader
        +benchmarker: Benchmarker
        +run() tuple[DataFrame, Schema]
    }

    class MetadaterAdapter {
        +metadater: SchemaMetadater
        +run() Schema
    }

    class DperAdapter {
        +dper: Dper
        +run() DataFrame
    }

    class SynthesizerAdapter {
        +synthesizer: Synthesizer
        +run() DataFrame
    }

    class EvaluatorAdapter {
        +evaluator: Evaluator
        +run() dict
    }

    class VisualizerAdapter {
        +visualizer: Visualizer
        +run() None
    }

    class DatalabAdapter {
        +datalab: Datalab
        +run() dict
    }

    BaseAdapter <|-- LoaderAdapter
    BaseAdapter <|-- MetadaterAdapter
    BaseAdapter <|-- DperAdapter
    BaseAdapter <|-- SynthesizerAdapter
    BaseAdapter <|-- EvaluatorAdapter
    BaseAdapter <|-- VisualizerAdapter
    BaseAdapter <|-- DatalabAdapter

    %% 樣式定義
    style BaseAdapter fill:#F0F0F0
    style LoaderAdapter fill:#E6E6FA
    style MetadaterAdapter fill:#E6E6FA
    style DperAdapter fill:#E6E6FA
    style SynthesizerAdapter fill:#E6E6FA
    style EvaluatorAdapter fill:#E6E6FA
    style VisualizerAdapter fill:#E6E6FA
    style DatalabAdapter fill:#E6E6FA

圖例說明:

  • 灰色框:抽象基底類別
  • 淺紫框:具體 Adapter 實作類別
  • <|--:繼承關係 (inheritance)

架構

所有 Adapter 類別都繼承自 BaseAdapter,並實作以下核心方法:

  • __init__(config: dict) - 初始化配置
  • run(input: dict) - 執行主要邏輯
  • set_input(status) - 設定輸入參數
  • get_result() - 取得執行結果
  • get_metadata() - 取得 metadata(如適用)

Adapter 類別

Adapter對應模組說明
LoaderAdapterLoader資料載入,支援 benchmark:// 協議
SplitterAdapterSplitter資料分割
PreprocessorAdapterProcessor前處理
SynthesizerAdapterSynthesizer資料合成
PostprocessorAdapterProcessor後處理
ConstrainerAdapterConstrainer約束處理
EvaluatorAdapterEvaluator評估
DescriberAdapterDescriber描述統計
ReporterAdapterReporter報告產生

基本使用模式

from petsard.adapter import LoaderAdapter

# 創建 adapter
adapter = LoaderAdapter(config)

# 設定輸入
input_data = adapter.set_input(status)

# 執行
adapter.run(input_data)

# 取得結果
result = adapter.get_result()

錯誤處理

所有 Adapter 都使用裝飾器模式處理錯誤:

  • @log_and_raise_config_error - 配置錯誤處理
  • @log_and_raise_not_implemented - 未實作方法處理

注意事項

  • Adapter 層是內部架構,不建議直接使用
  • 優先使用 YAML 配置檔和 Executor 執行
  • 各 Adapter 的具體參數請參考子頁面文檔