操作说明

智能体 指令 为模型提供有关其应执行的操作的详细指导。这些指令以自然语言提供。

编写指令

指令可以包含以下任一内容:

根智能体的示例:

CURRENT CUSTOMER: {username}

You are the main Weather Agent coordinating multiple agents.
Your primary responsibility is to provide weather information.
Use {@TOOL: get_weather} ONLY for specific weather requests 
(for example, 'weather in London').

If you know the user's name, always greet them by their name.

You have specialized sub-agents:
  1. Greeting Agent: Handles simple greetings like 'Hi', 'Hello'.
  2. Farewell Agent: Handles simple farewells like 'Bye', 'See you'.

Analyze the user's query. 
If it's a greeting, call {@AGENT: Greeting Agent} 
If it's a farewell, call {@AGENT: Farewell Agent} 
If it's a weather request, handle it yourself using {@TOOL: get_weather} 

For anything else, respond appropriately or state you cannot handle it.

语法突出显示

当在指令编辑器中使用正确的语法({variable_name}、{@TOOL: tool_name} 或 {@AGENT: Agent Name})引用变量、工具或智能体时,系统会使用彩色“芯片”突出显示该引用,表明语法已被识别。

为了更轻松地插入这些引用,指令编辑器提供了两个快捷方式:

  • 输入“@”会打开一个上下文菜单,其中包含三个选项:智能体、工具或 变量。您可以使用箭头键和 Tab 键或 点击来浏览此菜单。选择一个选项后,系统会显示更多选项,直到引用完成,此时引用将变为芯片。
  • 输入“{”会打开一个上下文菜单,其中显示可供快速 插入的变量。

语言支持

在设计智能体提示和指令时,请始终使用英语,以便智能体能够以最高质量理解内容。 当智能体与用户互动时,它们能够检测最终用户输入的语言,并自动使用相同的语言进行回复,除非另有明确说明。

如果您希望智能体仅使用某些语言(或不使用某些语言)进行交流,则应添加说明支持的语言的指令。 例如,如果智能体应仅使用意大利语进行回复,您可以在指令中添加“您只会说意大利语,不会说其他语言”。

如需查看受支持的语言列表, 请参阅 语言参考。

重构指令

您可以使用自然语言输入指令,但如果使用 XML 结构设置指令格式,智能体的表现可能会更好,因为这有助于模型更好地遵循指令。 我们提供了一个包含标记的标准 XML 结构,您可以使用这些标记来构建指令结构。 输入自然语言指令后,您可以点击指令面板上方的重构指令 按钮,将指令格式设置为我们推荐的 XML 结构。

下表介绍了推荐的 XML 标记及其使用方法:

标记 说明
role 定义智能体的核心功能或职责。
persona 描述智能体的个性、语气和行为准则。
primary_goal 在 <persona> 中,指定智能体的主要目标。
constraints 列出智能体必须遵循的规则或限制。
taskflow 将对话流程概括为一系列子任务。
subtask 在 <taskflow> 中,对话流程的特定部分,包含一个或多个步骤。
step 在 <subtask> 中,包含触发条件和操作的单个步骤。
trigger 在 <step> 中,启动步骤的条件或用户输入。
action 在 <step> 中,当步骤被触发时,智能体应采取的操作。
examples 包含少样本示例,用于指导智能体在特定场景中的行为。

以下是使用我们推荐的 XML 结构的相同指令的示例:

CURRENT CUSTOMER: {username}

<role>The main Weather Agent coordinating multiple agents.</role>

<persona>
    <primary_goal>To provide weather information.</primary_goal>
    How to handle prohibited topics and violations: Respond appropriately or
    state inability to handle the request.
    General guidelines: Follow the constraints and task flow precisely.
</persona>

<constraints>
    1. Use {@TOOL: get_weather} ONLY for specific weather requests 
      (for example, 'weather in London').
    2. If the user's name is known (from the 'CURRENT CUSTOMER' context), always
      greet them by their name.
</constraints>

<taskflow>
    These define the conversational subtasks that you can take. Each subtask
    has a sequence of steps that should be taken in order.
    <subtask name="Initial Greeting">
        <step name="Check for Username and Greet">
            <trigger>Start of conversation or new user interaction.</trigger>
            <action>If a username is provided in the 'CURRENT CUSTOMER' context,
              greet the user by their name. Otherwise, proceed without a 
              personalized greeting.
            </action>
        </step>
    </subtask>
    <subtask name="Query Analysis and Routing">
        <step name="Analyze User Query">
            <trigger>User provides a query.</trigger>
            <action>Determine the intent of the user's query 
              (greeting, farewell, weather request, or other).
            </action>
        </step>
        <step name="Handle Greeting">
            <trigger>User query is identified as a simple greeting
              (e.g., 'Hi', 'Hello').
            </trigger>
            <action>Call {@AGENT: Greeting Agent}.</action>
        </step>
        <step name="Handle Farewell">
            <trigger>User query is identified as a simple farewell
              (e.g., 'Bye', 'See you').
            </trigger>
            <action>Call {@AGENT: Farewell Agent}.</action>
        </step>
        <step name="Handle Weather Request">
            <trigger>User query is identified as a specific weather request
              (e.g., 'weather in London').
            </trigger>
            <action>Use {@TOOL: get_weather} to retrieve weather information and
              provide it to the user.
            </action>
        </step>
        <step name="Handle Other Queries">
            <trigger>User query does not fall into greeting, farewell, or
              specific weather request categories.
            </trigger>
            <action>Respond appropriately to the query or state that the request
              cannot be handled.
            </action>
        </step>
    </subtask>
</taskflow>
<examples>
</examples>

内嵌少样本示例

少样本提示是一种技术,即向大语言模型 (LLM) 提供少量示例,以指导其行为、语气或逻辑。在智能体的上下文中,“内嵌少样本示例”是指将这些示例直接放置在智能体的指令中,而不是放在单独的界面窗格中。这种方法通过展示而非仅告知的方式帮助模型理解复杂的要求,从而弥合抽象指令和具体执行之间的差距。

何时使用少样本示例

少样本示例是强大的校准工具,但应有策略地使用。请考虑在以下场景中添加它们:

  • 解决质量问题:主要使用示例来修复模型始终误解指令的特定失败情况。
  • 复杂的格式设置:当智能体需要以非常具体、非标准的格式输出数据时。
  • 细致的逻辑:当“if-then”指令不足以捕捉决策过程的细微之处时。

最佳实践和警告

虽然少样本示例很有效,但应仔细整理,以避免降低智能体的性能。

  • 谨慎使用:添加过多示例可能会导致智能体“过拟合”,这意味着它可能会严格遵循示例,而失去对新的、未见过的用户查询进行泛化的能力。
  • 描述性而非详尽性:您无需列举每种可能的用户查询。示例旨在作为模型推理模式的指导,而不是作为查找数据库。
  • 从指令开始:始终先尝试使用清晰、描述性的指令解决行为问题。只有在单独使用指令无法达到预期结果时,才添加少样本示例。

少样本示例的组成部分

智能体的标准少样本示例由四个不同的组成部分组成,这些组成部分模拟了一轮对话。

组件 标记 / 语法 说明
用户 [user] 表示最终用户的输入或查询。
模型 [model] 表示智能体的文本回答或思考过程。
工具输入 tool_code 演示智能体应如何构建对外部工具或函数的输入或“调用”(例如,特定实参/语法)。
工具输出 tool_outputs 模拟工具返回的数据,教智能体如何在最终回答中解读和利用这些数据。

少样本示例应使用以下格式:

<examples>
  EXAMPLE 1:
  Begin example
  [user]
  What's the weather in London?
  [model]
  ```tool_code
  get_weather(location="London")
  ```
  ```tool_outputs
  {"temperature": "15 C", "condition": "Cloudy"}
  ```
  [model]
  The weather in London is 15 C and Cloudy.
  End example
</examples>

优化指令

您可以选择指令内容的一部分,然后系统会显示优化 按钮。 您可以点击此按钮,使用 AI 改进所选内容。 在要求 字段中,输入有关您希望如何改进所选内容的信息。

设置智能体回答的格式

您可以指示智能体如何设置文本回答的格式,以提高可读性。 以下是有关格式设置指令的最佳实践:

分块和空格

  • 切勿 编写密集的段落。用户会浏览,而不是阅读。
  • 将文本块限制为最多 1-2 个句子。
  • 在每个不同的想法之间插入换行符以创建空格。

有策略地加粗

  • 您必须加粗 最重要的数据点,以便它们立即突出显示。
  • 始终加粗:产品名称、价格、日期、 订单号和截止日期。
  • 示例:“经典 T 恤 的价格为 25.00 美元。”

列表优于文本

  • 如果您提及两个以上的项或步骤,请自动 将它们转换为项目符号列表或编号列表。
  • 对于选项,请使用标准项目符号 (-);对于指令,请使用编号列表 (1.) 。

全局指令

除了定义智能体专用指令外, 您还可以在 高级智能体应用设置中定义全局指令。

智能体应用中的每个智能体都会继承全局指令,并且对于每个对话轮次,系统都会将全局指令与智能体专用指令一起发送给模型。

全局指令非常适合每个智能体都需要了解的通用信息。 例如:品牌语气、一般“注意事项”、全局共享变量和客户个人资料。