En av de smartaste optimeringarna: jag slutade låta språkmodellen välja musik.
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.
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.
start 1842
show_filter 612
recent_track 544
artist_spacing 487
blocked 481
weighted_selection 1Om 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.