載入中

提示工程是指將您已撰寫的提示加以改進,以獲得更可靠、更高品質的輸出。這個過程包括撰寫初始提示、評估其表現,然後系統性地逐步應用工程技術來改進它。

迭代改進流程

這個方法遵循一個清晰的循環:設定目標、撰寫初始提示、評估它、應用提示工程技術,然後重新評估以驗證表現是否有所提升。這個循環會隨著您不斷優化提示而重複進行。

在這個教學系列中,我們將以一個實際範例來進行:建立一個提示,根據運動員的身高、體重、體能目標和飲食限制,生成一日餐食計畫。

設定評估流程

此評估使用了先前模組中流程的改進版本,並封裝在一個 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 分,但這為您提供了一個清晰的基準線,讓您可以從此開始改進。

接下來呢

在建立好基準線之後,您現在可以系統性地應用提示工程技術,例如更具體地描述、新增輸出格式要求、使用結構化提示,以及實作多範例(multi-shot)示範。每種技術都應該能提升您的評估分數,讓您朝著目標取得可衡量的進展。