使用代码编辑器编写和编辑主题中的 YAML

主题可以在支持 YAML 的代码编辑器中编写和编辑。 YAML 代表“YAML 不是标记语言”。YAML 通常用于编写配置文件,并且比 XML 或 JSON 更容易阅读。 YAML 文件使用 .yaml 或者 .yml 文件扩展名。 您可以通过空格和缩进来格式化 YAML 文件,以表示数据结构,例如字符串、数字、布尔值、列表和字典。

要通过主题访问代码编辑器,请在工具栏上选择 () 更多,然后选择打开代码编辑器

观看此视频,了解如何在代码编辑器中使用 YAML:

重要提示

任何制作者都可以使用代码编辑器探索主题的配置。 开发人员和高级用户可以选择在代码编辑器中设计和编辑。 请注意,在代码编辑器中进行修改时需谨慎。 标点或语法错误可能导致复杂的错误信息,甚至中断当前对话。 我们的技术支持团队无法协助排查或修复代码编辑器中的错误。 如果您是 YAML 修订新手,请务必在进行任何更改之前复制该主题

何时使用代码编辑器

Copilot Studio 无需你手动从头编写 YAML。 相反,当您在主题画布上创建对象时,会自动生成 YAML。 然后您可以在代码编辑器中查看配置,更好地了解这些设置,也可以选择更改 YAML。 以下是代码编辑器的示例用例:

  • 代码编辑器显示主题的完整配置,而无需与主题中的各个对话元素进行交互。 它是显示主题中所有设置的一站式服务。
  • 制作者可以选择从主题中复制特定节点并粘贴到其他主题中,而不是使用复制粘贴图标。 这可能比选择一个配置的多个节点更容易。
  • 制作者可以选择在 YAML 中更新 Power Automate 流 ID,而无需等待同步到“调用与操作”菜单。
  • 问题节点或消息节点相似时,制作者可以选择克隆并修改它们。 但是,在这种情况下,确保所有 ID 和变量保持唯一至关重要。 记得修改克隆的 ID,使其成为唯一的 ID。
  • 制作者可能会选择在代码编辑器中进行简单修改,例如将术语附加到主题短语,因为输入或复制粘贴到 YAML 代码中通常更高效。

在代码编辑器中了解 YAML

下图显示了一个典型的 YAML 代码块示例。

下图显示了代码编辑器中的示例 YAML 代码块的屏幕截图。

下面是代码如何应用到画布上显示的相应主题。

  • 第 1 行:主题类型。
  • 行 2-3:指示对话推进主题的开始。
  • 第 7 行:表示生成式答案节点。
  • 第 9 行:相关变量。
  • 第 11-12 行:提示及特殊说明的详细信息。
  • 第 20-26 行:知识来源链接。
  • 第 28-32 行:条件组: 每个条件都有一个唯一的 ID,并包含该条件的公式详情和重定向。

在代码编辑器中测试 YAML

若要测试此代码,请在 Copilot Studio 中完成以下步骤:

  1. 创建智能体。

  2. 进入智能体的设置页面,选择生成式 AI,然后选择生成式

  3. 转到主题页面,选择系统,然后选择对话推进主题。

  4. 打开代码编辑器。

  5. 用以下 YAML 示例代码替换现有代码。

     kind: AdaptiveDialog
     beginDialog:
      kind: OnUnknownIntent
      id: main
      priority: -1
      actions:
        - kind: SearchAndSummarizeContent
          id: search-content
          userInput: =System.Activity.Text
          variable: Topic.Answer
          moderationLevel: Medium
          additionalInstructions: Include emojis to make responses more fun.
          publicDataSource:
            sites:
              - "www.chessusa.com/"
              - "www.chess.com/"
              - "www.lichess.org/"
    
          sharePointSearchDataSource: {}
    
        - kind: ConditionGroup
          id: has-answer-conditions
          conditions:
            - id: has-answer
              condition: =!IsBlank(Topic.Answer)
              actions:
                - kind: EndDialog
                  id: end-topic
                  clearTopicQueue: true
    
  6. 选择保存并关闭代码编辑器。

  7. 测试面板中,通过询问一个与象棋相关的问题来测试智能体,例如“骑士是如何移动的?”