載入中

Generating test datasets

第 12 課15 分鐘

建立自訂提示評估工作流程,首先要建立一個穩健的提示,然後生成測試數據以查看其表現如何。讓我們一起來設定一個評估系統,用於協助使用者撰寫 AWS 專用程式碼的提示。

設定目標

我們的提示需要協助使用者撰寫三種特定類型的輸出,用於 AWS 使用案例:

  • Python 程式碼
  • JSON 配置檔案
  • 正規表達式

關鍵要求是,當使用者請求協助完成任務時,我們要以這些格式之一回傳乾淨的輸出,不含任何額外的說明、標頭或頁尾。

以下是我們的初始提示範本:

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

建立評估數據集

評估數據集包含我們將輸入到提示中以測試其效能的輸入內容。在我們的案例中,我們需要一個 JSON 物件陣列,其中每個物件都有一個「task」屬性,描述我們希望 Claude 完成的任務。

您可以用兩種方式建立數據集:

  • 手動組裝
  • 使用 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 檔案,其中包含您所有的測試案例,可在工作流程的後續步驟中用於提示評估。