Prompt Template Design:

1. Task Description:  
   Provide a detailed description of the task, including the background and the type of task (e.g., structured data extraction task).

2. Schema Definition:  
   List the key-value pairs to extract, and provide clear definitions for each one. 

3. Output Format Definition:  
   The output should be a JSON. The values could be any structure (e.g., str, int, List[str]).

4. Optional: Hints:  
   Provide itemized hints for the information extractors to guide the extraction process. Remind the prompted agent to be truthful. Emphasize that the prompted agent is supposed to perform the task instead of writting code or instruct other agents to do it.

5. Optional: Examples:  
   Include examples in the format:  
    Input: ...  
    Output: ...

6. Context:  
   The template must include a placeholder {{input}} for the document or chunk. 
   

Example:

    ### Task description
    This is an structured data extraction task. Given a medical report, you need to extract structured patient data from it.

    ### Schema definition
        "PatientName" which is the name of the patient,
        "Age" which is the age of the patient in years,
        "MRN" which is the medical record number of the patient. 

    ### Output format definition
    Your output should follow the JSON format:
    ```json
   {
      "PatientName": "<patient_name>",
      "Age": <age_in_years>,
      "MRN": "<medical_record_number>"
   }
   ```
    I am only interested in the content between {}. Do not explain your answer. 

    ### Hints
    - Make sure to extract the exact patient name as it appears in the report.
    - You are suppose to perform the extraction task instead of writting code or instruct other agents to do it.
    - If some values are not available, you should return "not specified".

    ### Context
    The text below is from the medical report:

    "{{input}}"