← Tillbaka till tidslinjen

En av de smartaste optimeringarna: jag slutade låta språkmodellen välja musik.

12 SEPTEMBER 2026 RELAY 7 PICKER

Musikval såg först ut som något en AI kunde vara bra på. Jag kan ge den en stor lista, beskriva showen och be den välja något som passar. Problemet är att det är dyrt, långsamt och svårtestat.

Det mesta jag faktiskt ville ha går att uttrycka som regler: rätt playlist, rätt vikt, inte spelad nyligen, artisten ska ha spacing, låten ska inte vara blockerad, showens filter ska matcha.

Relay 7 Picker blev därför lokal och deterministisk.

Förenklad kandidatpipeline
const pool = library
  .filter(track => showAllows(track))
  .filter(track => !recentlyPlayed(track))
  .filter(track => artistGapOk(track.artist))
  .filter(track => !blocked(track));

const next = weightedPick(pool);

Gemma 3 får fortfarande information om aktuell och kommande låt när det behövs för ett radioprat, men den behöver inte bränna tid på att välja själva filen.

Det här förbättrade både latency och felsökning. Om en felaktig låt väljs kan jag logga poolen och se exakt vilken regel som släppte igenom den.

Picker gav också bättre kontroll på biblioteket

När musikvalet blev kod kunde jag logga hur stor kandidatpoolen är efter varje filter. Det avslöjar exempelvis om en no-repeat-regel är för hård eller om en showfilterkombination nästan svälter poolen.

Det gör också att jag kan bygga fallbacksteg medvetet: relaxera en mjuk regel före en hård regel, aldrig tvärtom.

Picker gjorde det möjligt att mäta varför biblioteket känns tunt

Innan Picker var det svårt att veta om en tråkig period berodde på playlisten, modellen eller recencyregler. När kandidatpoolen byggs stegvis kan jag logga hur många låtar som återstår efter varje filter.

Pooldiagnostik
start             1842
  show_filter        612
  recent_track       544
  artist_spacing     487
  blocked            481
  weighted_selection   1

Om poolen plötsligt är tio låtar efter artist spacing vet jag att regeln är för aggressiv för den aktuella showen. Det är mycket bättre än att bara konstatera att radion “känns repetitiv”.

Det ger också möjlighet till kontrollerade fallbacknivåer. Jag kan relaxera en mjuk recencyregel innan jag någonsin rör en hård blockregel.

📤 Dela det här inlägget

Dela på Facebook