
python .\scripts\poc\poc_validate_timesfm_api.py
Transclude of poc_validate_timesfm_api.py
Contesto
Durante l’integrazione del modello TimesFM nel TimesFMEnrichmentWorker, si è verificato un TypeError persistente quando si tentava di richiedere gli intervalli di confidenza (quantili). Per risolvere il problema in modo efficiente, era necessario isolare la chiamata API critica dal resto del sistema.
Decisione
È stato creato uno script di validazione minimale (poc_validate_timesfm_api.py) per testare la chiamata API per le previsioni per quantili in un ambiente controllato.
Lo script è stato progettato per trovare la combinazione esatta di configurazione e parametri di chiamata. Il test ha fallito come previsto alla prima esecuzione, restituendo un TypeError: ... got an unexpected keyword argument 'quantiles', che ha rivelato la vera natura dell’API.
La sintassi corretta, scoperta grazie a questo POC, è la seguente:
- Configurazione: Il modello deve essere compilato con
use_continuous_quantile_head=True. - Chiamata: Il metodo
model.forecast()non accetta un argomentoquantiles. - Output: Se il modello è stato configurato correttamente, il secondo valore restituito dalla funzione
forecast()conterrà automaticamente l’array con le previsioni per i 10 quantili di default (da 0.05 a 0.95).
Conseguenze
Positive
- Risoluzione Definitiva del Bug: Il POC ha identificato senza ambiguità la sintassi corretta per ottenere i quantili, risolvendo il blocco nello sviluppo del
TimesFMEnrichmentWorker. - Efficienza del Debug: Questo approccio si è dimostrato estremamente efficiente, trasformando un errore vago in un problema specifico e risolvibile in pochi minuti.
- Documentazione Vivente: Lo script corretto (v1.1) ora funge da esempio canonico e “documentazione eseguibile” su come utilizzare correttamente l’API dei quantili di TimesFM 2.5, una risorsa preziosa per il team.
Negative / Limitazioni
- Scopo Ristretto: Questo script serve esclusivamente come strumento di sviluppo e debug interno. Non produce output funzionali per l’utente finale.