View a markdown version of this page

选择性优化 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择性优化

默认情况下,高级提示优化会端到端地重写整个提示模板的任何部分。通过选择性优化,您可以精确控制优化器可以修改提示的哪些部分。当您的提示很大或很复杂,并且某些部分已经调整得很好时,请使用选择性优化。这样,您就可以只改进仍需要加工的部分。

标签语法

使用advpo:(高级提示优化)命名空间为提示模板添加保留 XML-style 标签以控制优化范围:

  • <advpo:optimize>...</advpo:optimize>— 将某一部分标记为优化的焦点区域。优化器会重写这些标签内的内容。

  • <advpo:exclude>...</advpo:exclude>— 将分区标记为已冻结。在任何情况下,优化器都不会修改这些标签内的内容。

advpo:命名空间前缀可防止与已将 XML-like 标记用于其他目的的提示发生冲突。

优化器如何确定要重写的内容

优化器的行为取决于提示模板中存在哪些标签。

标签存在

行为

Mode

无标签

整个提示经过端到端优化(与当前行为相同)

传统模式

至少一个 <advpo:optimize>

优化器仅重写区块内的<advpo:optimize>内容。所有未加标签的内容都将被保留。

显式包含模式

只有<advpo:exclude>标签(没有<advpo:optimize>

优化器会重写所有不在块内的内容 <advpo:exclude>

Exclusion-only 模式

两种标签类型都存在

显式包含模式适用。优化器仅<advpo:optimize>重写内容。优化器接受<advpo:exclude>标签,但将其视为冗余标签。

显式包含模式

提示

您不需要这两种标签类型。如果将焦点区域包裹起来<advpo:optimize>,其他所有区域都会自动保留。您无需在要保留的内容周围添加<advpo:exclude>标签。<advpo:exclude>仅在没有<advpo:optimize>标签时使用。它会冻结特定部分,同时优化其他所有部分。

示例

以下示例说明如何使用<advpo:optimize><advpo:exclude>标签来控制优化器重写提示模板的哪些部分。

例使用 advpo: optimize 专注于一个部分

在此示例中,仅对投诉回复说明进行了优化。优化器完全按照写入的方式保留标识语句和策略约束。

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.
例使用 advpo: exclude 冻结特定部分

在此示例中,身份声明和策略约束被冻结。其他所有内容(投诉回复说明)均已优化。

<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>
例多个优化模块

您可以标记多个不连续的部分以进行优化。优化器可以重写其中的任何或全部。

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.
例用于生成内容的优化块为空

<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.

与占位符变量的交互

以下规则描述了占位符变量如何与选择性优化标签交互。

  • 内部变量<advpo:exclude>运行时仍然会像运行{{variableName}}时一样替换变量。排除适用于它们周围的模板文本—— “不要重写此模板文本” 并不意味着 “不要替换变量”。

  • 内部变量<advpo:optimize>变量占位符保留为占位符。优化器会重写周围的指令,但保持{{variableName}}引用完好无损。

  • 运行时变量值内的标签:优化器会忽略这些标签。标签解析仅在模板上进行,然后再进行变量替换。这样可以防止通过用户提供的输入值注入优化指令。

验证规则

以下配置会导致验证错误。

配置无效

错误

解决方案

嵌套标签(例如<advpo:exclude><advpo:optimize>内部或相反)

ValidationException

移除嵌套。在模板中的任何给定位置仅使用一种标签类型。

格式错误或未封闭的标签(例如,没有结束<advpo:optimize>标记)

ValidationException

确保每个开头标签都有匹配的结束标签。

advpo:命名空间中的标签拼写错误(例如,)<advpo:optmize>

ValidationException

检查optimize和的拼写exclude。高级提示优化可验证开始和结束标记。

输出行为

在作业结束时返回的优化提示中,优化器会删除所有<advpo:optimize><advpo:exclude>标记。您会收到一个没有任何优化标记的干净提示。<advpo:exclude>区块内的内容(以及显式包含模式下的未加标签的内容)保持不变。<advpo:optimize>区块内的内容包含优化器的重写版本。

其他行为

下表描述了优化器如何处理其他方案。

场景

行为

多个<advpo:optimize>方块

所有人都有资格进行优化。优化器可以重写其中的任何或全部。

多个<advpo:exclude>方块

所有<advpo:exclude>标签内的所有内容都被冻结。

<advpo:optimize>方块

有效。优化器在该位置生成并插入新内容。

Whitespace-only <advpo:optimize>阻止

处理方式与空方块相同。

<advpo:exclude>方块

已忽略(无操作)。没有要冻结的内容。

标签将句子分成中间词或中间短语

允许。优化器将标记的内容作为一个单元进行操作。优化器可能会发出警告。

最佳实践

使用选择性优化时,请遵循以下最佳实践。

  • <advpo:optimize>标签开始。显式包含模式是最直观的——你可以标记你想要改进的内容,其他一切都保持不变。

  • 保持优化区块的独立性。在每个区块中放置完整的指令或逻辑部分。允许在句子中间拆分,但可能会产生尴尬的结果。

  • 当您的提示已经部分调整时,请使用选择性优化。如果您已经调整了安全约束条件或输出格式指令,请将其冻结,以便优化器将重点放在仍需要处理的部分。

  • 与多回合模式相结合。在单片多阶段提示中(参见优化多回合和分阶段提示),仅用于定位<advpo:optimize>需要改进的阶段指令,同时保持对话处理样板冻结。