加载中

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

迭代改进流程

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

在本教程系列中,我们将以一个实际示例进行操作:创建一个提示,根据运动员的身高、体重、身体目标和饮食限制生成一日膳食计划。

搭建评估流水线

该评估使用了前几个模块中流水线的改进版本,封装在一个 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 分,但这为您提供了一个清晰的基线,可以据此进行改进。

接下来做什么

在建立了基线之后,您现在可以系统地应用提示工程技术,例如更加具体、添加输出格式要求、使用结构化提示以及实施多样本示例。每种技术都应该能提升您的评估分数,让您朝着目标取得可衡量的进展。