Exempelsortering och aktualitet
Se hur exempelordningen påverkar resultatet.
Exempelsortering och aktualitet är en gratis lektion i AI-promptteknik på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AI-promptteknik, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-promptteknik innehåller totalt 4 lektioner.
Ordningen är en dold hyperparameter
Ordningen på few-shot-exemplen kan ändra träffsäkerheten med flera procentenheter och ibland förvandla en nästan slumpmässig prompt till en stark prompt, eller tvärtom. Denna variation uppstår även när exempeluppsättningen är oförändrad.
Behandla ordningen som en central hyperparameter som ska undersökas, inte som en eftertanke. Att rapportera few-shot-resultat utan att kontrollera ordningen är vetenskapligt bristfälligt.
import itertools
def order_search(demos, eval_set, build, max_perms=24):
perms = list(itertools.permutations(demos))[:max_perms]
scored = [(p, evaluate(build(p), eval_set)) for p in perms]
return max(scored, key=lambda x: x[1])Recency bias förklarad
Decoder-only-transformatorer uppvisar recency bias: token närmare genereringspunkten utövar ett oproportionerligt stort inflytande. Den sista demonstrationen före frågan påverkar med störst sannolikhet format, etikett och ton.
Detta beror delvis på ett resultat av uppmärksamhetsmönster och positionskodning. Den praktiska slutsatsen är att modellen lättast efterliknar det som placeras sist.
# Position weight intuition (illustrative, not exact)
# influence(example_i) roughly increases with proximity to the query
# => the FINAL demo disproportionately anchors the next generation
weights = [0.1, 0.15, 0.25, 0.5] # earlier ... latestFörlorad i mitten
Studier av långa kontexter visar en uppmärksamhetsprofil i form av ett U: modeller uppmärksammar början och slutet av kontexten väl men ägnar mitten mindre uppmärksamhet. Kritiska demonstrationer som begravs mitt i prompten får i praktiken mindre vikt.
Placera de viktigaste eller mest luriga exemplen i början eller, med hänsyn till recency bias, nära slutet – aldrig isolerade mitt i ett långt demonstrationsblock.
def place_key_demos(key, filler):
# U-shape aware: key items at the edges, filler in the middle
head = key[: len(key)//2]
tail = key[len(key)//2 :]
return head + filler + tailMajoritetsklass och sista position
Recency bias och bias mot majoritetsklassen förstärker varandra. Om den sista demonstrationen tillhör klass A lutar modellen åt att förutsäga A. Tillsammans med en demonstrationsmängd där A dominerar blir priorn kraftigt snedfördelad.
Vid balanserad klassificering bör etiketterna alterneras och det säkerställas att det sista exemplet inte alltid tillhör samma klass i olika promptvarianter.
def alternate_labels(by_label, k):
labels = list(by_label)
out = []
i = 0
while len(out) < k:
lbl = labels[i % len(labels)]
if by_label[lbl]:
out.append(by_label[lbl].pop())
i += 1
return out # final element varies by constructionDemonstrationer ordnade efter likhet (stigande)
En robust heuristik för retrieval-augmented few-shot är att ordna de hämtade exemplen efter stigande likhet med frågan, så att den mest relevanta demonstrationen hamnar närmast frågan och drar nytta av aktualitet.
Detta kombinerar dynamiskt urval med utnyttjande av aktualitet: relevant kontext finns både med och placeras där modellen uppmärksammar den som mest.
def order_by_similarity(query_emb, retrieved):
scored = [(d, cos(query_emb, d.emb)) for d in retrieved]
scored.sort(key=lambda x: x[1]) # ascending
return [d for d, _ in scored] # most similar last (near query)Läroplansbaserad ordning
För resonemang eller generering kan en läroplansbaserad ordning (från enkelt till svårt) hjälpa modellen att gradvis bygga upp det önskade beteendet och avslutas med ett komplext exempel som visar hela resonemangsdjupet precis före frågan.
Detta beror på uppgiften. Validera ordningen mot slumpmässiga ordningar och ordningar efter likhet i stället för att anta att den hjälper.
def curriculum(demos, difficulty_fn):
return sorted(demos, key=difficulty_fn) # easiest first, hardest lastMäta känslighet för ordning
Kvantifiera hur skör er prompt är genom att prova många ordningar och rapportera variansen i träffsäkerheten. Hög varians signalerar en instabil prompt som kan försämras oförutsägbart i produktion.
Använd detta mått för att jämföra promptdesigner: en prompt som är robust mot ordning är säkrare än en som ger något högre poäng men är volatil.
import random
def order_sensitivity(demos, eval_set, build, trials=20):
accs = []
for _ in range(trials):
perm = random.sample(demos, len(demos))
accs.append(evaluate(build(perm), eval_set))
return mean(accs), stdev(accs) # report both; low stdev = robustOrdvalsselektering utan sondering
När ni saknar etiketter för att poängsätta ordningar kan ni välja en ordning utifrån modellens förutsägelseentropi på en sonderingsmängd: ordningar som ger säkra förutsägelser med låg entropi och god spridning tenderar att generalisera bättre (Lu et al., 2022).
Detta gör att ni kan välja en bra permutation utan en märkt valideringsmängd.
def select_order_by_entropy(perms, probe_inputs, build):
def score(perm):
ents = [entropy(model_probs(build(perm), x)) for x in probe_inputs]
return -mean(ents) # prefer confident, low-entropy orderings
return max(perms, key=score)Stabilisera med kalibrering
Känslighet för ordning och recency bias förstärker båda vissa etiketter. Kontextuell kalibrering motverkar detta genom att uppskatta modellens prior på en innehållsfri indata och korrigera de förutsagda sannolikheterna, vilket minskar effekten av en enskild ordning.
Kalibrering tillsammans med en bra ordning ger stabilare beteende i produktion än att jaga den enskilt bästa permutationen.
p_prior = model_probs(build(perm), content_free='N/A')
def calibrate(probs):
return normalize(probs / p_prior) # cancels order-induced label skewCachelagring och ordningsstabilitet
Om ni använder prompt-cachning måste prefixet (inklusive demonstrationsblocket) förbli byte-stabilt för att cachen ska träffa. Om exemplen blandas om ofta för varje begäran förstörs återanvändningen av cachen och kostnaden och fördröjningen ökar.
Lösning: fastställ en enda validerad ordning för det statiska demonstrationsblocket och cachelagra det. Begränsa dynamisk omordning till den hämtade, frågespecifika svansen.
# Stable cached prefix + dynamic tail
prefix = render(FIXED_ORDERED_DEMOS) # cache_control on this block
tail = render(order_by_similarity(q_emb, retrieved))
prompt = prefix + tail + queryChecklista för en ordningsstrategi
Praktiska standardval: balansera och alternera etiketter, placera viktiga eller svåra exempel i ändarna (undvik mitten), ordna hämtade exempel efter stigande likhet så att det bästa hamnar nära frågan, mät variansen mellan ordningar och använd kalibrering för att dämpa kvarvarande skevhet.
Lås sedan ordningen för cachelagring och validera på nytt när exempeluppsättningen ändras.
def final_order(demos, q_emb):
demos = alternate_labels(group(demos), len(demos))
return order_by_similarity(q_emb, demos) # validated, then cachedSnabbkontroll
Resonera kring positionen för en kritisk demonstration.
Sammanfattning
Viktiga slutsatser:
- Exempelordningen är en hyperparameter som kan ändra träffsäkerheten med flera procentenheter. Sök efter en bra ordning och rapportera variansen.
- Recency bias gör den sista demonstrationen mest inflytelserik; ”lost in the middle” gör att centrala exempel väger för lite.
- Balansera och alternera etiketter, ordna hämtade demonstrationer efter stigande likhet och överväg läroplansbaserad ordning.
- Välj ordningar med hjälp av entropi när det finns få etiketter och använd kontextuell kalibrering för att dämpa skevhet.
- Lås en stabil ordning för prompt-cachning och ordna endast om den dynamiska hämtade svansen.
Lär dig AI-promptteknik med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 53
- Lektioner
- 199
Vanliga frågor
Är lektionen ”Exempelsortering och aktualitet” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AI-promptteknik, inklusive ”Exempelsortering och aktualitet”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AI-promptteknik innehåller totalt 4 lektioner.
Vad lär jag mig i ”Exempelsortering och aktualitet”?
Se hur exempelordningen påverkar resultatet. Ni övar på AI-promptteknik med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-promptteknik?
Du behöver inga förkunskaper. Utbildningen i AI-promptteknik på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Exempelsortering och aktualitet”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-promptteknik-lektionen?
Ja. Varje AI-promptteknik-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Noll-, en- och few-shot
- Utforma effektiva exempel
- Exempelsortering och aktualitet
- Dynamiskt urval av few-shot-exempel