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:

  1. Configurazione: Il modello deve essere compilato con use_continuous_quantile_head=True.
  2. Chiamata: Il metodo model.forecast() non accetta un argomento quantiles.
  3. 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.