加载中

构建自定义提示评估工作流程首先要创建一个可靠的提示,然后生成测试数据以查看其表现如何。让我们一起来设置一个评估系统,用于评估一个帮助用户编写 AWS 特定代码的提示。

设定目标

我们的提示需要协助用户为 AWS 用例编写三种特定类型的输出:

  • Python 代码
  • JSON 配置文件
  • 正则表达式

关键要求是,当用户请求帮助完成某项任务时,我们返回这些格式之一的干净输出,不带任何额外的解释、标题或页脚。

这是我们的初始提示模板:

python
prompt = f"""
Please provide a solution to the following task:
{task}
"""

创建评估数据集

评估数据集包含我们将输入到提示中以测试其性能的输入内容。在我们的案例中,我们需要一个 JSON 对象数组,其中每个对象都有一个描述我们希望 Claude 完成的任务的"task"属性。

您可以通过两种方式创建数据集:

  • 手动组装
  • 使用 Claude 自动生成

对于自动生成,使用像 Haiku 这样更快的模型是合理的,因为我们是在生成测试数据而不是生产输出。

使用代码生成测试数据

让我们构建一个函数,要求 Claude 为我们生成测试用例。该函数将创建一个全面的提示,请求特定类型的 AWS 相关任务。

这是核心函数结构:

python
def generate_dataset():
    prompt = """
    Generate an evaluation dataset for a prompt evaluation. The dataset will be used to evaluate prompts 
    that generate Python, JSON, or Regex specifically for AWS-related tasks. Generate an array of objects, 
    each representing task that requires Python, JSON, or a Regex to complete.
    
    Example output:
    ```json
    [
        \{
            "task": "Description of task",
        \},
        ...additional
    ]
    ```
    
    * Focus on tasks that can be solved by writing a single Python function, a single JSON object, or a single regex
    * Focus on tasks that do not require writing much code
    
    Please generate 3 objects.
    """

实现生成逻辑

为了从 Claude 获得干净的 JSON 输出,我们将使用预填充技术配合停止序列:

python
messages = []
add_user_message(messages, prompt)
add_assistant_message(messages, "```json")
text = chat(messages, stop_sequences=["```"])
return json.loads(text)

这种方法确保 Claude 以正确格式化的 JSON 开始其响应,并在结束的 markdown 围栏处停止。

测试并保存数据集

运行生成函数后,您应该会得到类似以下的真实测试用例:

  • 创建一个 Python 函数,从 ARN 中提取 AWS 区域
  • 为 AWS Lambda 函数编写 JSON 配置
  • 开发一个正则表达式来验证 AWS S3 存储桶名称

将生成的数据集保存到文件中以便重复使用:

python
dataset = generate_dataset()

with open('dataset.json', 'w') as f:
    json.dump(dataset, f, indent=2)

这会在您的笔记本目录中创建一个 dataset.json 文件,其中包含所有测试用例,可用于工作流程后续步骤中的提示评估。