构建自定义提示评估工作流程首先要创建一个可靠的提示,然后生成测试数据以查看其表现如何。让我们一起来设置一个评估系统,用于评估一个帮助用户编写 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 文件,其中包含所有测试用例,可用于工作流程后续步骤中的提示评估。