示例

每个代理都应具有一个或多个样本。 这些示例是最终用户与代理应用之间的示例对话,包括代理应用执行的对话和操作。这些示例实际上是 LLM 的少数提示示例

控制台提供了一个用于输入操作的界面。

多语言代理应用

如果您希望代理应用处理多种语言,您的示例应使用每种语言。

输入摘要和输出摘要示例

除了输入和输出参数之外,代理还支持接收输入摘要和发出输出摘要,以便与其他代理交换信息。摘要有助于在代理之间传递抽象上下文信息,而参数则有助于在代理之间传递明确定义的结构化字段。参数是数据流和代理之间交换数据的唯一方式。

向样本添加相关的输入摘要,以调节代理,以根据运行时的输入摘要调整其操作。添加输出摘要,包括有关示例对话的相关准确详细信息,以便向代理显示哪些详细信息需要总结。

状态示例

在对话中的指定时刻,客服人员将处于以下状态之一:

  • OK:代理已成功实现其目标,控制权现在将转移给父级代理。
  • CANCELLED:用户决定不继续完成分配给代理的目标。 此控件现在将转移给父级代理。如果父级代理是 CX 流,则系统会在该流运行之前检测用户输入的意图。
  • FAILED:由于某些错误(例如工具返回 500 错误),代理无法继续完成目标。会话将结束,状态为“失败。响应中会添加一条 EndInteraction 消息。
  • ESCALATED:代理认为无法实现目标,并且需要将情况上报给人工处理。会话结束,状态将升级。 响应中会添加一条 EndInteraction 消息。
  • PENDING:对话仍在代理内继续。

顶级示例及其代理调用应使用与它们所引用的代理相对应的状态来表示。

选择策略

选择策略控制是否每个样本都包含在代理的提示中。

  • DEFAULT:如果提示接近词元限制,则可以省略此示例。
  • STATIC:始终包含示例。
  • NEVER:提示中从不包含该示例。该示例对代理的性能没有任何影响。

添加操作

代理中提供的示例由一系列操作组成。这些操作的组合可能有所不同,但它们主要描绘用户与代理之间的互动,以及为满足用户的查询或要求而在两者间执行的操作。

您可以通过以下两种方式向示例添加操作:

  • 要手动添加操作,请点击右侧窗格底部的 + 按钮,或将指针悬停在现有操作上时点击添加操作按钮。在点击 + 示例选项创建新示例时,或者修改现有示例时,您可以使用这些选项。

  • 要根据现有的代理说明自动生成操作,请在右侧窗格底部的输入用户输入字段中输入用户输入。您可以在创建或修改示例时使用此选项。或者,当您在运行时在右侧的 Preview agent 窗格中测试代理时使用此选项。如需从预览代理窗格中将操作保存到示例,请从预览代理窗格左侧的调用列表中选择代理调用,然后点击保存示例

请务必检查自动生成的操作是否正确,并在必要时进行修改。对于示例很少或没有示例的代理来说,这一点尤为重要。

代理支持以下类型的操作:

代理响应

代理对用户查询的响应。

用户输入

用户查询。

工具使用

这是一个 tool 调用,用于获取完成用户查询所需的其他信息。此操作应指定以下详细信息:

  • Tool(工具):应调用的工具的名称。
  • Action:应调用的 OpenAPI 工具的操作的名称。对于数据存储工具函数工具,操作名称与工具名称相同。
  • 工具输入:要包含在工具调用中的输入。这些信息通常来自上一次与用户进行的对话。

    对于 Open API 工具POSTPUTPATCH 方法类型需要 requestBody JSON。

    createPet 操作的 Open API 工具 requestBody 输入示例:

    {
      "id": 1,
      "name": "Luna"
    }
    

    对于数据存储区工具,示例 requestBody,其中查询为必需字段,其他字段为可选字段。

    {
      "query": "Where is my nearest store?",
      "filter": "country: ANY(\"United States\")",
      "userMetadata": {
        "userCity": "San Fransisco",
      },
      "fallback": "We don't have any stores in your area."
    }
    
  • 工具输出:工具调用的响应。这是该工具对给定输入的有效 JSON 响应。对于 Open API tools,此错误也可能是字符串错误(例如“404 Not found”)。

    listPets 操作的 Open API 工具输出示例:

    {
      "pets": [
        {
          "id": 1,
          "name": "Luna"
        },
        {
          "id": 2,
          "name": "Charlie"
        }]
    }
    

    数据存储工具输出示例:

    {
      "answer": "Here's the address to your nearest store ...",
      "snippets": [
        {
          "title": "San Fransisco Downtown",
          "uri": "https://www.example.com/San_Fransisco_Downtown",
          "text": "Address for San Fransisco Downtown .."
        }
      ]
    }
    

为确保代理在发生故障时不会发生故障,还应添加一些示例来说明当工具调用失败时代理应如何响应。Open API tool 调用失败可在工具输出中表示为错误字符串(“404 not found”)。对于数据存储工具fallback 输入可用于指定在没有汇总答案时如何响应。

如果您希望数据存储区工具在代理响应中包含 URI,请添加包含您希望代理用于响应的 URI 的示例。如果此 URI 来自数据存储区工具,则数据存储区工具输出应包含一个与代理响应中的 URI 相匹配的 URI。请注意,在这种情况下不能使用 fallback,因为这会使 LLM 代理无法重新表述数据存储区工具的回答,以将 URI 包含在代理响应中。

包含工具使用操作的示例可能非常详细,并会导致输入令牌限制消耗增加。为确保高效利用令牌,请确保工具输出简洁明了并包含与代理目标相关的信息。对于数据存储工具,请考虑移除样本中的代码段,因为它们可能会导致输入令牌消耗量较高。

代理调用

当代理应调用另一个代理来完成用户查询时,可以使用此操作。此操作应指定以下详细信息:

  • 代理 (Agent):要调用的代理的名称。
  • 代理调用输入摘要:前面对话中对被调用的代理有用的相关部分的摘要。
  • 输入参数 (Input parameters):要传递给代理的输入参数
  • 代理调用输出摘要:代理在达成目标时应生成的内容的摘要。
  • 输出参数:代理在达到目标时生成的输出参数