Prompt engineering, mesurat: què canvia la sortida
Seixanta tiquets, les mateixes paraules en sis ordres i precisió del 26,7 % al 85,0 %. Després, quatre trucs d’internet amb barres d’error.
En aquesta pàgina
Aquí tens un tiquet de suport i quatre cues on podria anar.
The label on the parcel has my old surname on it.
-> billing / technical / shipping / accountPer encaminar-lo necessites tres coses al prompt: les definicions de les cues, el tiquet i la instrucció de triar-ne una. Tres blocs. Els pots posar en sis ordres, i els blocs contenen exactament els mateixos caràcters en tots sis.
En seixanta tiquets amb respostes conegudes, els sis ordres puntuen entre 26,7 % i 55,0 %. Mou els mateixos dos blocs fora del torn de l’usuari i posa’ls al torn del sistema, sense canviar ni una paraula, i el mateix model puntua 76,7 %. Embolica el tiquet amb una etiqueta d’estil XML i arriba al 85,0 %.
No ha canviat res del model. No ha canviat res de la tasca. No s’ha reescrit ni una paraula. Un salt de cinquanta-vuit punts ha sortit d’ordenar el mateix text.
Aquesta és la raó per la qual existeix aquest capítol, i també és la raó per la qual és el tema més ple de culte cargo de tot el camp. Els efectes són reals i grans, cosa que fa que cada anècdota sembli confirmada; i són inestables entre models i tasques, cosa que vol dir que una anècdota és tot el que arriba a ser la majoria de consells. Així que aquest capítol té una regla, i tot el que hi ha dins n’està subordinat:
Un prompt es mesura, no es debat. Quatre variants sobre vint casos no distingeixen absolutament res.
El prompt és tot l’estat
Enllaç a la secció: El prompt és tot l’estatAbans de les mesures, un fet que explica en silenci la meitat del que ve després.
El model no té memòria. Entre dues crides no reté res: ni la teva última pregunta, ni la seva última resposta, ni el fitxer que has adjuntat, ni el fet que ja l’hi hagis demanat dues vegades. Cada crida comença des d’una màquina buida, i l’única cosa que aquesta màquina sap és la seqüència de tokens que li acabes de donar.
Allò que sembla memòria en una interfície de xat és el teu client reenviant tota la conversa, cada torn, des del principi. El model ho torna a llegir tot des de zero, cada vegada. El Capítol 13 va mesurar què costa aquesta relectura en una passada endavant; el Capítol 16 ho converteix en una línia d’una factura. El que importa aquí és la conseqüència per al disseny: el prompt no és un missatge a un sistema que té estat. És l’estat.
Això jubila tota una família de confusions. «El model ha oblidat el que li havia dit» normalment vol dir que mai se li va enviar. «Ha ignorat la meva instrucció anterior» normalment vol dir que la instrucció va caure fora de la finestra quan es va truncar l’historial. «S’ha comportat diferent en producció» normalment vol dir que producció munta un prompt diferent del que vas provar. Res d’això és un problema del model, i res d’això s’arregla reescrivint res.
El bench
Enllaç a la secció: El benchL’afirmació «aquest prompt és millor» és una afirmació sobre una distribució, i no pots veure una distribució mirant una sola sortida. El que necessites és avorrit: casos amb respostes conegudes, N variants i un interval.
El harness són cinquanta línies de TypeScript amb la mateixa forma que el client del Capítol 14: una petició, un termini, una mica de concurrència, un recompte. Reapareix al Capítol 19 per avaluar un recuperador i al Capítol 29 com a conjunt daurat.
export type Case = { input: string; expected: string };
export type Variant = { name: string; build: (c: Case) => ChatMessage[] };
async function pooled<T, R>(xs: T[], n: number, f: (x: T) => Promise<R>) {
const out: R[] = new Array(xs.length);
let i = 0;
await Promise.all(
Array.from({ length: n }, async () => {
while (i < xs.length) {
const k = i++;
out[k] = await f(xs[k]);
}
}),
);
return out;
}
export async function runVariant(v: Variant, cases: Case[], concurrency = 6) {
const hits = await pooled(cases, concurrency, async (c) => {
const answer = await complete(v.build(c));
return answer.trim().toLowerCase() === c.expected;
});
return { name: v.name, hits, k: hits.filter(Boolean).length, n: cases.length };
}El número que torna no és el resultat. Això sí:
/** 95 % Wilson score interval for a proportion. Chapter 4 derives it. */
export function wilson(k: number, n: number, z = 1.96) {
const p = k / n;
const d = 1 + (z * z) / n;
const centre = (p + (z * z) / (2 * n)) / d;
const half = (z * Math.sqrt((p * (1 - p)) / n + (z * z) / (4 * n * n))) / d;
return [Math.max(0, centre - half), Math.min(1, centre + half)] as const;
}El Capítol 4 va construir l’argument i aquest capítol el cobra. Disset encerts de vint són un 85 %, i el seu interval del 95 % va del 64 % al 95 %. Una variant que puntua 13 de 20 —65 %, que sembla clarament pitjor— té un interval del 43 % al 82 %. Aquests dos intervals se superposen gairebé en tota la seva longitud. Vint casos no poden distingir un bon prompt d’un de mediocre, i la majoria de consells publicats sobre prompt es van validar amb menys.
Seixanta casos, que és el que fa servir aquest capítol, encara no són gaires. Són prou per veure efectes grans i prou honestos per admetre quan no poden veure’n de petits —i ho admetrà diverses vegades més avall.
Posició: les mateixes paraules, sis ordres
Enllaç a la secció: Posició: les mateixes paraules, sis ordresTres blocs —les regles R, el tiquet T, la instrucció I— concatenats en un sol missatge d’usuari. Totes sis permutacions, contingut idèntic byte a byte, seixanta casos cadascuna.
| ordre dels tres blocs | correctes | precisió, Wilson 95 % |
|---|---|---|
| regles, instrucció, tiquet | 33/60 | 55,0 % [42,5, 66,9] |
| regles, tiquet, instrucció | 30/60 | 50,0 % [37,7, 62,3] |
| tiquet, regles, instrucció | 22/60 | 36,7 % [25,6, 49,3] |
| instrucció, tiquet, regles | 21/60 | 35,0 % [24,2, 47,6] |
| instrucció, regles, tiquet | 17/60 | 28,3 % [18,5, 40,8] |
| tiquet, instrucció, regles | 16/60 | 26,7 % [17,1, 39,0] |
Del millor al pitjor hi ha 28,3 punts, i els intervals no se superposen, així que això no és una història sobre soroll. Com que cada braç es puntua sobre els mateixos seixanta elements, la pregunta més esmolada és la parellada: dels casos en què dos braços discrepen, com de desequilibrat és el repartiment? Passar del pitjor ordre al millor va capgirar 21 casos cap a encert i 4 cap a error: probabilitat parellada exacta 0,0009.3
Llegeix la taula per la seva forma més que pel guanyador. Les dues millors files totes dues acaben amb el tiquet; les dues pitjors totes dues enterren la instrucció al mig o la deixen després de les dades. És el mateix fenomen que Liu et al. van anomenar Lost in the Middle: el material als extrems d’un prompt s’utilitza amb més fiabilitat que el material del centre.4 El Capítol 16 posa preu a la finestra i el Capítol 24 mesura l’efecte correctament a llargada, on el mig col·lapsa tal com es descriu i la recuperació al final de tot no reapareix. Aquí la regla pràctica cau sola: tasca a dalt, dades a baix, res important al mig.
Ara mou les mateixes paraules entre torns. El Capítol 11 va establir que la plantilla de xat no és decoració al voltant del model sinó part del model: <|im_start|>system i <|im_start|>user són tokens reals que el model va veure milions de vegades durant el fine-tuning, exactament en aquestes posicions. Així que hauria d’importar a quin costat d’aquests marcadors cau la teva instrucció, i importa:
| on viuen les mateixes paraules | correctes | precisió, Wilson 95 % |
|---|---|---|
| regles i instrucció al torn del sistema, tiquet sol al torn de l’usuari | 46/60 | 76,7 % [64,6, 85,6] |
| regles al torn del sistema, instrucció i tiquet al torn de l’usuari | 44/60 | 73,3 % [61,0, 82,9] |
| regles i instrucció al torn del sistema, instrucció repetida després del tiquet | 42/60 | 70,0 % [57,5, 80,1] |
| els tres blocs en un sol torn d’usuari | 33/60 | 55,0 % [42,5, 66,9] |
Moure les regles i la instrucció a través de la frontera de la plantilla va comprar 21,7 punts —19 casos guanyats, 6 perduts, probabilitat parellada 0,0146— sense canviar-ne ni un caràcter. Aquesta és la resposta concreta a system prompt versus user prompt: no són dues maneres de dir la mateixa cosa. Són dues posicions de token diferents en una estructura amb què el model va ser entrenat, i la posició de sistema és on pertanyen les instruccions que s’apliquen a tota la conversa.
Fixa’t també en la tercera fila. Repetir la instrucció després del tiquet —un truc molt recomanat— va puntuar per sota de dir-la una vegada. En aquest model, en aquesta tasca, dir-ho dues vegades va ser pitjor que dir-ho una.
Delimitadors, i la lliçó estadística que amaguen
Enllaç a la secció: Delimitadors, i la lliçó estadística que amaguenMateix prompt, millor col·locació, seixanta casos. L’únic que canvia és què envolta el text del tiquet.
| com es delimita el tiquet | correctes | precisió, Wilson 95 % |
|---|---|---|
| una etiqueta d’estil XML | 51/60 | 85,0 % [73,9, 91,9] |
| res | 48/60 | 80,0 % [68,2, 88,2] |
| un encapçalament Markdown | 47/60 | 78,3 % [66,4, 86,9] |
una etiqueta, Ticket: | 46/60 | 76,7 % [64,6, 85,6] |
| tanques amb coixinets | 45/60 | 75,0 % [62,8, 84,2] |
| triple backticks | 44/60 | 73,3 % [61,0, 82,9] |
| cometes dobles | 40/60 | 66,7 % [54,1, 77,3] |
Una dispersió de divuit punts per puntuació. Però mira els dos intervals extrems: [73,9, 91,9] i [54,1, 77,3]. Se superposen. Amb la lectura barroera —compara les barres d’error i, si es toquen, no diguis res— aquesta taula no prova absolutament res.
La lectura barroera aquí és equivocada, i entendre per què val més que la taula. Cada variant es va puntuar sobre els mateixos seixanta tiquets, així que les dues mesures no són mostres independents; són parellades. La major part de l’amplada de cada interval ve d’una font d’incertesa que tots dos braços comparteixen —si aquests seixanta tiquets són representatius— i aquesta font es cancel·la quan els compares entre ells. Fes la pregunta parellada en lloc d’això i la resposta és nítida: passar de cometes dobles a l’etiqueta XML va capgirar 12 casos cap a encert i 1 cap a error, probabilitat parellada 0,0034. És una diferència real.
I després la mateixa prova desinfla el titular. L’etiqueta XML va superar l’etiqueta plana Ticket: per 8,3 punts, que és el número que un blog posaria al títol. Parellat: 6 guanyats, 1 perdut, probabilitat 0,1250. No establert. Set casos és tot el que sosté aquella famosa millora.
Per tant hi ha dues preguntes amb dos instruments diferents, i confondre-les és com els consells sobre prompt s’equivoquen en totes dues direccions alhora:
Com de bo és aquest prompt? L’interval de Wilson sobre la seva pròpia precisió. Ample tret que tinguis centenars de casos. Aquest és el número que informes a algú que decideix si enviar-ho a producció.
B és millor que A? La prova parellada sobre els casos en què discrepen. Molt més sensible, perquè la dificultat compartida del conjunt es cancel·la. Aquest és el número que fas servir per decidir entre dos candidats.
La conclusió general —que els models són fortament i imprevisiblement sensibles a eleccions de format que no porten contingut semàntic— no és nova. Sclar et al. van variar només separadors, espaiat i majúscules/minúscules en desenes de tasques i van trobar dispersions de precisió prou àmplies per invertir rànquings de models publicats.5 La conseqüència pràctica no és «fes servir etiquetes XML». És que el format és un hiperparàmetre, no costa res d’escombrar, i qualsevol comparació de dos models que fixa un format compara formats tant com models.
Quants exemples són realment suficients
Enllaç a la secció: Quants exemples són realment suficientsL’aprenentatge in-context —mostrar al model exemples resolts dins del prompt i fer que generalitzi a partir d’ells sense cap actualització de pesos— és la capacitat que va fer famós GPT-3.6 La pregunta pràctica mai no és si funciona. És quants exemples vols pagar.
Els exemples entren com a torns previs reals, alternant usuari i assistant, perquè aquesta és l’estructura amb què es va entrenar la plantilla. Cada k es va executar amb cinc seleccions aleatòries diferents d’un conjunt separat de setze tiquets etiquetats:
| exemples | precisió mitjana | pitjor i millor selecció | dispersió entre seleccions |
|---|---|---|---|
| 0 | 76,7 % | — | — |
| 1 | 78,7 % | 78,3 – 80,0 % | 1,7 punts |
| 2 | 83,7 % | 80,0 – 86,7 % | 6,7 punts |
| 4 | 81,7 % | 78,3 – 86,7 % | 8,3 punts |
| 8 | 83,7 % | 78,3 – 88,3 % | 10,0 punts |
| 16 | 89,3 % | 85,0 – 93,3 % | 8,3 punts |
Dos exemples van comprar set punts. Els sis exemples següents no van comprar res de mesurable: 83,7, després 81,7, després 83,7, una seqüència que vaga dins del seu propi soroll. Setze en van comprar cinc i mig més. La corba no és una pujada suau; és un esglaó, un altiplà i un esglaó.
La columna que més importa és l’última. A k = 8, quins vuit exemples vas acabar triant va moure la precisió 10 punts: més que tot el guany de passar de dos exemples a vuit. I la fila inferior n’és la versió més clara: a k = 16 el conjunt s’esgota, de manera que les cinc execucions contenen exactament els mateixos setze exemples, i només difereixen en l’ordre en què apareixen. Només l’ordre va moure la precisió 8,3 punts.
Aquest és el resultat que van reportar Lu et al. i sobreviu arreu on s’ha buscat: l’ordre dels exemples és un hiperparàmetre genuí amb efectes comparables al recompte d’exemples.7 Així que el consell honest sobre few-shot prompting no és un número. És:
Comença a zero i afegeix exemples només contra una mesura
Enllaç a la secció: Comença a zero i afegeix exemples només contra una mesuraEls dos primers normalment valen la pena. Més enllà d’això estàs endevinant, i l’endevinalla costa tokens en cada crida durant la resta de la vida del producte.
Tracta la selecció com a part del prompt
Enllaç a la secció: Tracta la selecció com a part del promptDos exemples ben triats superen vuit exemples triats sense cura. Si els teus exemples venien de la part superior d’un full de càlcul, aquesta és la variable que has d’escombrar abans d’afegir-ne més.
Escombra l’ordre, una vegada, i després congela’l
Enllaç a la secció: Escombra l’ordre, una vegada, i després congela’lÉs gratis, és un efecte real i, a diferència de la major part d’aquest capítol, no necessita cap reescriptura per provar-lo.
Comprova l’equilibri de classes
Enllaç a la secció: Comprova l’equilibri de classesQuatre exemples que tenen tots la mateixa etiqueta ensenyen al model l’etiqueta, no la tasca. El col·lapse d’aquest model cap a la cua que apareixia l’última és el mateix fracàs amb una altra disfressa.
Quatre frases d’internet
Enllaç a la secció: Quatre frases d’internetAra, el folklore. Cadascuna d’aquestes és una sola frase afegida al principi d’un system prompt que, per la resta, és idèntic, sobre els mateixos seixanta casos.
| frase afegida al system prompt | correctes | precisió, Wilson 95 % | parellat contra la línia base |
|---|---|---|---|
| res afegit | 46/60 | 76,7 % [64,6, 85,6] | — |
| «Respira profundament i treballa aquest problema amb cura.» | 47/60 | 78,3 % [66,4, 86,9] | +4 / −3, p = 1,000 |
| «Això és molt important per a la meva carrera.» | 46/60 | 76,7 % [64,6, 85,6] | +5 / −5, p = 1,000 |
| «Ets un expert de classe mundial en operacions de suport al client amb vint anys d’experiència.» | 42/60 | 70,0 % [57,5, 80,1] | +3 / −7, p = 0,344 |
| «Et donaré $200 de propina si respons correctament.» | 41/60 | 68,3 % [55,8, 78,7] | +1 / −6, p = 0,125 |
| «Se’t penalitzarà per cada tiquet que enviïs a la cua equivocada.» | 25/60 | 41,7 % [30,1, 54,3] | +3 / −24, p < 0,001 |
Quatre de cinc no van fer res. No «una mica»; res que seixanta casos parellats puguin veure. La persona experta i el suborn tots dos van puntuar per sota de la línia base intacta, i fins i tot aquestes caigudes fallen la prova parellada: són soroll apuntant avall.
La tercera fila és la que cal pair. «Això és molt important per a la meva carrera» va produir exactament la mateixa precisió, 46 de 60, i deu de les seixanta respostes van canviar, cinc en cada direcció. L’estadístic resum era idèntic i el comportament no. Si la teva avaluació és un sol número sobre un conjunt petit, un canvi que reescriu una sisena part de les sortides pot semblar un canvi que no ha fet res, i l’enviaràs a producció creient que era gratis.
I després l’amenaça, que és l’única frase que va moure l’agulla i la va moure 35 punts avall, capgirant 24 casos d’encert a error. Això no és un artefacte d’arrodoniment; és un comportament de model diferent. La lliçó no és «no amenacis mai un model». És que l’emmarcament emocional no és inert. Desplaça la distribució, de vegades amb força, en una direcció que ningú no pot predir llegint la frase, que és exactament per què s’ha de mesurar en lloc de raonar-hi.
Una advertència que aquest capítol et deu: aquestes cinc frases es van provar en un model petit i una tasca. Algunes tenen suport publicat en altres llocs: «respira profundament» va sortir d’un article que buscava instruccions amb puntuació alta en lloc d’inventar-les, que és una afirmació diferent i millor que la que va circular després.8 El que generalitza no són les frases. És que la llista que va sobreviure als blogs i la llista que sobreviu a la mesura són dues llistes diferents, i l’única manera de saber quina tens a les mans és executar el bench.
Per què «no facis» falla
Enllaç a la secció: Per què «no facis» fallaUna regla que tothom repeteix —digues què vols, no què no vols— amb l’absència habitual d’un número. Aquí tens el número. El mateix requisit de format, escrit de tres maneres, amb el model generant lliurement perquè se’n pugui observar el compliment:
| com s’escriu la regla de format | la sortida era exactament una paraula permesa | tokens de sortida mitjans |
|---|---|---|
| «Respon amb una paraula.» | 10/60 (16,7 %) | 2,6 |
| «No t’expliquis. No escriguis una frase. No afegeixis puntuació.» | 1/60 (1,7 %) | 14,0 |
| totes dues juntes | 41/60 (68,3 %) | 2,3 |
Tres prohibicions van anar pitjor que una instrucció, i van fer que el model escrivís cinc vegades més text: exactament el contrari de totes tres alhora. Afegir de nou la frase positiva ho va rescatar fins al 68 %.
El mecanisme no és misteriós un cop recordes el Capítol 8. El model tria un token següent d’una distribució condicionada per tot el que ve abans, i una prohibició posa la cosa prohibida dins d’aquest condicionament. No hi ha cap operador per a la negació; hi ha un context en què ara apareix una paraula.
Això es pot mesurar directament. Agafa el prompt de línia base i afegeix una línia: Do not use the shipping queue for software problems. Després mira només els quaranta-cinc tiquets que no són tiquets d’enviament:
shipping triat | probabilitat mitjana sobre shipping | precisió global | |
|---|---|---|---|
| línia base | 11,1 % dels 45 casos | 0,131 | 76,7 % [64,6, 85,6] |
| després de prohibir-ho pel nom | 37,8 % | 0,374 | 51,7 % [39,3, 63,8] |
Anomenar una cua per descartar-la va fer que el model la triés tres vegades més sovint, gairebé va triplicar la massa de probabilitat que li assignava, i va costar 25 punts de precisió global: 16 casos perduts contra 1 guanyat, probabilitat parellada 0,0003.
No pensis en un elefant, mesurat. La reescriptura sempre és la mateixa: substitueix la prohibició per la regla positiva que la fa innecessària. No «no facis servir enviament per a problemes de programari», sinó «fes servir enviament només quan hi hagi un paquet físic implicat».
El contraexemple honest: chain of thought que costa i no compensa
Enllaç a la secció: El contraexemple honest: chain of thought que costa i no compensaEl Capítol 12 va construir chain of thought correctament —primer com a tècnica de prompting,910 després com una cosa entrenada amb recompenses verificables— i va acabar amb una advertència que va ajornar fins a aquest capítol: dir a un model que pensi pas a pas deixa d’ajudar quan el model raona pel seu compte, i pot fer mal. Aquí tens aquella advertència amb una taula a sota, en una tasca on és fàcil assumir que pensar més ha de ser millor.
Tots dos braços es llegeixen amb el mateix instrument a la mateixa posició. L’única diferència és si una chain of thought que el model va escriure per si mateix se situa abans dins del context.
| braç | correctes | precisió, Wilson 95 % | tokens de sortida extra per cas |
|---|---|---|---|
| sense chain of thought | 37/60 | 61,7 % [49,0, 72,9] | 0 |
| chain of thought, fins a 60 tokens | 34/60 | 56,7 % [44,1, 68,4] | 53,1 |
| chain of thought, fins a 200 tokens | 34/60 | 56,7 % [44,1, 68,4] | 97,7 |
La precisió va baixar i el cost va pujar, i la regla pròpia d’aquest capítol s’aplica al resultat propi d’aquest capítol: la caiguda és 7 casos guanyats contra 10 perduts, probabilitat parellada 0,629, que no queda establerta. El que sí queda establert és que va produir noranta-vuit tokens de sortida extra per crida i no hi va comprar res de mesurable. La incertesa és tota al costat del benefici. La factura és segura.
Una cadena que falla és més instructiva que una que funciona. Quan se li va demanar que raonés sobre «La teva integració de Slack va deixar de publicar missatges després de dimarts», el model va escriure:
1. Check if the issue persists on Monday.
2. Verify if there are any updates or changes in your Slack setup that
might affect message posting.
3. If no update has been made since Tuesday, check for any recent system
restarts or downtime affecting Slack functionality.
4. If you have recently installed new software or updated your
environment, ensure it's compatible with Slack version.
5. Contact Slack support for further assistance or troubleshooting steps.Això és consell competent de resolució de problemes i no és la tasca. Quan se li va demanar que pensés, el model va derivar cap al gènere al qual més s’assembla «pensa pas a pas sobre aquest tiquet de suport» en les seves dades d’entrenament, i després va respondre una pregunta de classificació amb cinc-cents caràcters de raonament no relacionat dins del seu propi context. Chain of thought ajuda en problemes amb estat intermedi que val la pena calcular: aritmètica, consultes de múltiples salts, satisfacció de restriccions. Encaminar una frase cap a un de quatre cubells no té estat intermedi. No hi ha res que la cadena hagi de sostenir, així que tot el que fa és afegir text plausible que la decisió final després ha de sobreviure.
Dues conseqüències pràctiques. Primera, per a un model entrenat per raonar —els models RLVR del Capítol 12— la instrucció és pitjor que redundant: pot substituir la cadena llarga que el model hauria produït per una de curta i amb forma de prompt. I mostrejar diverses cadenes i votar, que és el que fa self-consistency,11 no pot rescatar una tasca on no hi ha res sobre què discrepar: multiplica el cost pel nombre de mostres per desfer empats que no existeixen. El Capítol 12 va mesurar aquest intercanvi on sí que aplica. Segona, fixa’t en què va costar la bastida de comparació mateixa. Forçar la resposta dins d’una línia Final queue: va fer caure el braç sense raonament del 76,7 % al 61,7 %. Quinze punts, pagats per fer comparables els dos braços. L’estructura que existeix per a la teva comoditat tampoc no és gratis.
La mateixa crida, dues vegades
Enllaç a la secció: La mateixa crida, dues vegadesUna última mesura, perquè és la pregunta que tothom fa després del primer resultat sorprenent. Seixanta prompts, descodificació greedy, executats repetidament:
- La mateixa crida repetida amb tot fix va retornar probabilitats idèntiques bit a bit. Determinista.
- La mateixa crida batched with different neighbours —mides de batch 1, 4, 12, 30 i 60— va retornar probabilitats que diferien fins a 0,0128. L’etiqueta triada no va canviar mai, en 0 de 60 casos.
L’etiqueta va sobreviure perquè tenia marge per fer-ho: entre els seixanta casos, la separació més estreta entre les dues cues superiors era 0,0459, tres vegades i mitja el desviament. L’estabilitat no era una propietat de l’algoritme. Era un marge, i els marges s’esgoten. El Capítol 17 és on viu la raó aritmètica i on es desmunten els controls de mostreig que eixamplen i estrenyen aquests buits. La raó de plantar-ho aquí és que delimita què pot significar qualsevol mesura de prompt: el bench mesura un sistema reproduïble només fins a una tolerància, i una diferència de dos punts entre variants és dins d’aquesta tolerància en un mal dia.
Deixa d’opinar i comença a buscar
Enllaç a la secció: Deixa d’opinar i comença a buscarTot el que hi ha més amunt és un humà triant una variant i una màquina puntuant-la. El següent pas evident és deixar que la màquina triï també les variants.
APE fa exactament això: un model proposa instruccions candidates, es puntuen sobre exemples reservats, i les millors sobreviuen.8 Les instruccions que troba sovint són coses que cap humà escriuria, i aquest és el punt: la cerca és sobre què puntua, no sobre què sona professional.
DSPy va més enllà i és la idea més útil per a un producte.12 Declares què pren i què retorna cada pas d’una pipeline, i el framework ho compila en prompts, seleccionant demostracions i optimitzant instruccions contra la teva mètrica. Canvia el model i recompiles en lloc de reescriure. El prompt deixa de ser codi font que algú ajusta a mà i es converteix en un artefacte generat contra una mètrica, que és el que hauria d’haver estat des del principi.
Cap dels dos elimina la necessitat del bench. Tots dos el converteixen en l’única cosa que necessites, perquè un optimitzador sense mètrica no optimitza res.
Queda la disciplina. Els prompts han d’estar en control de versions, en fitxers, al costat del codi que els envia; no en una fila de base de dades que algú va editar un dimarts. Necessiten un identificador de versió desat al costat de cada sortida que han produït, o el dia que alguna cosa regressi no podràs descobrir què ha canviat. Necessiten el bench en integració contínua, perquè un prompt és l’única part del teu sistema que un proveïdor pot invalidar en silenci desplegant un model nou. I necessiten casos: no un centenar d’enginyosos, només els vint avorrits que es van trencar el trimestre passat, conservats per sempre. El bench és el lliurable. El prompt n’és un subproducte.
Cap on va això ara
Enllaç a la secció: Cap on va això araTot el que hi ha en aquest capítol s’ha mesurat en precisió. Cadascuna d’aquestes variants també té un preu.
El system prompt que va comprar 21,7 punts s’envia en cada crida, per sempre. Els dos exemples que van comprar set punts s’envien en cada crida, per sempre. Els setze que en van comprar dotze s’envien en cada crida, per sempre, i són aproximadament deu vegades més llargs que la pregunta que l’usuari realment ha fet. La chain of thought que no va comprar res va produir noranta-vuit tokens extra per petició, i els tokens de sortida són els cars.
Res d’això no és visible en una taula de precisions, i tot això és visible en una factura.
El Capítol 16 tracta de la unitat en què aquestes decisions estan realment denominades. El token com a unitat de facturació, el context window com a pressupost més que com a memòria, per què una conversa de quaranta torns costa molt més que quaranta vegades el primer torn, què paga i què no paga el prompt caching, i per què l’ordre del teu prompt decideix si la cache encerta o no —que resulta ser una segona raó, completament econòmica, per posar el material estable primer i el material variable al final.
Fonts i mètode
Enllaç a la secció: Fonts i mètodeEl bench i totes les taules es van produir amb Qwen/Qwen2.5-0.5B-Instruct sota descodificació greedy, així que es reprodueixen exactament. La documentació de Hugging Face sobre plantilles de xat és la referència del que els marcadors de plantilla del Capítol 11 expandeixen realment, i del fet que un model enviat amb la plantilla equivocada és un error real i recurrent. Per als efectes de posició i format a escala de producció més que d’escala de laboratori, les cites anteriors són les fonts primàries; les guies de prompting dels proveïdors són útils pels seus exemples i s’han de llegir sabent que cap d’elles publica un interval.
Referències
Enllaç a la secció: Referències-
Anthropic, Effective context engineering for AI agents (29 de setembre de 2025), per a la distinció prompt-versus-context utilitzada en aquest capítol i desenvolupada al Capítol 24. ↩
-
Zhao, Z., Wallace, E., Feng, S., Klein, D. and Singh, S. Calibrate Before Use: Improving Few-Shot Performance of Language Models. arXiv:2102.09690 (2021). Biaix d’etiqueta majoritària, de recència i de token comú, i per què la rotació al bench d’aquest capítol no és opcional. ↩
-
McNemar, Q. Note on the sampling error of the difference between correlated proportions or percentages. Psychometrika 12(2), pp. 153–157 (1947). Les comparacions parellades d’aquest capítol fan servir la forma binomial exacta en lloc de l’aproximació khi quadrat, perquè els recomptes discordants són petits. ↩
-
Liu, N. F. et al. Lost in the Middle: How Language Models Use Long Contexts. arXiv:2307.03172 (2023). Citat aquí per l’efecte de posició; mesurat a llargada al Capítol 24. ↩
-
Sclar, M., Choi, Y., Tsvetkov, Y. and Suhr, A. Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design. arXiv:2310.11324 (2023). Només separadors i espaiat mouen prou la precisió per reordenar classificacions de models. ↩
-
Brown, T. B. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). L’article que va introduir l’aprenentatge in-context com una capacitat i no com una curiositat; la secció 3 és la font del vocabulari zero-shot / one-shot / few-shot que ara fa servir tothom. ↩
-
Lu, Y., Bartolo, M., Moore, A., Riedel, S. and Stenetorp, P. Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786 (2021). El resultat reproduït a la taula few-shot de més amunt. ↩
-
Zhou, Y. et al. Large Language Models Are Human-Level Prompt Engineers. arXiv:2211.01910 (2022). Prompt engineering automàtic per proposta i puntuació. La instrucció tan citada «take a deep breath» ve de Yang, C. et al., Large Language Models as Optimizers, arXiv:2309.03409 (2023), que la va trobar per cerca en una tasca amb un model: una afirmació que no va sobreviure intacta al viatge cap als blogs. ↩ ↩2
-
Wei, J. et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903 (2022). ↩
-
Kojima, T., Gu, S. S., Reid, M., Matsuo, Y. and Iwasawa, Y. Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916 (2022). El resultat de «let’s think step by step», i val la pena llegir-lo per veure com d’estretes eren les condicions. ↩
-
Wang, X. et al. Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171 (2022). Mesurat amb el seu cost adjunt al Capítol 12. ↩
-
Khattab, O. et al. DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines. arXiv:2310.03714 (2023). ↩