提示工程是指将您已经编写的提示进行改进,以获得更可靠、更高质量的输出。这个过程包括编写初始提示、评估其表现,然后系统地应用工程技术逐步改进它。

迭代改进流程
该方法遵循一个清晰的循环:设定目标、编写初始提示、评估它、应用一种提示工程技术,然后重新评估以验证性能是否提升。随着您不断完善提示,这个循环会反复进行。

在本教程系列中,我们将以一个实际示例进行操作:创建一个提示,根据运动员的身高、体重、身体目标和饮食限制生成一日膳食计划。
搭建评估流水线
该评估使用了前几个模块中流水线的改进版本,封装在一个 PromptEvaluator 类中,该类负责处理数据集生成和模型评分。该类支持并发以加快评估过程:
python
evaluator = PromptEvaluator(max_concurrent_tasks=5)从较低的并发值(例如 3)开始,以避免速率限制错误。您可以根据自己的 API 配额进行调整。
生成测试数据
generate_dataset 方法会为您的提示创建测试用例。您需要指定:
- 一个任务描述,说明您的提示应该做什么
- 您的提示所需输入的规范
- 要生成的测试用例数量
以膳食计划示例为例:
python
dataset = evaluator.generate_dataset(
task_description="Write a compact, concise 1 day meal plan for a single athlete",
prompt_inputs_spec={
"height": "Athlete's height in cm",
"weight": "Athlete's weight in kg",
"goal": "Goal of the athlete",
"restrictions": "Dietary restrictions of the athlete"
},
num_cases=3
)编写初始提示
从一个简单、朴素的提示开始,以建立基线。run_prompt 函数接收测试用例的输入,并应返回模型的响应:
python
def run_prompt(prompt_inputs):
prompt = f"""
What should this person eat?
- Height: {prompt_inputs["height"]}
- Weight: {prompt_inputs["weight"]}
- Goal: {prompt_inputs["goal"]}
- Dietary restrictions: {prompt_inputs["restrictions"]}
"""
messages = []
add_user_message(messages, prompt)
return chat(messages)运行评估
评估过程会将您的提示输出与预期标准进行比较。您可以添加额外的标准来指导评分:
python
results = evaluator.run_evaluation(
run_prompt_function=run_prompt,
dataset_file="dataset.json",
extra_criteria="""
The output should include:
- Daily caloric total
- Macronutrient breakdown
- Meals with exact foods, portions, and timing
"""
)分析结果
评估会生成一个 output.html 文件,您可以在浏览器中打开它。该报告显示了每个测试用例的详细结果,包括分数、推理过程以及您的提示生成的实际输出。

不要因为初始分数较低而气馁——这是预料之中的!在这个示例中,初始提示的得分仅为 10 分中的 2.3 分,但这为您提供了一个清晰的基线,可以据此进行改进。
接下来做什么
在建立了基线之后,您现在可以系统地应用提示工程技术,例如更加具体、添加输出格式要求、使用结构化提示以及实施多样本示例。每种技术都应该能提升您的评估分数,让您朝着目标取得可衡量的进展。