Generare allenamenti di nuoto con un LLM locale

Generare allenamenti di nuoto con un LLM locale: dalla knowledge base alla pianificazione settimanale

Nel precedente articolo abbiamo visto come costruire un sistema RAG (Retrieval Augmented Generation) nel nostro laboratorio Kubernetes utilizzando:

  • Ollama come motore LLM locale
  • Qdrant come database vettoriale
  • OpenWebUI come interfaccia per l’interazione con il modello

In quella fase l’obiettivo era permettere al modello di rispondere a domande utilizzando una knowledge base specifica.

Il passo successivo è stato molto più interessante: utilizzare lo stesso sistema per generare allenamenti di nuoto realistici, basati su allenamenti realmente utilizzati durante la stagione.

Dalla conoscenza alla generazione di allenamenti

Un modello linguistico può generare contenuti plausibili, ma senza un contesto specifico tende a produrre risultati generici.

Per ottenere allenamenti realistici abbiamo costruito una knowledge base composta da sedute reali di allenamento, strutturate secondo il modello CSS (Critical Swim Speed).

Ogni allenamento è stato inserito nella libreria come documento indipendente, ad esempio:

  • workout_week24_sessionA.txt
  • workout_week24_sessionB.txt
  • workout_week24_sessionC.txt

Ogni file segue una struttura coerente:

  • WARMUP
  • SENSITIVITY
  • TECHNIQUE
  • ACTIVATION
  • MAIN SET
  • COOLDOWN

Questo approccio permette al sistema RAG di recuperare esempi reali e fornire al modello pattern di allenamento realistici.

Il ruolo della knowledge base

La knowledge base contiene tre tipi di informazioni:

1. Regole del metodo di allenamento

Un documento descrive il metodo utilizzato per costruire le sedute.

Ad esempio: coach_training_rules.txt

In questo file sono definite:

  • le zone di allenamento (A1, A2, B1, B2, C1, C2)
  • la struttura delle sedute
  • il ruolo dei drill tecnici
  • l’utilizzo degli attrezzi (pinne, pull buoy, palette, snorkel)

Questo documento permette al modello di comprendere la logica dell’allenatore, non solo copiare esempi.

2. Allenamenti reali

La libreria contiene numerose sedute distribuite su diverse settimane.

Ad esempio: week21, week22, week23, week24, week25, week26, week27, week28

Ogni settimana include più sessioni di allenamento.

Questo consente al modello di osservare:

  • progressioni di carico
  • variazioni di intensità
  • alternanza tra tecnica e lavoro aerobico
  • uso delle diverse zone di allenamento

3. Regole di generazione

Un ulteriore documento definisce alcune regole utili per generare allenamenti coerenti:

  • distanza totale tipica (2000–2800 m)
  • utilizzo delle zone CSS
  • presenza obbligatoria delle sezioni della seduta
  • uso di set concreti con distanze e recuperi

4. Generazione di nuovi allenamenti

Una volta popolata la knowledge base, il sistema è in grado di generare nuovi allenamenti utilizzando i pattern presenti negli esempi.

Un esempio di richiesta può essere: (prompt)

Generate a 2500m swim workout using CSS zones
similar to the sessions in the knowledge base.

Il sistema RAG recupera i documenti più rilevanti dalla libreria e li utilizza come contesto per il modello.

Il risultato è una seduta strutturata, ad esempio:

WARMUP
200 freestyle
100 pullSENSITIVITY
2x(30″ sculling + 50 freestyle)ACTIVATION
4×50 (1 A2 + 1 B1)MAIN SET 2x
150 A2
150 B1
2×100 A1 pullCOOLDOWN
200 easy swim

Il vantaggio principale è che il modello non inventa un allenamento casuale, ma utilizza pattern già presenti nella libreria.

Verso la pianificazione settimanale

Una volta che il sistema è in grado di generare singole sedute, il passo successivo è generare una settimana completa di allenamento.

Ad esempio:

Generate week 29 swim training
3 sessions
based on weeks 21–28 patterns

In questo caso il modello utilizza le settimane precedenti per creare una nuova settimana coerente con il metodo di allenamento.

Questo permette di utilizzare il sistema come assistente per la pianificazione degli allenamenti.

Nel prossimo articolo vedremo i passaggi all’interno di webui per realizzare il progetto swimming-training

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *