在全新 Copilot Studio 中不使用主题(Topics)来编排对话
📢 本文同步发布於公众号:Power Platform · 最佳实践
🔗 原文链接:https://www.matthewdevaney.com/how-to-orchestrate-chat-without-topics-in-new-copilot-studio/
在全新 Copilot Studio 中不使用主题(Topics)来编排对话
无广告、无废话,只有 Power Platform 干货。
在全新的 Copilot Studio 体验中,你可以仅使用代理指令(Agent Instructions)和代理技能(Agent Skills)来编排基于聊天的对话。之所以需要这样做,是因为我们无法再使用主题(Topics)来为这些新代理构建结构化对话。取而代之的是,我们可以在代理的指令中定义核心对话模式,并为仅在特定条件下才会触发的对话路径创建技能。
引言:餐厅服务员代理(Restaurant Crew Member Agent)
餐厅服务员代理负责为一家快餐店接单。顾客可以通过与该代理聊天来选择菜单项,代理会计算总价并下单。
在 Copilot Studio 中编写指令来编排对话
打开 Copilot Studio,创建一个名为 Restaurant Crew Member Agent 的新代理。
全新的 Copilot Studio 体验不包含主题(Topics)。因此,我们无法通过添加主题来编排对话会话。相反,我们必须使用代理指令来完成这一任务。代理指令应包含对代理角色的简要描述、按顺序排列的基本对话步骤,以及整个对话过程中必须遵循的通用规则。
将以下指令复制并粘贴到代理中。
与代理聊天以测试核心指令
要测试初始指令,请转到预览选项卡并开始与代理聊天。代理应该能够将菜单项添加到订单中,询问顾客是否还需要其他东西,并计算最终总价。
如果对话没有按预期进行,请返回代理指令进行修改,然后重新测试。请注意,设计代理的对话模式是一个迭代过程。
将餐厅菜单上传到 SharePoint
餐厅菜单信息存储在一个 JSON 文件中,你可以从 Github 下载该文件。菜单数组中的每个对象代表一个单独的菜单项,并包含以下属性:
- id:菜单项的唯一标识符
- name:菜单项的名称
- description:菜单项的简要描述
- price:菜单项的价格
- category:菜单项所属的类别(如汉堡、饮料、小食等)
- variant_type(可选):如果菜单项有多个变体(如大小杯),则标识变体的类型
一些菜单项(如饮料)具有多个变体。例如,顾客可以点小杯、中杯或大杯可口可乐,每种规格的价格各不相同。
具有变体的菜单项包含 variant_type 属性(对于可口可乐来说就是“规格”),以及一个包含以下属性的变体数组:
- variant_name:变体的名称(如小杯、中杯、大杯)
- variant_price:该变体的价格
创建一个名为 Restaurant Menu 的新 SharePoint 文档库,并上传 RestaurantMenu.json 文件。
从 SharePoint 获取餐厅菜单文件内容
通常情况下,我们会使用知识(Knowledge)将 SharePoint 文档库连接到代理。但在本例中,我们处理的是一个基于文本的文件。因此,我们将添加一个新工具。
添加 SharePoint – Get File Content Using Path 工具。
“Get file content using path” 工具会出现在菜单中。选择该工具以打开工具详情菜单。
将该工具重命名为 Get Restaurant Menu。
将 Site Address 设置为 Restaurant Menu 文档库的 URL 值。
然后将 File Path 设置为 RestaurantMenu.json 的路径(包括文件夹名称)。
创建技能(Skills)来处理特定对话路径
由于我们无法使用主题来定义条件对话路径,因此需要使用技能(Skills)来实现。技能允许代理在满足特定条件时执行特定任务。
技能 1:计算订单总价
创建一个名为 Calculate Order Total 的技能。该技能将负责计算顾客订单的总价,包括任何适用的税费和折扣。
技能 2:处理特殊请求
创建一个名为 Handle Special Requests 的技能。该技能将处理顾客的特殊请求,例如“多加芝士”或“不要生菜”等。
测试完整的代理体验
完成上述所有配置后,回到预览选项卡,测试完整的代理体验。尝试以下操作:
- 点一个汉堡和一杯饮料
- 询问总价
- 提出一个特殊请求(如“不要洋葱”)
- 完成下单
代理应该能够无缝处理所有这些对话路径,而无需使用任何主题(Topics)。
总结
在全新的 Copilot Studio 体验中,虽然我们不再拥有主题(Topics)功能,但通过巧妙地结合代理指令(Agent Instructions)、代理技能(Agent Skills)和工具(Tools),我们仍然可以构建强大且灵活的对话式代理。关键是要:
- 在指令中清晰定义核心对话流程——这取代了传统主题中的主对话流
- 使用技能来处理条件性对话路径——相当于旧版中的子主题
- 利用工具来集成外部数据源——如从 SharePoint 获取菜单文件
这种新的编排方式不仅更加灵活,而且更符合自然语言处理的最佳实践。通过迭代测试和优化,你可以创建出用户体验极佳的对话式代理。
本文首发于 Matthew Devaney,原文链接:How To Orchestrate Chat Without Topics In New Copilot Studio







