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

主题可以在代码编辑器中编写和编辑,该编辑器支持使用 YAML,代表“YAML Ain't Markup Language”。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. 测试面板中,通过询问一个与象棋相关的问题来测试代理,例如“骑士是如何移动的?”