提示词优化

提示词优化实现了大语言模型(LLM)应用中提示词工程过程的自动化。传统的提示词工程依赖于手动“试错”:人工编写提示词,抽样检查几个输出,调整措辞,然后重复上述过程。提示词优化利用算法取代了这一模式,通过系统化分析训练数据上的表现、识别失败模式并生成改进的提示词变体,直到质量达到预期。

为什么要优化提示词?

手动提示词工程速度缓慢、不够一致且难以扩展。提示词优化解决了这些挑战:

手动猜测

问题:工程师根据直觉调整提示词并抽样检查少量输出,容易遗漏在大规模场景下才会出现的失败模式。

解决方案:优化器会在数百个示例上评估提示词,系统地发现并修复人工遗漏的问题。

结果不可复现

问题:没有记录尝试过哪些提示词变体、哪些有效或为什么要进行更改。当团队成员变动时,知识就会丢失。

解决方案:每次优化运行、提示词版本和指标都会在 MLflow 中进行跟踪,从而建立完整的审计追踪。

扩展到新任务

问题:一个拥有 10 个 LLM 功能的团队无法负担得起让工程师无限期地手动调整每个提示词。

解决方案:自动优化在几分钟到几小时内即可完成运行,并且可以在模型更改或需求演变时随时重新运行。

收益递减

问题:人工提示词工程师通常很快会达到瓶颈,无法识别那些能改善边缘情况的微妙指令更改。

解决方案:像 GEPA 这样的算法能够大规模分析失败模式,并为特定的边缘情况生成有针对性的改进建议。

提示词优化是如何工作的?

提示词优化器通过运行一种人工无法大规模复制的自动化循环来工作。与一人手动调整提示词并目测少量输出不同,优化器会根据数百个示例测试提示词,利用 LLM 分析出错原因,重写提示词以修复问题,并重复此过程。领先的优化器如 GEPA MIPROv2, SIMBA 以及 DSPy 都遵循同样的四步循环:

Optimization Loop
1
评估
2
分析失败原因
3
生成候选方案
4
选择并重复

如何实施提示词优化

MLflow 提供了一个统一的 提示词优化 API (mlflow.genai.optimize_prompts),它将 GEPA 和 DSPy 等优化器封装在同一个接口下,因此您无需更改代码即可尝试不同的算法。该过程与 MLflow 提示词注册表 (Prompt Registry) 紧密集成:您可以注册一个基础提示词,优化器会生成并测试改进的变体,然后将最佳结果保存为新的提示词版本。每次运行、指标和追踪都会自动记录,以便您可以跨版本比较性能、检查单个预测,并随时回滚到任何之前的提示词。

该工作流适用于任何代理框架(OpenAI Agents SDK LangChain, LangGraph, CrewAI 等)以及任何 LLM 提供商。您只需提供带有预期输出的训练数据,选择一种优化器算法,MLflow 即可处理剩余工作。

示例

以下示例使用 GEPA (无梯度估计提示词优化算法)来优化问答提示词。GEPA 在训练示例上评估当前提示词,分析失败模式,生成改进的变体,选择性能最佳的方案,并重复此过程直至收敛。

python
import mlflow
from mlflow.genai.optimize import GepaPromptOptimizer
from mlflow.genai.scorers import Correctness
# Register a base prompt in the MLflow Prompt Registry
base_prompt = mlflow.genai.register_prompt(
name="qa-prompt",
template=(
"Answer the question based on the context.\n\n"
"Context: {{ context }}\n"
"Question: {{ question }}\n\n"
"Answer:"
),
)
# Prepare training data with expected outputs
train_data = [
{
"inputs": {"context": "MLflow is an open source AI platform.",
"question": "What is MLflow?"},
"expectations": {"expected_response": "An open source AI platform"},
},
# ... more labeled examples (50-100 recommended)
]
# Run GEPA optimization
result = mlflow.genai.optimize_prompts(
predict_fn=my_predict_fn,
train_data=train_data,
prompt_uris=[base_prompt.uri],
optimizer=GepaPromptOptimizer(
reflection_model="openai:/gpt-5.2",
max_metric_calls=500,
),
# LLM judge that scores each candidate prompt's responses;
# the optimizer uses these scores as a reward signal
# to guide its search and identify prompt improvements
scorers=[Correctness()],
enable_tracking=True,
)
# Print the optimized prompt
optimized = mlflow.genai.load_prompt(result.optimized_prompts[0].uri)
print(optimized.template)

启用 enable_tracking=True 后,每次优化运行都会记录到 MLflow 中。您可以比较各次运行的评估分数,准确查看优化器如何改进了提示词,并随时回滚到任何之前的版本。

MLflow evaluation comparison showing pass rate improving from 46% to 60% after prompt optimization

MLflow 跟踪各提示词版本的性能结果,便于轻松比较。

MLflow prompt version comparison showing diff between base and optimized prompt

优化后的提示词在 MLflow 提示词注册表中进行版本控制,并具备完整的差异高亮显示。

MLflow 是最大的开源 面向代理、LLM 和机器学习模型的 AI 工程平台,月下载量超过 3000 万次。数以千计的组织使用 MLflow 来调试、评估、监控和优化生产级的 AI 代理和 LLM 应用,同时控制成本并管理对模型和数据的访问。在 Linux 基金会的支持下,并采用 Apache 2.0 许可,MLflow 提供自动提示词优化,且不存在厂商锁定。 立即开始 →

常见问题 (FAQ)

提示词优化是利用数据驱动算法改进 LLM 应用提示词的自动化过程,而非人工反复试错。优化器分析训练数据上的提示词表现,识别失败模式,并迭代生成改进后的提示词变体,直至质量收敛。

相关资源