BIION-D Docs

Plugin

Esegue codice Python sandboxed con accesso al registro dati della pipeline.

Il modulo Plugin esegue codice Python definito dall’utente all’interno di un container Docker isolato. Gli script possono leggere dati dai moduli precedenti, eseguire trasformazioni ed esportare nuovi dati per i moduli a valle.

Modulo Script Python nell'editor dell'Action Plan

Configurazione

Campo Tipo Descrizione
script_id string Identificativo univoco dello script
code string Il codice sorgente Python da eseguire

Integrazione con la Codebase

Il modulo include un menu a tendina Codebase per caricare script salvati dalla libreria della codebase. Clicca sul pulsante Save to codebase (icona del floppy disk) per salvare lo script corrente e riutilizzarlo. Gli script possono anche essere eliminati dalla codebase.

Monaco Editor

L’editor di codice usa il Monaco editor (lo stesso editor di VS Code) con le seguenti impostazioni:

  • Evidenziazione della sintassi Python
  • Tema scuro (stile vs-dark di VS Code) — nota che l’editor si apre sempre in modalità scura, anche se normalmente altrove usi un tema chiaro
  • Minimap per una navigazione rapida
  • Famiglia di font Menlo, "Courier New", monospace
  • Dimensione del font 14
  • Dimensione della tabulazione 4 (una tabulazione inserisce quattro spazi)
  • Word wrap disattivato — le righe lunghe si estendono oltre l’area visibile e richiedono lo scorrimento orizzontale

Completamento Automatico

Mentre digiti, l’editor suggerisce completamenti per:

  • Data.get() — legge un valore dal registro dati
  • Data.export() — scrive un valore nel registro dati
  • Data.set_compliance() — modifica il valore di Compliance (vedi Sovrascrittura della Compliance più avanti)
  • Chiavi dati note già presenti nel registro

L’API Data

All’interno di uno script Python, interagisci con i dati della Pipeline attraverso l’oggetto Data:

Lettura dei Dati

# Ottieni un valore dal registro dati
image = Data.get("Camera_0.frame")
score = Data.get("AnomalyDetection_0.pred_score")

Scrittura dei Dati

# Esporta un valore nel registro dati
Data.export("result", my_result)
Data.export("processed_image", processed)

I nomi delle variabili esportate non devono contenere punti (.). Il sistema aggiunge automaticamente il prefisso <module_id>. alle esportazioni, quindi un’esportazione chiamata result da un modulo con ID PythonScript_0 diventa PythonScript_0.result nel registro.

Data.export() applica due regole che faranno fallire il tuo script con un ValueError:

  • Non puoi esportare una chiave già esistente nei dati di input. Se un altro modulo ha già scritto su una chiave con lo stesso nome, rinomina la tua esportazione.
  • Non puoi usare il nome di chiave "compliance". La Compliance deve essere modificata con il metodo dedicato Data.set_compliance() — vedi la sezione Sovrascrittura della Compliance più avanti.

Rilevamento Input e Output

Il sistema rileva automaticamente input e output analizzando il codice dello script:

  • Input: estratti dalle chiamate Data.get("...") e Data.get_*("...")
  • Output: estratti dalle chiamate Data.export("...") e Data.export_*("...")

Questo permette al sistema di validazione di verificare che tutte le dipendenze siano soddisfatte prima dell’esecuzione.

Output della Console

Qualsiasi output print() dallo script viene inoltrato al pannello console dell’Action Plan. Gli errori vengono visualizzati con un indicatore di errore.

Sovrascrittura della Compliance

Gli script possono sovrascrivere il valore di Compliance della Pipeline chiamando il metodo dedicato:

# Sovrascrittura compliance: 0 = Buono, 1 = Incerto, 2 = Difettoso
Data.set_compliance(0)

Modalità Visualizzazione

In modalità visualizzazione, il modulo mostra i dati esportati come JSON e visualizza anteprime per eventuali output immagine.

Input e Output

Direzione Chiave Tipo Descrizione
Input Qualsiasi chiave via Data.get(...) vario Dati dai moduli precedenti
Output <module_id>.<exported_name> vario Dati esportati via Data.export(...)

Vincoli di esecuzione

Vincolo Supportato
Sempre ✅
Acquisizione —
Inferenza ✅

Gli script Python non possono essere eseguiti in modalità solo acquisizione. Sono progettati per elaborare dati, il che è rilevante in modalità inferenza.

Ambiente di Esecuzione

Gli script Python vengono eseguiti all’interno di container Docker isolati gestiti dal servizio Whale. Questo fornisce:

  • Sandboxing — gli script non possono accedere direttamente al sistema host
  • Riproducibilità — ogni esecuzione avviene in un ambiente pulito
  • Sicurezza — errori nel codice utente non fanno crashare l’applicazione principale

Script di Esempio

# Leggi il punteggio di predizione anomalia
score = Data.get("anomaly_0.pred_score")

# Applica logica di business personalizzata
if score < 0.3:
    verdict = "PASS"
elif score < 0.7:
    verdict = "REVIEW"
else:
    verdict = "FAIL"

# Esporta i risultati
Data.export("verdict", verdict)

# Sovrascrivi la compliance usando il metodo dedicato
if verdict == "PASS":
    Data.set_compliance(COMPLIANT)
elif verdict == "REVIEW":
    Data.set_compliance(UNCERTAIN)
else:
    Data.set_compliance(DEFECTED)

print(f"Verdetto: {verdict} (punteggio: {score})")