Otimização do prompt do MLflow (beta)
Beta
Esse recurso está atualmente na versão beta.
O MLflow oferece a API mlflow.genai.optimize_prompts() , que permite melhorar automaticamente seus prompts usando métricas de avaliação e dados de treinamento. Este recurso permite melhorar a eficácia das respostas rápidas em qualquer estrutura de agentes, aplicando algoritmos de otimização de respostas rápidas, reduzindo o esforço manual e garantindo qualidade consistente.
O MLflow suporta o algoritmo de otimização GEPA através do GepaPromptOptimizer pesquisado e validado pela Equipe de Pesquisa Mosaic. A GEPA refina iterativamente os prompts usando reflexão orientada por LLMe feedback automatizado, resultando em melhorias sistemáticas e data-driven .
principais benefícios
- Aprimoramento automático : otimiza as mensagens com base em métricas de avaliação, sem necessidade de ajustes manuais.
- Otimização orientada por dados : Utiliza seus dados de treinamento e indicadores personalizados para orientar a otimização.
- Independente de framework : Funciona com qualquer framework de agente, oferecendo ampla compatibilidade.
- Otimização conjunta : Permite o refinamento simultâneo de múltiplas solicitações para obter o melhor desempenho geral.
- Avaliação flexível : Oferece suporte para avaliadores personalizados e função de agregação.
- Controle de versão : Registro automático de prompts otimizados no Registro de prompts MLflow .
- Extensível : Integre algoritmos de otimização personalizados estendendo a classe base.
Requisitos de versão
A API optimize_prompts requer MLflow >= 3.5.0 .
Exemplo de otimização de prompt
Consulte o tutorial Otimizar prompts para ver um exemplo simples de otimização de prompts.
A API gera um prompt aprimorado que apresenta melhor desempenho de acordo com seus critérios de avaliação.
Exemplo: Prompt simples → Prompt otimizado
Antes da otimização:
Answer this question: {{question}}
Após a otimização:
Answer this question: {{question}}.
Focus on providing precise,
factual information without additional commentary or explanations.
1. **Identify the Subject**: Clearly determine the specific subject
of the question (e.g., geography, history)
and provide a concise answer.
2. **Clarity and Precision**: Your response should be a single,
clear statement that directly addresses the question.
Do not add extra details, context, or alternatives.
3. **Expected Format**: The expected output should be the exact answer
with minimal words where appropriate.
For instance, when asked about capitals, the answer should
simply state the name of the capital city,
e.g., "Tokyo" for Japan, "Rome" for Italy, and "Paris" for France.
4. **Handling Variations**: If the question contains multiple
parts or variations, focus on the primary query
and answer it directly. Avoid over-complication.
5. **Niche Knowledge**: Ensure that the responses are based on
commonly accepted geographic and historical facts,
as this type of information is crucial for accuracy in your answers.
Adhere strictly to these guidelines to maintain consistency
and quality in your responses.
Para uma explicação completa, consulte a documentação do MLflow.
Uso avançado
Consulte o guia a seguir para casos de uso avançados.
Casos de uso comuns
As seções a seguir fornecem exemplos de código para casos de uso comuns.
Melhorar a precisão
Otimize as solicitações para produzir resultados mais precisos:
from mlflow.genai.scorers import Correctness
result = mlflow.genai.optimize_prompts(
predict_fn=predict_fn,
train_data=dataset,
prompt_uris=[prompt.uri],
optimizer=GepaPromptOptimizer(reflection_model="databricks:/databricks-gpt-5"),
scorers=[Correctness(model="databricks:/databricks-claude-sonnet-4-5")],
)
Otimize para segurança
Garantir que as saídas sejam seguras:
from mlflow.genai.scorers import Safety
result = mlflow.genai.optimize_prompts(
predict_fn=predict_fn,
train_data=dataset,
prompt_uris=[prompt.uri],
optimizer=GepaPromptOptimizer(reflection_model="databricks:/databricks-claude-sonnet-4-5"),
scorers=[Safety(model="databricks:/databricks-claude-sonnet-4-5")],
)
Solução de problemas
As seções a seguir fornecem orientações para a resolução de erros comuns.
Problema: A otimização está demorando muito.
Soluções : Reduzir o tamanho dataset ou reduzir o orçamento do otimizador:
# Use fewer examples
small_dataset = dataset[:20]
# Use faster model for optimization
optimizer = GepaPromptOptimizer(
reflection_model="databricks:/databricks-gpt-5-mini", max_metric_calls=100
)
Problema: Nenhuma melhoria observada
soluções : Verifique suas métricas de avaliação e aumente a diversidade dataset da seguinte forma:
- Garanta que os avaliadores meçam com precisão aquilo que é importante para você.
- Aumentar o tamanho e a diversidade dos dados de treinamento.
- Tente modificar as configurações do otimizador.
- Verifique se o formato dos resultados corresponde ao esperado.
Problema: Os prompts não estão sendo usados
soluções : Garanta predict_fn chamadas mlflow.entities.model_registry.PromptVersion.format:
# ✅ Correct - loads from registry
def predict_fn(question: str):
prompt = mlflow.genai.load_prompt(f"prompts:/{prompt_location}@latest)
return llm_call(prompt.format(question=question))
# ❌ Incorrect - hardcoded prompt
def predict_fn(question: str):
return llm_call(f"Answer: {question}")
Próximos passos
Para saber mais sobre a API, consulte Otimizar prompts (Beta).
Para saber mais sobre rastreamento e avaliação de aplicativos GenAI, consulte os artigos a seguir: