

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 選擇性最佳化
<a name="advanced-prompt-optimization-selective"></a>

根據預設，進階提示最佳化會end-to-end重寫整個提示範本的任何部分。透過選擇性最佳化，您可以控制最佳化工具可以修改的提示區段。當您的提示較大或複雜，且部分區段已經過妥善調校時，請使用選擇性最佳化。這可讓您僅改善仍然需要運作的部分。

## 標籤語法
<a name="advanced-prompt-optimization-selective-tags"></a>

使用 `advpo:`（進階提示最佳化） 命名空間以預留 XML 樣式標籤標註您的提示範本，以控制最佳化範圍：
+ `<advpo:optimize>...</advpo:optimize>` – 將區段標記為要最佳化的焦點區域。最佳化工具會重寫這些標籤內的內容。
+ `<advpo:exclude>...</advpo:exclude>` – 將區段標記為凍結。最佳化工具在任何情況下都不會修改這些標籤中的內容。

`advpo:` 命名空間字首可防止與已將類似 XML 的標記用於其他用途的提示發生衝突。

## 最佳化工具如何決定要重寫的內容
<a name="advanced-prompt-optimization-selective-modes"></a>

最佳化工具的行為取決於您的提示範本中存在的標籤。


| 存在的標籤 | Behavior (行為) | Mode | 
| --- | --- | --- | 
| 無標籤 | 整個提示是最佳化end-to-end（與目前行為相同） | 傳統模式 | 
| 至少一個 `<advpo:optimize>` | 最佳化工具只會重寫`<advpo:optimize>`區塊內的內容。所有未標記的內容都會保留。 | 明確包含模式 | 
| 僅限`<advpo:exclude>`標籤 （無 `<advpo:optimize>`) | 最佳化工具會重寫不在`<advpo:exclude>`區塊內的所有項目 | 僅限排除模式 | 
| 兩種標籤類型都存在 | 套用明確包含模式。最佳化工具只會重寫`<advpo:optimize>`內容。最佳化工具接受`<advpo:exclude>`標籤，但將其視為備援。 | 明確包含模式 | 

**提示**  
您不需要這兩種標籤類型。如果您在 中包裝焦點區域`<advpo:optimize>`，則會自動保留所有其他項目。您不需要為要保留的內容新增`<advpo:exclude>`標籤。`<advpo:exclude>` 僅在沒有`<advpo:optimize>`標籤時使用 。它會凍結特定區段，同時最佳化其他所有區段。

## 範例
<a name="advanced-prompt-optimization-selective-examples"></a>

下列範例示範如何使用 `<advpo:optimize>`和 `<advpo:exclude>`標籤來控制最佳化工具重寫的提示範本中的哪些區段。

**Example 使用 advpo：optimize 以專注於一個區段**  <a name="advanced-prompt-optimization-selective-ex-optimize"></a>
在此範例中，只會最佳化投訴-回應指示。最佳化工具會完全按照寫入的方式保留身分陳述式和政策限制。  

```
You are a helpful customer service agent for Acme Corp. Always be polite and professional.

<advpo:optimize>When responding to a complaint, acknowledge the customer's frustration, summarize the issue, and propose exactly one concrete resolution. Use bullet points for clarity.</advpo:optimize>

Never disclose internal pricing or employee information.
```

**Example 使用 advpo：exclude 凍結特定區段**  <a name="advanced-prompt-optimization-selective-ex-exclude"></a>
在此範例中，身分陳述式和政策限制條件會凍結。其他一切 （投訴-回應指示） 都已最佳化。  

```
<advpo:exclude>You are a helpful customer service agent for Acme Corp. Always be polite and professional.</advpo:exclude>

When responding to a complaint, acknowledge the customer's frustration, summarize the issue, and propose exactly one concrete resolution. Use bullet points for clarity.

<advpo:exclude>Never disclose internal pricing or employee information.</advpo:exclude>
```

**Example 多個最佳化區塊**  <a name="advanced-prompt-optimization-selective-ex-multiple"></a>
您可以標記多個非連續區段以進行最佳化。最佳化工具可以重寫任何或所有。  

```
You are a technical support assistant for CloudWidget.

<advpo:optimize>When diagnosing an issue, ask clarifying questions about the customer's environment before suggesting solutions.</advpo:optimize>

Always check the knowledge base before escalating.

<advpo:optimize>When providing a solution, include step-by-step instructions with numbered steps. End with a verification step the customer can perform.</advpo:optimize>

Never share internal ticket IDs with customers.
```

**Example 空白最佳化區塊以產生內容**  <a name="advanced-prompt-optimization-selective-ex-empty"></a>
空白`<advpo:optimize>`區塊會指示最佳化工具在該位置產生和插入新的提示內容。  

```
You are a helpful assistant that summarizes documents.

{{document}}

<advpo:optimize></advpo:optimize>

Respond in plain English. Keep your summary under 200 words.
```

## 與預留位置變數的互動
<a name="advanced-prompt-optimization-selective-variables"></a>

下列規則說明預留位置變數如何與選擇性最佳化標籤互動。
+ **內的變數`<advpo:exclude>`：**執行時間仍會取代執行時間`{{variableName}}`的 等變數。排除適用於其周圍的範本文字 –「不重寫此範本文字」不表示「不取代變數」。
+ **內的變數`<advpo:optimize>`：**變數預留位置會保留為預留位置。最佳化工具會重寫周圍的指示，但保持`{{variableName}}`參考完整。
+ **執行時間變數值內的標籤：**最佳化工具會忽略這些標籤。在變數替換之前，標籤剖析只會發生在範本上。這可防止透過使用者提供的輸入值注入最佳化指令。

## 驗證規則
<a name="advanced-prompt-optimization-selective-validation"></a>

下列組態會導致驗證錯誤。


| 無效的組態 | 錯誤 | Resolution | 
| --- | --- | --- | 
| 巢狀標籤 （例如，在 `<advpo:optimize>`內`<advpo:exclude>`，或反之亦然） | ValidationException | 移除巢狀。在範本中的任何指定位置僅使用一種標籤類型。 | 
| 格式不正確或未關閉的標籤 （例如`<advpo:optimize>`，沒有關閉標籤） | ValidationException | 確保每個開啟標籤都有相符的關閉標籤。 | 
| `advpo:` 命名空間中的錯誤標籤 （例如 `<advpo:optmize>`) | ValidationException | 檢查 `optimize`和 的拼寫`exclude`。進階提示最佳化會驗證開啟和關閉標籤。 | 

## 輸出行為
<a name="advanced-prompt-optimization-selective-output"></a>

在任務結束時傳回的最佳化提示中，最佳化工具會分割所有 `<advpo:optimize>`和 `<advpo:exclude>` 標籤。您會收到無任何最佳化標記的乾淨提示。`<advpo:exclude>` 區塊內的內容 （以及明確包含模式中的未標記內容） 會保持不變。`<advpo:optimize>` 區塊內的內容包含最佳化工具的重寫版本。

## 其他行為
<a name="advanced-prompt-optimization-selective-edge-cases"></a>

下表說明最佳化工具如何處理其他案例。


| 案例 | Behavior (行為) | 
| --- | --- | 
| 多個`<advpo:optimize>`區塊 | 所有 都符合最佳化的資格。最佳化工具可以重寫任何或所有。 | 
| 多個`<advpo:exclude>`區塊 | 所有`<advpo:exclude>`標籤中的所有內容都會凍結。 | 
| 空白`<advpo:optimize>`區塊 | 有效。最佳化工具會在該位置產生和插入新內容。 | 
| 僅限空格的`<advpo:optimize>`區塊 | 將相同 視為空白區塊。 | 
| 空白`<advpo:exclude>`區塊 | 已忽略 （無操作）。沒有要凍結的內容。 | 
| 標籤分割句子中字或中字片語 | 允許。最佳化工具會在已標記的內容上以單位形式運作。最佳化工具可能會發出警告。 | 

## 最佳實務
<a name="advanced-prompt-optimization-selective-best-practices"></a>

使用選擇性最佳化時，請遵循這些最佳實務。
+ **從`<advpo:optimize>`標籤開始。**明確包含模式是最直覺的 – 您會標記想要改善的項目，其他項目保持不變。
+ **保持最佳化區塊獨立。**在每個區塊內放置完整的說明或邏輯區段。允許分割中音，但可能產生尷尬的結果。
+ **當您的提示已進行部分調校時，請使用選擇性最佳化。**如果您已調整安全限制條件或輸出格式指示，請將其凍結，讓最佳化工具專注於仍然需要運作的區段。
+ **結合多迴轉模式。**在單體多階段提示中 （請參閱[最佳化多迴轉和暫存提示](advanced-prompt-optimization-advanced-topics.md#advanced-prompt-optimization-multi-turn))，使用 僅`<advpo:optimize>`鎖定需要改進的階段指示，同時保持對話處理樣板的凍結狀態。