Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Argomenti e strategie avanzati
Argomenti in questa pagina
Multi-objective ottimizzazione
Advanced Prompt Optimization accetta una metrica per esecuzione, un singolo punteggio scalare per campione. Tuttavia, supporta implicitamente l'ottimizzazione multi-obiettivo (multidimensionale): puoi raggruppare più obiettivi in un unico scalare (una metrica composita) e il servizio ottimizza il prompt rispetto a quel pacchetto. Questa sezione illustra i modelli che consigliamo, laddove ciascuno di essi è appropriato, e le modalità di errore a cui prestare attenzione.
Questo vale per tutti i settori verticali, ovunque ci si preoccupi di più di una cosa contemporaneamente: precisione + tono, correttezza dei comandi + sicurezza, fedeltà + concisione, compatibilità con la latenza + completezza e altro ancora.
Perché una metrica è in realtà multiobiettivo
Questo sistema funziona grazie a due fattori:
La metrica restituisce un singolo valore float per campione. Il ciclo di feedback di ottimizzazione legge questo scalare come segnale di ottimizzazione. È possibile calcolarlo partendo da un numero qualsiasi di punteggi secondari.
-
Entrambi i backend delle metriche aggregano già internamente i punteggi secondari.
Il LLM-as-a-Judge modello predefinito è classificato in base a tre dimensioni (precisione della risposta, completezza della risposta, qualità dell'espressione), assegna pesi ed emette un
Overallpunteggio singolo normalizzato a [0, 1]. I criteri personalizzati vengono uniti nello stesso scalare. Per ulteriori informazioni, consulta Personalizzato LLM-as-a-judge.Le metriche lambda/codice personalizzato restituiscono un numero e tu controlli il modo in cui viene calcolato, incluso qualsiasi insieme di sottoobiettivi.
Quindi «una metrica per corsa» è un contratto sulla forma del segnale, non un limite a ciò per cui è possibile ottimizzare.
Schemi per raggruppare più obiettivi in un'unica metrica
Scegline uno in base al modo in cui i tuoi obiettivi si relazionano tra loro.
Schema 1 - Somma ponderata (la più comune)
final = w₁·s₁ + w₂·s₂ + ... + wₖ·sₖ, con una somma dei pesi pari a 1.
Quando usarli: gli obiettivi sono più o meno indipendenti e puoi classificarli. Trade-offs sono accettabili: migliorarne uno a spese di un altro va bene purché la somma aumenti.
Scelta dei pesi:
Peso in base all'importanza per l'utente, non in base alla frequenza nel set di dati.
Inizia in modo grossolano:
0.5 / 0.3 / 0.2va bene. Non regolate eccessivamente i pesi: si tratta di un problema di ottimizzazione separato.
Esempio (uso dell'agente/dello strumento):
final = 0.5 * tool_correctness + 0.3 * answer_correctness + 0.2 * format_compliance
Schema 2: cancelli (critici per la sicurezza Hard-fail )
Definire uno o più obiettivi di gating. Se un cancello fallisce, il punteggio è 0 (o qualche piano) indipendentemente dal resto. Altrimenti, il punteggio è la somma ponderata degli obiettivi rimanenti.
if not safety_check_passed: return 0.0 if wrong_tool_called_for_destructive_action: return 0.0 return 0.6 * accuracy + 0.4 * tone
Quando utilizzarlo: almeno un obiettivo non è negoziabile (fuga di dati personali, modifica dell'account errato, rifiuto di contenuti proibiti). Usalo ogni volta che una richiesta «mediamente buona» non è accettabile se non viene visualizzata la barra di sicurezza anche occasionalmente.
Perché è meglio della semplice ponderazione: con i soli pesi, l'ottimizzatore può scambiare sicurezza con qualità e comunque scalare il punteggio. Un cancello rende impossibile il compromesso dovuto alla costruzione.
Schema 3 — Vincolo + ricompensa () Pareto-style
Scegli l'obiettivo più importante come ricompensa. Esprimi il resto come vincoli che, se violati, sottraggono alla ricompensa (anziché azzerarla).
reward = task_accuracy penalty = 0.0 if response_too_long: penalty += 0.1 if missed_required_disclosure: penalty += 0.2 return max(0.0, reward - penalty)
Quando usarlo: vuoi che sia un obiettivo primario a guidare, ma obiettivi secondari flessibili dovrebbero comunque dare forma al prompt. Meno fragili dei cancelli rigidi, meno ambigui delle somme ponderate.
Schema 4 — Lambda esterno, LLM-as-a-Judge interno (consigliato per miscele fuzzy + strutturali)
Una metrica Lambda calcola i punteggi secondari deterministici (regex, analisi JSON, convalida dello schema) e richiama una LLM-as-a-Judge sottovalutazione per le parti fuzzy (tono, fedeltà, utilità) all'interno della funzione Lambda. Quindi li aggrega in un unico scalare.
def compute_score(prompt, prediction, gold, ...): structural = grade_format_and_tools(prediction) # 0..1 from regex semantic = call_llm_judge(prediction, gold, criteria) # 0..1 from LLMJ if structural < 1.0 and is_safety_critical(prompt): return 0.0 return 0.6 * semantic + 0.4 * structural
Quando usarlo: i tuoi obiettivi combinano «codice facile da testare» (formati, nomi degli strumenti, lunghezza, presenza di citazioni) con «necessità di un modello da giudicare» (tono, fedeltà, disponibilità). Spesso è più semplice che chiedere a un LLM-as-a-Judge prompt di produrre una singola partitura composita, perché le parti deterministiche non si spostano da una riga all'altra.
Schema 5 — Multi-dimension LLM-as-a-Judge (senza Lambda)
Usa il LLM-as-a-Judge flusso integrato, opzionalmente con uno customLLMJConfig.customLLMJPrompt che definisce le tue dimensioni e il tuo peso. Il giudice emette punteggi per dimensione e un valoreOverall; il sistema analizza Overall (o calcola la media delle dimensioni se Overall mancano) in uno scalare [0, 1].
Quando usarlo: tutti i tuoi obiettivi sono semantici/confusi e non hai controlli secondari deterministici. Il più veloce da scrivere. Fai attenzione alla varianza del giudizio: riesegui lo stesso set di dati due volte e verifica la stabilità del punteggio prima di affidarti a esso come segnale di ottimizzazione.
Scelta di un modello
| # | Hai... | Utilizzo |
|---|---|---|
| 1 | 2—4 obiettivi sfocati, tutti semantici | Schema 5 (multidimensionale) LLM-as-a-Judge |
| 2 | 2—4 obiettivi che mescolano struttura e semantica | Schema 4 (Lambda esterno + interno) LLM-as-a-Judge |
| 3 | Almeno un criterio non negoziabile safety/correctness | Pattern 2 (hard-fail gate): combinalo con 1 o 4 |
| 4 | Un obiettivo primario chiaro + preferenze soft | Schema 3 (vincolo + ricompensa) |
| 5 | Diversi obiettivi indipendenti all'incirca uguali | Schema 1 (somma ponderata) |
È possibile combinare i modelli. Una tipica metrica di produzione è «somma ponderata + un limite assoluto sulla sicurezza».
Modalità di guasto da tenere d'occhio
Premia l'hacking su Surface Form. Se il tuo punteggio secondario è «la risposta contiene la parola «sicuro», l'ottimizzatore scriverà dei prompt che impongono «sicuro» in ogni output. Preferisci i punteggi secondari basati sui risultati (nome dello strumento, valore dello slot, validità strutturale) rispetto alla presenza di parole chiave.
Judge Drift. Una LLM-as-a-Judge metrica multidimensionale i cui pesi variano a seconda della chiamata (perché viene chiesto al giudice di sceglierli) fornisce un segnale di ottimizzazione rumoroso. Inserisci i pesi nei tuoi criteri personalizzati o sposta la ponderazione delle dimensioni nel codice Lambda.
Il punteggio composito è saturo. Se la metrica raggiunge velocemente 0,95 e rimane invariata, i punteggi secondari sono troppo indulgenti. Restringi le rubriche; valuta la possibilità di aumentare la soglia massima (ad esempio, il credito parziale diventa 0 anziché 1) in modo che l'ottimizzatore abbia margine di manovra.
Sub-objectives conflitto diretto. «Concisione» vs. «completezza» è un vero compromesso. Lo schema a somma ponderata seleziona un punto operativo su quella frontiera; se non ti piace, cambia i pesi.
Pre-launch lista di controllo
Calcola la metrica nel prompt iniziale sull'intero set di dati e controlla le medie per dimensione, non solo quelle scalari. Se una dimensione è già satura, valuta la possibilità di eliminarla dal pacchetto.
Spot-check 5 campioni a mano. Il verdetto della metrica corrisponde al tuo giudizio? In caso contrario, correggi la metrica prima di ottimizzare il prompt.
Ottimizzazione dei prompt a più turni e in più fasi
L'ottimizzazione avanzata dei prompt ottimizza un singolo modello di prompt rispetto alle valutazioni per campione. Non è nativamente sensibile ai turni: non può iterare su una finestra di dialogo o ottimizzare il comportamento in un turno specifico in modo nativo. Un prompt graduale è un modello di prompt in cui una conversazione o un flusso di lavoro a più turni riutilizza lo stesso prompt in più turni e il prompt stesso contiene istruzioni per ogni fase, passaggio o fase del flusso di lavoro. Per ottimizzare questi prompt, riduci lo stato della finestra di dialogo nelle variabili di input del modello, incorpora le istruzioni di sistema che desideri perfezionare e analizza le curve che ti promptTemplate interessano davvero con risposte di riferimento per campione.
Questo modello è indipendente dalla verticale. Si applica ovunque un modello venga richiamato ripetutamente in un contesto in crescita: flussi di assistenza clienti, cicli di utilizzo degli strumenti agentici, ragionamento in più fasi, tutoraggio, turni di assistente al codice, controllo qualità basato sui documenti, flussi di lavoro di triage e altro ancora.
Cosa ottimizza effettivamente Advanced Prompt Optimization
Input: una
promptTemplatestringa con{{placeholder}}variabili.Per esempio: ognuna
evaluationSamples[i]fornisce i valori per quelle variabili e unreferenceResponse. L'ottimizzatore esegue l'inferenza, la valutazione, il feedback e la riscrittura in modo indipendente per campione, quindi aggrega la metrica tra i campioni.Produzione: raffinata
promptTemplate. Le variabili, il set di dati e la metrica sono input fissi; cambia solo il modello.
Tutto ciò che desideri ottimizzare deve vivere all'interno di se stesso. promptTemplate Le cose che variano a seconda del campione (la cronologia delle conversazioni, la richiesta corrente dell'utente, il contesto recuperato) sono{{variables}}. Le istruzioni di sistema che desideri perfezionare fanno parte del modello: non sono mai una variabile di input, altrimenti il servizio non ha nulla da riscrivere.
Se desideri che il servizio migliori il comportamento alla curva N, esprimi il turno N come prompt plus-input-variables renderizzate per un campione, indicando l'output del modello Turn-N desiderato. referenceResponse
Pattern A — (iniziatore consigliato) Stage-at-a-time
Ottimizza una fase della finestra di dialogo alla volta. Ogni campione di valutazione rappresenta un singolo punto decisionale all'interno di quella fase.
Una «fase» qui è tutto ciò che si può descrivere con una serie coerente di criteri di successo. Esempi per verticale:
Agentico/uso dello strumento: turno di formazione del piano, turno di selezione degli strumenti, turno di interpretazione dei risultati degli strumenti, turno della risposta finale.
Assistenza clienti: ricezione, verifica, azione, conferma, chiusura.
Tutoraggio/formazione: valutare le conoscenze, spiegare il concetto, verificare la comprensione, riassumere.
QA del documento: risposta basata sul recupero, chiarimento successivo, turno di citazione.
Assistente alla codifica: chiarimento delle specifiche, generazione di codice, scrittura del codice, test. review/fix
Quando usare il Pattern A
È possibile denominare fasi distinte con criteri di successo distinti.
Una fase consiste nel ridurre la qualità e si desidera correggerla senza disturbare gli altri.
Desiderate un'iterazione rapida e un segnale di feedback preciso e debuggabile.
Forma del modello
Le istruzioni di sistema specifiche della fase vengono inserite nel modello (questo è ciò che il servizio riscrive). Solo la cronologia delle conversazioni e il turno corrente sono variabili. La struttura seguente è illustrativa, non prescritta. Usa i delimitatori o il layout che il tuo modello gestisce meglio. Gli unici requisiti sono: (a) le istruzioni di sistema da ottimizzare sono contenute all'interno del modello e (b) le variabili per campione sono indicate come. {{variablename}}
You are an assistant in the {STAGE_NAME} phase of a multi-turn task. - ...the policy / goals / format / tool-use rules for this phase... - ...constraints the model must satisfy at this point in the conversation... Conversation so far: {{conversation_so_far}} User's current message: {{user_query}}
Forma del campione
{ "inputVariables": [ {"conversation_so_far": "user: ...\nassistant: ...\n... (turns 1..N-1)"}, {"user_query": "...the user input that triggers this stage..."} ], "referenceResponse": "...the assistant output that satisfies the stage's success criteria..." }
Pro e contro
Vantaggi: segnale di feedback preciso, prompt più piccoli, esecuzioni di ottimizzazione più rapide, più facile creare una metrica mirata.
Contro: non rileva variazioni tra le fasi; il servizio verrà eseguito una volta per fase e potrebbe essere necessario un test di integrazione finale.
Schema B — Conversazione completamente appiattita (avanzata)
Ottimizza un unico prompt monolitico di grandi dimensioni che contiene l'intera policy in più fasi. Ogni esempio è la finestra di dialogo completa fino al turno di una sonda.
Quando usare Pattern B
Il tuo prompt di produzione è già monolitico e non vuoi dividerlo.
Volete che l'ottimizzatore veda come i turni precedenti impostano i turni successivi, in modo che le riscritture preservino il flusso tra le fasi.
La correttezza al turno della sonda dipende dal contesto costruito nelle varie fasi (ad esempio, «alla svolta N, è necessario già fare riferimento ai fatti giusti» o «deve essere già stato richiamato lo strumento giusto»).
Forma del modello
Il prompt di sistema completamente monolitico e multifase si trova letteralmente all'interno del modello. Il servizio riscrive questo corpo durante l'ottimizzazione. La cronologia e la svolta attuale rimangono variabili. Scegliete un layout che il vostro modello gestisca correttamente; i requisiti sono solo che le istruzioni da ottimizzare facciano parte del modello e che si faccia riferimento ai dati per campione. {{name}}
You are an assistant for {TASK}. The conversation may proceed through phases: 1. {PHASE_1} — ... 2. {PHASE_2} — ... 3. {PHASE_3} — ... (...the entire multi-phase policy, tool-use rules, tone, formatting, refusal rules...) Conversation so far (turns 1..N-1, with role tags): {{conversation_so_far}} User's current message: {{user_query}}
Forma del campione (sonda a qualsiasi angolo N)
{ "inputVariables": [ {"conversation_so_far": "user: ...\nassistant: ...\n[tool_call: X(...)]\n... (turns 1..N-1)"}, {"user_query": "...the user input at turn N..."} ], "referenceResponse": "...desired assistant output at turn N..." }
Perché il Pattern B può funzionare meglio del Pattern A
L'ottimizzatore rileva la progressione delle fasi
conversation_so_far, quindi il feedback sull'ottimizzazione può ragionare su più fasi contemporaneamente.Un singolo prompt ottimizzato viene implementato senza dover unire più prompt ottimizzati, riducendo la post-elaborazione per te.
Avvertenze per il modello B
Stocasticità nei turni precedenti. I turni dell'assistente alla produzione potrebbero non corrispondere sempre
conversation_so_faresattamente a quelli in scatola. Considera la cronologia predefinita come la traiettoria prevista; in produzione, la deriva nelle curve precedenti può invalidare l'ottimizzazione. Usa immagini rappresentative e reali delle conversazioni piuttosto che percorsi felici sintetizzati.Costo del token. Le storie lunghe aumentano il costo di inferenza per prova. Il servizio esegue molti candidati × esempi × iterazioni. Stabilisci il budget di conseguenza e considera di limitarlo ai K turni più recenti, oltre a un riepilogo se il costo è il collo di bottiglia.
Bias di risposta di riferimento.
referenceResponsedovrebbe essere quello che direbbe un assistente corretto vista quella storia. Se la risposta di riferimento è troppo restrittiva (solo una frase accettabile), l'ottimizzatore si adatta eccessivamente. Preferisci una metrica che valuti i risultati (nome dello strumento, valori degli slot, decisione) rispetto alla corrispondenza tra superficie e forma, ove possibile.
Tool-call verifica in un momento specifico
Il servizio vede l'output di testo dell'assistente. Per valutare «il modello ha chiamato lo strumento X con gli args corretti alla curva N», scegline uno:
Convenzione nell'output: chiedi all'assistente di emettere un token strutturato
<tool>X(arg=...)</tool>e di valutarlo con l' regex/JSON analisi in una metrica Lambda. Il più economico, il più affidabile.LLM-as-a-Judge criteri personalizzati: fornisci una domanda
customLLMJPromptche chieda al giudice: «La risposta (a) nomina lo strumentoX, (b) include argomentiarg, (c) corrisponde alla formulazione richiestaY?» Ogni controllo secondario è +1; aggregato. Facile da scrivere, maggiore varianza.Metrica lambda con simulazione a valle: se disponi di un cablaggio per l'esecuzione degli strumenti, esegui l'output del modello e valuta gli effetti collaterali osservati. Massima fedeltà, massima configurazione.
Per criteri compositi basati su più turni o su più controlli secondari (correttezza, tono e completezza dello strumento), consulta la sezione. Multi-objective ottimizzazione
Percorso consigliato
Inizia con il Pattern A sul palco che danneggia maggiormente la qualità. Ottieni una metrica funzionante, un set di dati di 20-50 esempi e un'ottimizzazione completa. Questo convalida il set di dati e la metrica prima di investire nella più ampia serie di Pattern B.
Quindi esegui Pattern B una volta con il prompt monolitico completo e una metrica composita multiobiettivo per rilevare le regressioni tra fasi che il Pattern A può sfuggire.
Iterate il set di dati prima della richiesta di iterazione. Se il servizio riscrive la metrica in salita ma il comportamento di produzione non migliora, la metrica o il set di dati possono spesso essere il problema.
Quando non utilizzare Advanced Prompt Optimization per più turni
Bug relativi alla politica di dialogo/stato-macchina (logica di transizione a fasi errate): una semplice riscrittura del prompt non può risolvere il problema. Correggi prima il livello di orchestrazione.
Schemi degli strumenti errati: il servizio non modificherà le definizioni degli strumenti. Può modificare solo il prompt che chiede al modello di utilizzarli.
Alterna tra cronologia predefinita e cronologia dal vivo: se le conversazioni reali divergono notevolmente dai campioni di valutazione dopo alcuni turni, il segnale di ottimizzazione del Pattern B è debole. In questo caso, oltre allo stato ideale, può essere utile acquisire tracce di produzione reali e accettabili per i cicli di ottimizzazione.
Il comportamento richiesto dipende dallo stato privato che l'ottimizzatore non vede mai (ad esempio, i dati degli account utente che il modello apprende solo tramite le chiamate agli strumenti): rendi esplicito tale stato nel
conversation_so_farcampione della sonda o accetta che il servizio possa solo regolare il comportamento della superficie.
Lista di controllo iniziale
Scegli i turni della sonda che ti interessano. Ognuno diventa uno o più campioni.
Decidi il modello A o B (o entrambi: prima A, poi B).
Crea più di 20 campioni rappresentativi con
referenceResponsevalori realisticiconversation_so_fare puliti.