As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tópicos e estratégias avançadas
Tópicos nesta página
Multi-objective otimização
O Advanced Prompt Optimization aceita uma métrica por execução — uma única pontuação escalar por amostra. No entanto, ele suporta implicitamente a otimização multiobjetivo (multidimensional): você pode agrupar vários objetivos em um escalar (uma métrica composta) e o serviço otimiza o prompt em relação a esse pacote. Esta seção aborda os padrões que recomendamos, quando cada um é apropriado e os modos de falha a serem observados.
Isso se aplica a todas as verticais — em qualquer lugar em que você se preocupe com mais de uma coisa ao mesmo tempo: precisão + tom, precisão da chamada de ferramenta + segurança, fidelidade + concisão, facilidade de latência + integridade e muito mais.
Por que uma métrica é, na verdade, multiobjetivo
Dois fatos sobre o sistema fazem isso funcionar:
A métrica retorna um único valor flutuante por amostra. O ciclo de feedback de otimização lê esse escalar como o sinal de otimização. Você pode computá-lo a partir de qualquer número de subpontuações abaixo do capô.
-
Ambos os back-ends de métricas já agregam subpontuações internamente.
O LLM-as-a-Judge modelo padrão avalia em três dimensões (precisão da resposta, integridade da resposta, qualidade da expressão), atribui pesos e emite uma única
Overallpontuação normalizada para [0, 1]. Os critérios personalizados são mesclados no mesmo escalar. Para obter mais informações, consulte Personalizado LLM-as-a-judge.As métricas Lambda/código personalizado retornam um número e você controla como ele é calculado, incluindo qualquer composição de subobjetivos.
Portanto, “uma métrica por execução” é um contrato sobre o formato do sinal, não um limite para o que você pode otimizar.
Padrões para agrupar vários objetivos em uma única métrica
Escolha um com base em como seus objetivos se relacionam entre si.
Padrão 1 — Soma ponderada (mais comum)
final = w₁·s₁ + w₂·s₂ + ... + wₖ·sₖ, com pesos totalizando 1.
Quando usar: Os objetivos são praticamente independentes e você pode classificá-los. Trade-offs são aceitáveis — melhorar um em detrimento do outro é bom, desde que a soma aumente.
Escolhendo pesos:
Peso por importância para o usuário, não por frequência no conjunto de dados.
Comece grosseiramente:
0.5 / 0.3 / 0.2está bem. Não ajuste demais os pesos — esse é um problema de otimização separado.
Exemplo (agente/uso de ferramentas):
final = 0.5 * tool_correctness + 0.3 * answer_correctness + 0.2 * format_compliance
Padrão 2 — Hard-fail portões (críticos para a segurança)
Defina um ou mais objetivos de bloqueio. Se algum portão falhar, a pontuação é 0 (ou algum andar), independentemente do resto. Caso contrário, a pontuação é a soma ponderada dos objetivos restantes.
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 usar: pelo menos um objetivo não é negociável (vazamento de PII, conta errada modificada, recusa de conteúdo proibido). Use isso sempre que um aviso “bom em média” for inaceitável se falhar na barra de segurança, mesmo que ocasionalmente.
Por que isso é melhor do que apenas pesar: apenas com pesos, o otimizador pode trocar segurança por qualidade e ainda aumentar a pontuação. Um portão impossibilita a troca por construção.
Padrão 3 — Restrição + recompensa () Pareto-style
Escolha o objetivo mais importante como recompensa. Expresse o resto como restrições que, quando violadas, subtraem da recompensa (em vez de zerá-la).
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 usar: você quer que um objetivo principal lidere, mas objetivos secundários flexíveis ainda devem moldar o prompt. Menos frágeis que portas rígidas, menos ambíguas que somas ponderadas.
Padrão 4 — Lambda externa, LLM-as-a-Judge interna (recomendada para misturas difusas e estruturais)
Uma métrica Lambda calcula subpontuações determinísticas (regex, análise JSON, validação de esquema) e chama uma LLM-as-a-Judge subavaliação para as partes difusas (tom, fidelidade, utilidade) dentro da função Lambda. Em seguida, ele os agrega em um escalar.
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 usar: Seus objetivos combinam “fácil de testar em código” (formatos, nomes de ferramentas, tamanho, presença de citações) com “necessidades de um modelo para julgar” (tom, fidelidade, utilidade). Isso geralmente é mais limpo do que pedir que uma LLM-as-a-Judge única pontuação composta produza uma única pontuação composta, porque as partes determinísticas não mudam de corrida para corrida.
Padrão 5 — Multi-dimension LLM-as-a-Judge (sem Lambda)
Use o LLM-as-a-Judge fluxo incorporado, opcionalmente com um customLLMJConfig.customLLMJPrompt que defina suas próprias dimensões e peso. O juiz emite pontuações por dimensão e umOverall; o sistema analisa Overall (ou calcula a média das dimensões, se estiverem Overall faltando) em um escalar [0, 1].
Quando usar: Todos os seus objetivos são semânticos/difusos e você não tem subverificações determinísticas. O mais rápido para escrever. Observe a variância do juiz — execute novamente o mesmo conjunto de dados duas vezes e verifique a estabilidade da pontuação antes de confiar nela como sinal de otimização.
Escolhendo um padrão
| # | Você tem... | Use |
|---|---|---|
| 1 | 2—4 objetivos difusos, todos semânticos | Padrão 5 (multidimensional LLM-as-a-Judge) |
| 2 | 2—4 objetivos misturando estrutura e semântica | Padrão 4 (Lambda externa+interna) LLM-as-a-Judge |
| 3 | Pelo menos um critério não negociável safety/correctness | Padrão 2 (porta de falha rígida) — combine com 1 ou 4 |
| 4 | Um objetivo primário claro + preferências flexíveis | Padrão 3 (restrição + recompensa) |
| 5 | Vários objetivos independentes aproximadamente iguais | Padrão 1 (soma ponderada) |
Você pode combinar padrões. Uma métrica de produção típica é “soma ponderada + um limite absoluto de segurança”.
Modos de falha a serem observados
Recompense o hacking em uma superfície. Se sua subpontuação for “a resposta contém a palavra 'claro'”, o otimizador escreverá solicitações que forçarão “certeza” em cada saída. Prefira subpontuações baseadas em resultados (nome da ferramenta, valor do slot, validade estrutural) em vez da presença de palavras-chave.
Juiz drift. Uma LLM-as-a-Judge métrica multidimensional cujos pesos variam por chamada (porque o juiz deve escolhê-los) fornece um sinal de otimização ruidoso. Fixe os pesos em seus critérios personalizados ou mova a ponderação da dimensão para o código Lambda.
A pontuação composta satura. Se a métrica atingir 0,95 rapidamente e permanecer lá, suas subpontuações serão muito brandas. Limite as rubricas; considere aumentar a barra máxima (por exemplo, o crédito parcial se torna 0 em vez de 1) para que o otimizador tenha espaço livre.
Sub-objectives conflito direto. “Concisão” versus “integridade” é uma verdadeira troca. O padrão de soma ponderada escolhe um ponto operacional nessa fronteira; se você não gostar, altere os pesos.
Pre-launch lista de verificação
Calcule a métrica na solicitação inicial em todo o conjunto de dados e inspecione as médias por dimensão, não apenas o escalar. Se uma dimensão já estiver saturada, considere retirá-la do pacote.
Spot-check 5 amostras à mão. O veredicto da métrica corresponde ao seu julgamento? Caso contrário, corrija a métrica antes de otimizar o prompt.
Otimizando solicitações em vários turnos e em etapas
O Advanced Prompt Optimization otimiza um único modelo de prompt em relação às avaliações por amostra. Ele não tem reconhecimento de turnos nativo — ele não pode iterar em uma caixa de diálogo ou otimizar o comportamento em um turno específico de forma nativa. Uma solicitação em etapas é um modelo de solicitação em que uma conversa ou fluxo de trabalho em vários turnos reutiliza a mesma solicitação em turnos, e a solicitação em si contém instruções para cada estágio, etapa ou fase do fluxo de trabalho. Para otimizar essas solicitações, ajuste o estado da caixa de diálogo às variáveis de entrada do modelo, incorpore as instruções do sistema que você deseja refinar e teste promptTemplate as curvas que realmente lhe interessam com respostas de referência por amostra.
Esse padrão é agnóstico vertical. Ele se aplica em qualquer lugar em que um modelo é invocado repetidamente com um contexto crescente: fluxos de atendimento ao cliente, ciclos de uso de ferramentas agentes, raciocínio em várias etapas, tutoria, turnos de assistentes de código, controle de qualidade baseado em documentos, fluxos de trabalho de triagem e muito mais.
O que a Advanced Prompt Optimization realmente otimiza
Entrada: uma
promptTemplatestring com{{placeholder}}variáveis.Por amostra: cada
evaluationSamples[i]uma fornece valores para essas variáveis ereferenceResponsea. O otimizador executa inferência, avalia, dá feedback e reescreve de forma independente por amostra e, em seguida, agrega a métrica entre as amostras.Saída: Um refinado
promptTemplate. As variáveis, o conjunto de dados e a métrica são entradas fixas; somente o modelo muda.
Tudo o que você quiser otimizado deve estar dentro de promptTemplate si mesmo. Coisas que variam de acordo com a amostra (o histórico da conversa, a consulta atual do usuário, o contexto recuperado) são{{variables}}. As instruções do sistema que você deseja refinar fazem parte do modelo — nunca são uma variável de entrada, ou o serviço não tem nada para reescrever.
Se você quiser que o serviço melhore o comportamento na curva N, expresse a curva N como as variáveis de solicitação mais entrada renderizadas para uma amostra, sendo a saída desejada do modelo Turn-N. referenceResponse
Padrão A — Stage-at-a-time (iniciador recomendado)
Otimize uma fase do diálogo por vez. Cada amostra de avaliação representa um único ponto de decisão dentro dessa fase.
Um “estágio” aqui é tudo o que você pode descrever com um conjunto coerente de critérios de sucesso. Exemplos por vertical:
Uso agêntico/de ferramentas: giro de formação do plano, giro de seleção de ferramentas, giro de interpretação do resultado da ferramenta, giro de resposta final.
Suporte ao cliente: entrada, verificação, ação, confirmação, encerramento.
Tutoria/educação: avaliar o conhecimento, explicar o conceito, verificar a compreensão, resumir.
Controle de qualidade do documento: resposta baseada na recuperação, esclarecimento de acompanhamento, troca de citação.
Assistente de codificação: esclarecimento de especificações, geração de código, gravação de código e teste. review/fix
Quando usar o Padrão A
Você pode nomear fases distintas com critérios de sucesso distintos.
Uma fase é reduzir a qualidade e você deseja corrigi-la sem incomodar os outros.
Você quer uma iteração rápida e um sinal de feedback estreito e depurável.
Forma do modelo
As instruções do sistema específicas do estágio são incorporadas ao modelo (é isso que o serviço reescreve). Somente o histórico da conversa e o turno atual são variáveis. A estrutura abaixo é ilustrativa, não prescrita. Use qualquer delimitador ou layout que seu modelo manipule melhor. Os únicos requisitos são: (a) as instruções do sistema que você deseja otimizar estão dentro do modelo e (b) as variáveis por amostra são referenciadas como. {{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 da amostra
{ "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..." }
Prós e contras
Prós: sinal de feedback rígido, solicitações menores, execuções de otimização mais rápidas e mais facilidade de criar uma métrica focada.
Contras: Não percebe a diferença entre os estágios; você executará o serviço uma vez por estágio e talvez precise de um teste final de integração.
Padrão B — Conversa totalmente achatada (avançada)
Otimize um grande prompt monolítico que possui toda a política de vários estágios. Cada amostra é a caixa de diálogo completa até um giro da sonda.
Quando usar o Padrão B
Seu prompt de produção já é monolítico e você não quer dividi-lo.
Você quer que o otimizador veja como os turnos anteriores configuram os turnos posteriores, para que suas regravações preservem o fluxo entre estágios.
A exatidão no turno da sondagem depende do contexto construído em todos os estágios (por exemplo, “no turno N, os fatos certos já devem ser referenciados” ou “a ferramenta certa já deve ter sido chamada”).
Forma do modelo
O prompt monolítico completo do sistema multifásico fica literalmente dentro do modelo. O serviço reescreve esse corpo durante a otimização. O histórico e o turno atual permanecem variáveis. Escolha qualquer layout que seu modelo manipule bem; os requisitos são apenas que as instruções a serem otimizadas façam parte do modelo e que os dados por amostra sejam referenciados. {{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 da amostra (sonda em qualquer curva 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..." }
Por que o Padrão B pode funcionar melhor do que o Padrão A
O otimizador vê a progressão do estágio
conversation_so_far, então o feedback de otimização pode ser refletido em todos os estágios ao mesmo tempo.Um único prompt otimizado é implantado sem unir vários prompts de estágio otimizados, reduzindo o pós-processamento para você.
Advertências para o Padrão B
Estocasticidade em turnos anteriores. Os turnos do assistente de produção nem sempre correspondem
conversation_so_farexatamente aos enlatados. Trate o histórico acumulado como a trajetória esperada; na produção, desvios em turnos anteriores podem invalidar a otimização. Use capturas de conversas representativas e reais em vez de caminhos felizes sintetizados.Custo do token. Custo de inferência por tentativa de balão de histórias longas. O serviço executa muitos candidatos × amostras × iterações. Faça um orçamento adequado e considere truncar para as curvas K mais recentes, além de um resumo se o custo for o gargalo.
Viés de resposta de referência.
referenceResponsedeveria ser o que um assistente correto diria, dada essa história. Se sua resposta de referência for muito restrita (somente uma frase aceitável), o otimizador se ajustará demais a ela. Prefira uma métrica que classifique os resultados (nome da ferramenta, valores do slot, decisão) em vez da correspondência da forma da superfície, sempre que possível.
Tool-call verificação em um turno específico
O serviço vê a saída de texto do assistente. Para avaliar “o modelo chamou a ferramenta X com os argumentos corretos na curva N”, escolha uma:
Convenção na saída: faça com que o assistente emita um token estruturado como
<tool>X(arg=...)</tool>e avalie com regex/JSON análise em uma métrica Lambda. Mais barato, mais confiável.LLM-as-a-Judge critérios personalizados: forneça um
customLLMJPromptque pergunte ao juiz: “A resposta (a) nomeia a ferramentaX, (b) inclui argumentosarg, (c) corresponde ao texto exigidoY?” Cada subverificação é +1; agregada. Fácil de criar, mais variação.Métrica Lambda com simulação downstream: se você tiver um equipamento de execução de ferramentas, execute a saída do modelo por meio dele e avalie os efeitos colaterais observados. Maior fidelidade, maior configuração.
Para critérios compostos em vários turnos ou várias subverificações (exatidão, tom e integridade da ferramenta), consulte a seção. Multi-objective otimização
Caminho recomendado
Comece com o Padrão A no palco que mais prejudica a qualidade. Obtenha uma métrica funcional, um conjunto de dados de 20 a 50 amostras e uma execução de otimização de ponta a ponta. Isso valida seu conjunto de dados e sua métrica antes de você investir na execução maior do Padrão B.
Em seguida, execute o Padrão B uma vez com o prompt monolítico completo e uma métrica composta multiobjetivo para capturar regressões entre estágios que o Padrão A pode perder.
Repita o conjunto de dados antes de iterar o prompt. Se o serviço reescrever e escalar sua métrica, mas o comportamento de produção não melhorar, a métrica ou o conjunto de dados geralmente podem ser o problema.
Quando não usar a Otimização Avançada de Prompt para várias voltas
Política de diálogo/bugs da máquina de estado (lógica de transição de estágio errada): uma reescrita simples do prompt não pode corrigir isso. Corrija primeiro a camada de orquestração.
Esquemas de ferramentas errados: o serviço não alterará as definições da ferramenta. Ele só pode alterar o prompt que solicita que o modelo os use.
Alterne entre o histórico predefinido e o histórico ao vivo: se as conversas reais divergirem muito de suas amostras de avaliação após alguns turnos, o sinal de otimização do Padrão B é fraco. Capturar traços de produção reais aceitáveis para execuções de otimização pode ajudar aqui, além do estado ideal.
O comportamento necessário depende do estado privado que o otimizador nunca vê (por exemplo, dados da conta do usuário que o modelo só aprende por meio de chamadas de ferramentas): torne esse estado explícito na
conversation_so_faramostra da sonda ou aceite que o serviço só pode ajustar o comportamento da superfície.
Lista de verificação inicial
Escolha as curvas da sonda que você gosta. Cada uma se torna uma ou mais amostras.
Decida o Padrão A ou B (ou ambos — A primeiro, depois B).
Crie mais de 20 amostras representativas com
referenceResponsevalores realistasconversation_so_fare claros.