PowerPlatform-人工智能革命-全-
PowerPlatform 人工智能革命(全)
译者:飞龙
第一章:序言
人工智能 (AI*) 通常被认为是一种机器或计算机系统执行通常需要人类智能的任务的能力。无论你对人工智能的想象是什么——2001 太空漫游中的 HAL 9000、终结者中的阿诺德·施瓦辛格,还是星际迷航:下一代中的布伦特·斯宾纳扮演的数据——它可能只代表了该领域日益增长的能力中的一个或两个方面。
直到最近,大多数人工智能技术都围绕着机器学习展开——本质上是一种应用统计学的自动化。如果你已经忘记了大学里的统计学课程,那么它基本上就是使用大量数据样本来预测未来的数据(例如,通过查看最近的家庭价格来预测未来的家庭价格)。然而,在过去的半年里, 生成式人工智能 (或简称GenAI) 突然崭露头角。生成式人工智能可能是过去一百年中创造的最关键的技术之一。这对个人和组织来说都是一个分水岭时刻,可能重新定义了什么是具有创造力——甚至 甚至是思考 的能力。
如果你一直生活在地下,那么生成式人工智能就是一些最疯狂的技术文化现象背后的力量,如 OpenAI 的 ChatGPT、Midjourney、Dall-E 和 Grok(以及其他众多商业项目)。生成式人工智能服务可以“创建”基于其训练数据的内容,这些内容类似于人们可以创造的事物。与需要花费几分钟或几小时来创作内容相比,许多生成式人工智能解决方案可以在几秒钟内返回响应。
一些最激动人心的用例围绕着内容摘要、以几乎类似人类的方式对内容进行推理、模式匹配、预测和分析。生成式人工智能还可以混合操作模式或上下文——例如,根据时间序列数据预测值,并为其编写叙述。
在这本书中,我们将探讨一些将不同类型人工智能的扩展能力与微软的 Power Platform 工具(包括 Power Apps、Power Automate 和 Copilot Studio)相结合的激动人心的方法。*
本书面向的对象
本书旨在为那些对探索和实验人工智能和自动化感兴趣,但可能在该领域没有丰富技术经验的人士而编写。这包括那些通常被归类为知识工作领域的专业人士,如商业决策者、销售人员、行政助理、业务发展经理、人力资源代表和 商业分析师。*
本书的内容假设你对机器学习或人工智能概念没有任何了解(尽管这当然有助于理解一些更 复杂的话题)。
本书涵盖的内容
第一章,人工智能服务简介,介绍了人工智能的一些基本概念。
第二章, 《配置环境以支持 AI 服务》,概述了激活订阅和启用环境中 AI 服务的必要步骤。
第三章, 《与 ChatGPT 对话》,介绍了与 ChatGPT 的交互。
第四章, 《使用 ChatGPT 和 Copilot 创建流程》,演示了如何使用 AI 协助创建 Power Automate 流程。
第五章, 《使用 Copilot 启动 Power App》,专注于 Copilot 通过对话界面帮助设计和修改基本 Power App 的强大功能。
第六章, 《使用情感分析处理数据》,展示了如何利用机器学习功能来分析文本,并根据积极、消极或中性的情感触发操作。
第七章, 《利用 Power Automate 和 AI 构建 PowerPoint 演示文稿》,探讨了如何使用 Power Automate 和 ChatGPT 根据从互联网获取的内容创建 PowerPoint 演示文稿。
第八章, 《使用身份验证构建活动注册应用》,展示了如何处理政府颁发的身份证明文件以验证注册者的身份,然后发送自动会议确认。
第九章, 《实现 AI 赋能的简历筛选器》,结合文档识别、实体提取和 GPT 服务来处理提交的简历,并评估其是否与特定职位描述相匹配。
第十章, 《使用 GPT 创建管理摘要》,演示了如何使用 GPT 生成文档的管理摘要并将其插入文档或演示文稿中。
第十一章, 《使用 AI 在 SharePoint 库中标记图像》,展示了如何使用 Azure 计算机视觉服务根据内容对图像进行分类,然后更新文档库中的描述和标签。
第十二章, 《创建基于生成式 AI 的聊天机器人》,探讨了新的 Copilot Studio 界面,用于创建可以通过 ChatGPT 和通过一组文档内容进行推理来提供答案的对话机器人。
第十三章, 《发布基于生成式 AI 的聊天机器人》,利用在第十二章中创建的对话机器人,并指导如何使机器人对最终用户可用。
为了充分利用本书
为了使您的学习体验更加丰富,我们推荐以下组件:
-
免费试用订阅的 Azure 租户(
azure.microsoft.com/en-us/free/ai-services/) -
OpenAI GPT 订阅(
www.openai.com) -
Microsoft 365 试用订阅(
www.microsoft365.com) -
AI Builder 试用容量(
learn.microsoft.com/en-us/ai-builder/ai-builder-trials)
下载示例代码文件
你可以从 GitHub 下载本书的示例代码文件github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。如果代码有更新,它将在 GitHub 仓库中更新。
我们还有其他来自我们丰富的书籍和视频目录的代码包,可在github.com/PacktPublishing/找到。查看它们吧!
使用的约定
本书使用了多种文本约定。
文本中的代码: 表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 处理。以下是一个示例:“将下载的 WebStorm-10*.dmg 磁盘镜像文件作为系统中的另一个磁盘挂载。”
代码块设置如下:
html, body, #map {
height: 100%;
margin: 0;
padding: 0
}
当我们希望将你的注意力引到代码块的一个特定部分时,相关的行或项目将以粗体显示:
[default]
exten => s,1,Dial(Zap/1|30)
exten => s,2,Voicemail(u100)
exten => s,102,Voicemail(b100)
exten => i,1,Voicemail(s0)
任何命令行输入或输出都按照以下方式编写:
$ mkdir css
$ cd css
粗体: 表示新术语、重要单词或你在屏幕上看到的单词。例如,菜单或对话框中的单词以粗体显示。以下是一个示例:“从管理面板中选择系统信息。”
小贴士或重要笔记
它看起来像这样。
联系我们
我们始终欢迎读者的反馈。
一般反馈: 如果你对此书的任何方面有疑问,请通过 customercare@packtpub.com 给我们发邮件,并在邮件主题中提及书名。
勘误: 尽管我们已经尽一切努力确保内容的准确性,但错误仍然可能发生。如果你在这本书中发现了错误,我们将不胜感激,如果你能向我们报告这一点。请访问www.packtpub.com/support/errata并填写表格。
盗版: 如果你在互联网上以任何形式遇到我们作品的非法副本,如果你能提供位置地址或网站名称,我们将不胜感激。请通过版权@packtpub.com 与我们联系,并提供材料的链接。
如果你有兴趣成为作者: 如果你有一个你擅长的主题,并且你对撰写或为书籍做出贡献感兴趣,请访问authors.packtpub.com.
分享你的想法
一旦你阅读了《Power Platform 和 AI 革命》,我们很乐意听到你的想法!请点击此处直接跳转到亚马逊评论页面
(针对此书)并分享您的反馈。
您的评论对我们和科技社区都非常重要,它将帮助我们确保我们提供高质量的内容。
下载此书的免费 PDF 副本
感谢您购买此书!
您喜欢在路上阅读,但无法随身携带您的印刷书籍吗?
您选择的设备是否与您的电子书购买不兼容?
请放心,现在每购买一本 Packt 书籍,您都可以免费获得该书的 DRM 免费 PDF 版本。
在任何地方、任何地点、任何设备上阅读。直接从您最喜欢的技术书籍中搜索、复制和粘贴代码到您的应用程序中。
优惠不仅限于此,您还可以获得独家折扣、时事通讯和每日免费内容的每日电子邮件。
按照以下简单步骤获取优惠:
- 扫描下面的二维码或访问链接

packt.link/free-ebook/978-1-83508-636-0
-
提交您的购买证明
-
就这些!我们将直接将您的免费 PDF 和其他优惠发送到您的电子邮件。
第二章:人工智能服务简介
在过去的几年里,人工智能(AI)领域取得了显著的进步,彻底改变了各个领域,并重塑了我们思考和技术互动的方式。最近引起广泛关注的一个特别迷人的 AI 分支是生成式 AI。通过使机器展现出创造力(或者更具体地说,创造力的外观),生成式 AI 在艺术、音乐、设计和讲故事等领域开辟了新的前沿,除了聊天和人类交互。
在我们过于深入之前,让我们先讨论一些核心概念,以帮助大家了解这一切是如何运作的。
所有这些 AI 术语是什么意思?特别是,生成式 AI 指的是一类可以自主生成新内容(某种程度上是原创内容)的算法和模型。与依赖于预定义规则或明确指令的传统 AI 系统不同,生成式 AI 系统旨在从模式和现有数据中学习,以产生新颖的输出。这些系统利用深度学习技术,如生成对抗网络(GANs)、变分自编码器(VAEs)和循环神经网络(RNNs),来模拟人类大脑的创造性过程。
正如你们将看到的,AI 有自己的词汇表。当我们说诸如生成对抗网络和变分自编码器之类的术语时,我们指的是什么?让我们快速偏离一下,定义一下我们将要使用的术语:
-
算法:算法是一组规则(通常用计算机编程语言表达),在解决问题时遵循这些规则。
-
神经网络:当我们谈论神经网络时,我们指的是基于我们对人类大脑和神经系统的理解而构建的计算机系统和交互。像人类大脑一样,人工神经网络的基本构建块被称为神经元(节点),每个节点都连接到其他节点。这些连接具有权重和偏差的概念,当输入达到某个阈值时,它们会在链中的下一个节点上翻转。想象一下,神经网络就像由节点组成的网格层,每个节点连接到相邻层上的多个节点,每个节点的输出被用来影响相邻层节点的输入。
-
GAN:GAN 由两个基于相同源数据的神经网络组成,它们通过竞争来相互对抗。GAN 可以创建独特但模仿种子数据的合成数据。
-
VAE:VAE 是一种具有两个功能的算法。第一个功能将复杂的数据结构转换为一个更简化的版本,其中包含一定程度的随机性,而第二个功能则从简化的版本生成一个更复杂的结果。想象一下编码函数就像对一棵树进行高分辨率拍照,将其下采样(使其仍然看起来像一棵树,但可能缺少一些数据并且可能看起来有些模糊),并添加一些随机像素。当解码函数被激活时,它检索存储的简化数据,并使用它来重新构建一棵树的高分辨率图像。新的图片看起来与原始图片相似,但部分原因是由于原始数据简化的损失,部分原因是编码器插入了一定程度的随机性,新的图片也有所不同。
-
RNN:RNN 是一种可以处理序列数据的人工神经网络,它通过保留之前步骤的信息来处理。
-
AI 模型:AI 模型是一种模仿人类智能的数学算法,通过处理数据来做出预测和生成输出。它通过训练数据学习执行特定任务,如图像识别或自然语言处理。
-
大型语言模型:大型语言模型是一种 AI 模型,旨在理解和生成连贯且与上下文相关的、类似人类的文本。流行的 ChatGPT 就是一个大型语言模型的例子。
深度学习和 AI 系统背后还有许多更复杂的概念(包括更多类型的神经网络和 AI 模型)。
除了生成式 AI 之外,目前还有许多类型的 AI 模型正在使用,例如那些被设计来完成以下任务:
-
估算航运路线
-
预测交通模式和拥堵
-
寻找天气异常
-
识别图片中的物体
这些不同类型的模型都依赖于大量现有数据和专门设计的算法,以及训练程序来帮助模型“学习”如何预测或识别事物。
在这本书中,我们将使用各种 AI 技术——从预构建、以特定目的为导向的模型到生成式 AI。当你到达最后的示例和练习时,我希望你会有一些关于如何利用 AI 加速你的团队、组织甚至个人生活的激动人心的想法。
生成式 AI 可以做哪些事情?
生成式 AI 的显著力量在于其创造真实多样输出并展现类似人类创造力的能力。例如,在视觉艺术领域,生成式 AI 可以创作逼真的画作,生成逼真的图像,甚至帮助设计具有特定美学的新产品。在音乐创作中,生成式 AI 算法可以创作原创旋律和和声,模仿不同作曲家的风格或创造全新的音乐流派。同样,在叙事领域,生成式 AI 可以开发引人入胜的故事,写诗,或生成逼真的对话。
生成式 AI 的影响远远超出了艺术和创造性追求。它已经在包括数据增强、合成数据生成、视频游戏设计和药物发现等各个领域找到了应用。生成式 AI 技术还可以帮助增强现有内容,实现高质量的图像放大、文本摘要,甚至生成与人类语音非常相似的语音合成!AI 能够做到的未来仅限于构建和训练模型的人们的创造力。
然而,生成式 AI 并非没有挑战。如滥用或传播有偏见内容的潜在问题等伦理问题需要解决。在 AI 系统的创造力和其与社会价值观的一致性之间找到正确的平衡是一个需要仔细考虑的关键方面。
道德和负责任的 AI
负责任地使用 AI 对于确保其在市场上的成功至关重要。负责任的 AI 包括公平(公平对待每一位用户)、包容性(确保所有种族、性别和能力的人都有权使用系统)、透明度(理解 AI 模型如何得出结论)和问责制(确保人们可以为 AI 系统的决策承担责任)。
负责任的 AI 设计和使用涵盖了所有 AI 系统的各个方面,从机器学习模型具有代表性的数据样本且不持有对国籍或性别的偏见,到确保生成式 AI 在没有得到同意的情况下不被用于创建人们的肖像(有时称为深度伪造)。
微软在部分程度上一直在致力于建立道德和负责任的 AI 原则。您可以在以下链接中了解更多关于他们的承诺:www.microsoft.com/en-us/ai/responsible-ai。
总的来说,生成式 AI 代表了在 AI 领域的一个重大突破。通过利用机器学习和深度神经网络的力量,生成式 AI 系统可以开启新的创造力和创新领域,商业自动化以及人机交互。
不提这些,它还在释放许多忍者猫恐龙混合体:

图 1.1 – Bing 图像创建者,由 DALL-E 提供支持
让我们转换一下思路,了解各种类型的 AI 在商业环境中的应用,特别是与微软的 Power Platform 相关的应用。
什么是 Power Platform?
Power Platform 是一套全面的 低代码 和 无代码 工具套件,旨在赋予个人和组织创建定制业务应用、自动化流程、分析数据和开发虚拟代理的能力。它由四个主要组件组成:
-
Power Apps:此组件使用户能够通过拖放功能构建网页和移动应用程序,同时连接到各种数据源。
-
Power Automate:之前称为 Microsoft Flow,它允许创建自动化工作流,整合和同步多个应用程序和服务之间的数据和流程。Power Automate 已从仅作为云端的流程自动化平台扩展到包括流程挖掘和 机器人流程 自动化(RPA)。
-
Power BI:此组件提供强大的数据分析可视化功能,将原始数据转化为有意义的见解和交互式报告。
-
Copilots:此组件允许创建无需编码的智能聊天机器人,使组织能够提供即时支持和与客户的互动。
这些工具共同赋予所有技能水平的用户推动数字化转型、提高生产力和在其组织中创新的能力。本书将主要关注将 AI 服务和模型与 Power Platform 的 Power Automate、Power App 和 Copilots 组件集成。
什么是无代码或低代码软件?
微软将 Power Platform 工具定位为一个鼓励 无代码 和 低代码 解决方案的开发环境。那么,这些是什么?无代码正如其名——创作者从小部件、组件或模块中组装解决方案的一种 所见即所得(WYSIWYG)的方式。生成一个可工作的解决方案不需要正式的开发经验。
低代码软件,比无代码软件高一个层次,涉及使用简化的开发语言与可用的连接器或模块结合使用。Power Platform 利用一种名为 Power Fx 的语言,其结构类似于流行 Office 宏或电子表格公式的语法。
Power Platform 工具还可以支持 代码优先 或 代码优先 的创作(这与低代码或无代码方法截然相反),这意味着您可以与 REST API 接口交互或使用传统的开发环境,如 Visual Studio。
了解 Power Automate
Power Automate 是一个工作流和流程自动化工具。作为一个无代码/低代码解决方案,Power Automate 依赖于各种组件或构建块来创建自动化。
下面是一些与 Power Automate 相关的术语列表,您将在本书中看到:
-
流程:Power Automate 的基本单元,流程是由连接器、条件和任务组成的逻辑分组,用于执行自动化操作。
-
连接器:连接器是配置组件,用于定义与服务和应用程序通信所需的参数。
-
触发器:触发器是导致流程开始的事件或活动,例如 当创建新文件时 或 当向 SQL 数据库表添加一行时。
-
操作:操作是描述正在执行的动作和评估的逻辑步骤或单元,例如 复制文件、检查值是否大于或等于 或 向 SQL 数据库表添加一行。
我们将在本书的许多练习和示例中使用 Power Automate。
进一步阅读
要了解更多关于 Power Automate 的信息,请查看 《使用 Microsoft Power Automate 进行工作流自动化,第二版》 (www.packtpub.com/product/workflow-automation-with-microsoft-power-automate-second-edition/9781803237671)。
了解协作者
协作者技术(不要与 某物的协作者 混淆)赋予用户设计和部署聊天机器人的能力,以与人们互动,提供即时支持和参与。通过可视化界面和预构建模板,创作者可以轻松定义对话流程,连接和集成各种系统,并使用 自然语言理解(NLU)来训练聊天机器人。
有这么多协作者
我们将尽量使事情简单明了,但微软在其产品中融入了协作者的命名法。有 Microsoft 365 协作者(一个内置在 Microsoft 365 体验中的生成式 AI 助手)、Viva Sales 中的协作者(一个连接 Outlook 和其他协作工作负载与 Dynamics CRM 的生成式 AI 助手)以及 安全协作者(一个用于威胁搜索和管理的 AI 助手)。
Power Platform 有自己的协作者功能集,包括 AI 协作者(一个用于创建 Power Apps 和流程的 AI 启用生成式助手)和 协作者工作室,这是一个用于创建——您猜对了——协作者的网络界面。协作者(在协作者工作室中)是经过改进的 Power Virtual Agents——聊天机器人,可以启用以在其他应用程序中提供答案和启动工作流。
由于我们将在本书的一些练习中使用协作者,您也需要熟悉它们的术语:
-
主题:主题代表您的聊天机器人可以处理的主要领域或主题。每个主题都包含触发器、操作和响应,以引导对话流程。
-
触发器:触发器是启动对话或将其引导到特定主题的条件或用户输入。它们可以基于关键词、短语或系统事件。
-
操作:操作是聊天机器人针对用户输入或触发器执行的操作或步骤。它们可以包括发送消息、提问、调用 API 或执行计算。
-
实体:实体是聊天机器人可以从用户输入中提取的信息片段。
-
响应:响应是聊天机器人用于与用户沟通的消息或内容。
Copilots 可以部署到各种位置和界面,包括网站和 Microsoft Teams。
进一步阅读
想要了解更多关于 Copilots 的信息,请阅读《Empowering Organizations with Power Virtual Agents》:www.packtpub.com/product/empowering-organizations-with-power-virtual-agents/9781801074742.
了解 Power Apps
Power Platform 的 Power Apps 组件使用户能够在没有广泛编码知识的情况下创建自定义的网页和移动应用程序。它提供了一个低代码开发环境,用户可以在其中通过可视设计应用程序界面、定义数据源以及通过一系列预构建的连接器添加功能。
与 Power Automate 和 Copilots 一样,Power Apps 有一些术语您应该了解:
-
屏幕:屏幕是应用程序的构建块,代表不同的视图或页面。每个屏幕可以包含各种控件和组件。
-
控件:控件是用于显示数据、捕获用户输入或触发操作的交互式元素。示例包括文本框、按钮、库、表单和图表。
-
数据源:数据源是应用程序数据存储的地方,例如 SharePoint、Microsoft Dataverse(以前称为 Common Data Service)、Excel、SQL 数据库或通过连接器的外部系统。
-
公式:Power Apps 使用公式(Power Fx 语言)进行计算、操作数据和控制应用程序行为。公式可用于属性、事件和操作中。
-
数据卡:数据卡是表单内数据输入控件的容器。它们代表数据源的字段,并使用户能够查看和编辑数据。
-
库:库是用于显示列表或数据集合的控件。它们可以根据需要定制,以显示不同的布局,例如表格或卡片库。
Power Platform 最令人兴奋的新功能之一是“描述以设计”功能,它允许您使用自然语言为 Power App 建立框架。我们将在 第五章,使用 Copilot 引导 Power App 中稍作探讨。
进一步阅读
想要了解更多关于使用 Microsoft Power Apps 创建应用程序的信息,请查看《Learn Microsoft Power Apps, Second Edition》:www.packtpub.com/product/learn-microsoft-power-apps-second-edition/9781801070645.
了解 AI Builder 技术
AI Builder 是 Power Platform 的原始 AI 组件,允许用户将 AI 能力集成到他们的 Power Apps 和 Power Automate 工作流程中。它使即使没有广泛 AI 专业知识的使用者也能构建和部署用于常见业务场景的 AI 模型。
使用预构建模型
AI Builder 提供了一系列预构建模型和示例,这些模型可以根据特定需求进行定制。这些模型涵盖了各种 AI 能力,如表单处理、目标检测、预测、文本分类和情感分析。用户可以使用他们的数据训练和优化这些模型,或者利用现有的数据连接器。
使用 AI Builder,用户可以自动化从表单中提取数据,对结果进行分类和预测,分析文本中的情感,并在图像中识别对象。这些 AI 能力增强了 Power Apps 和 Power Automate 的功能和能力——您将在本书中获得实际操作经验!
我们将在第六章“使用情感分析处理数据”中,使用情感分析功能。
我们将在第八章“使用身份验证构建活动注册应用”中,使用 AI Builder 文档阅读器。
最后,在第九章“实现 AI 驱动的简历筛选器”中,您将学习如何训练 AI Builder 模型从简历中提取关键数据。
使用自定义模型
与预构建模型相比,自定义模型允许用户创建和训练符合其特定业务需求的定制 AI 模型。预构建模型已经针对常见场景进行了训练,而自定义模型允许您使用自己的数据来训练模型以满足专业化的需求。
我们将在第九章“使用 Copilot 和 Power Apps 构建简历筛选器”中,使用自定义模型来处理非结构化数据。
理解 Power Platform 许可证
Power Platform 的许可结构可能有点复杂,但以下是主要许可选项的概述:
-
Power Apps 和 Power Automate 免费版:Power Apps 和 Power Automate 提供了一个免费版本,该版本提供基本功能以及对连接器和功能的有限访问。此许可计划有时被称为种子提供。
-
Power Apps 和 Power Automate 每用户计划:这些是付费计划,提供增强功能以及对连接器和功能的更广泛访问,按用户计费。这些计划适用于需要高级功能且按月或按年许可的个人用户。
-
Power Apps 和 Power Automate 每应用或每流程计划:这些计划允许组织为特定的应用或流程许可,而不是为单个用户许可。当组织拥有大量用户但只有一小部分用户需要访问特定应用或流程时,这些计划很有用。
-
与 Microsoft 365 和 Dynamics 365 计划的 Power Apps 和 Power Automate 许可证:Power Apps 和 Power Automate 也包含在多种 Microsoft 365 和 Dynamics 365 计划中。这些计划提供对 Power Platform 功能的更广泛访问,同时还包括其他 Microsoft 生产力和企业应用程序。
需要注意的是,某些高级功能、附加包、连接器和基于容量的使用可能需要额外的许可证或更高等级的计划。此外,Microsoft 定期更新和改进其许可证选项,因此建议咨询官方 Microsoft 许可证文档或直接联系 Microsoft 以获取有关 Power Platform 许可证选项的最新信息。
AI Builder 是一种按容量计费的特性——与 Power Apps 和 Power Automate 每用户、每应用或每流程计划分开。以下是关键方面的概述:
-
免费使用:AI Builder 提供有限的免费使用量,允许用户免费探索和体验其基本功能。
-
基于消费的定价:当使用量超过免费限制或需要更高级的功能时,AI Builder 容量许可证开始生效。它遵循基于消费的定价模式,组织购买容量以启用 AI Builder 的功能。
-
容量类型:AI Builder 许可证提供两种容量类型——AI Builder 独立容量和 AI Builder 容量附加包:
-
AI Builder 独立容量:此类容量仅用于 AI Builder,涵盖 AI Builder 模型和服务的消耗。
-
AI Builder 容量附加包:此容量是现有 Power Apps 和 Power Automate 容量的附加包。它允许组织扩展其现有容量,使其包括 AI Builder 功能。
-
-
容量单位:AI Builder 容量以容量单位衡量,每个单位提供一定水平的计算资源和性能。所需的容量单位数量取决于 AI Builder 的使用量和部署的模型的复杂性。
在确定组织的适当容量许可证时,需要考虑用户总数、预期使用量和所需的特定 AI Builder 功能。组织可能需要分配足够的容量单位以确保最佳性能和可扩展性。
若要获取关于 AI Builder 容量许可证的精确细节,包括定价、特定功能和许可协议,建议参考官方微软文档或咨询微软许可专家,以确保符合您组织的需求并适当许可。
进一步阅读
若要深入了解 Power Platform 许可证,请参阅learn.microsoft.com/en-us/power-platform/admin/pricing-billing-skus和learn.microsoft.com/en-us/ai-builder/administer-licensing。如果这一切仍然像泥巴一样模糊不清,您可以联系微软合作伙伴(partner.microsoft.com/en-us/marketing)。
探索其他 AI 服务
现在我们已经花了一些时间了解了一些生成式 AI 和 Power Platform 的功能,让我们来看看市场上的一些 AI 服务。
使用 Azure AI 服务
微软在 Azure AI 服务(以前称为 Azure 认知服务)的伞形下提供了一系列 AI 和机器学习功能。这些服务使开发者能够在不从头开始构建复杂的 AI 算法的情况下,将智能功能添加到他们的应用程序中。借助 Azure 认知服务,开发者可以访问预构建的模型和 应用程序编程接口(API),将视觉、语音、语言和决策制定等功能集成到他们的应用程序中。
具有视觉功能的包括以下服务:
-
计算机视觉:此服务使图像分析和物体检测成为可能。计算机视觉可以执行诸如识别场景中的物体(狗、飞盘和树)以及执行上下文图像分析(在树下,有一只狗正在接飞盘)和光学字符识别等任务。
-
人脸识别:人脸识别服务用于识别图像数据中的面部存在,以及识别和分析图像中的面部。您可能使用人脸识别服务来验证某人的身份是否与政府颁发的身份证件相符,或者用于模糊处理图片或视频中的面部内容。
-
自定义视觉:自定义视觉服务,现在是图像分析 4.0 的一部分,使开发者能够创建自定义图像识别模型,用于根据视觉特征对内容进行标记和添加标签。
Azure 认知服务包括多个语言和语音 API,提供以下功能:
-
语音识别:语音识别服务提供了一系列语音转文本、文本转语音、内容翻译和说话人识别功能。
-
语言:该服务基于自然语言理解,具有多个子服务和功能,包括执行关键词提取、命名实体识别以及检测个人身份信息(PII)的能力。语言服务还可以在两种语言之间提供文本翻译,对文本体进行分类并确定其情感,以及执行内容摘要。
-
翻译器:虽然语言服务处理文本到文本的内容转换,但翻译器服务可以提供实时基于机器的翻译。
-
语言理解(LUIS):LUIS 服务是一个机器学习模型,可以从自然语言对话中预测整体意义和内容提取。
-
QnA Maker:您可以将 QnA Maker 服务视为一个机器人或回答服务,它可以对半结构化内容进行推理并提供客户答案。
与 Azure AI 服务一起提供的决策模型也提供了独特的功能:
-
内容审查员:内容审查员服务提供对可能冒犯性、不受欢迎、不安全或存在其他风险的内容的分析。
-
个性化推荐:通过行为和习惯分析,个性化推荐服务帮助选择为您的客户选择的内容体验。
-
异常检测器:异常检测器服务允许您监控和检测基于时间的数据集中的不一致性。
Azure AI 服务还包括 Azure OpenAI 服务,该服务包含多个语言模型,包括 GPT-3 和 Codex,以支持内容生成、摘要和自然语言到代码的翻译。
变化即将到来
如果有什么是恒定的,那就是变化。随着 AI 领域的发展,新的功能、服务或能力会取代旧的对立面。在未来几年里,您将需要告别 LUIS 和 QnA Maker 服务,因为它们将被淘汰。Microsoft 建议将启用 LUIS 的应用程序和服务过渡到对话语言理解,并使用 Azure AI 语言服务中的问答功能重新配置 QnA Maker 服务。
一起,这个服务家族为开发者提供了将 AI 基础功能编程添加到他们的应用程序中的机制,而无需在 AI 模型方面有大量经验,从而改善用户体验,并在医疗保健和客户服务等领域推动创新。
进一步阅读
如需了解 Azure 认知服务的完整产品系列,请访问 learn.microsoft.com/en-us/azure/cognitive-services/what-are-cognitive-services。
与 OpenAI 模型合作
OpenAI 是 GPT-3、GPT-4 和 DALL-E 图像生成平台等流行模型的背后组织。
OpenAI 提供了一系列先进的 AI 技术和服务,旨在赋予个人和组织利用 AI 力量的能力。让我们来看看他们的部分产品:
-
生成式预训练转换器(GPT):这是 OpenAI 的旗舰语言模型。它能够生成连贯且与上下文相关的文本,这使得它在自然语言处理、文本补全和聊天机器人开发等任务中非常有用。
-
OpenAI API:这项服务为开发者提供了轻松访问 OpenAI 模型的方式,使他们能够将语言生成功能集成到他们的应用程序或服务中。
-
图像 API:图像 API 提供了基于文本提示创建或编辑新图像和现有图像的方法。
-
OpenAI Gym:这是一个用于开发比较强化学习算法的工具包。它提供了一系列预构建的环境和工具,用于训练和评估 AI 代理。
-
OpenAI 平台:OpenAI 平台提供了一套用于研究、开发和部署 AI 模型的工具和资源。它包括模型训练基础设施、协作功能和模型管理工具。
-
OpenAI 学者计划:这是一个研究实习项目,旨在支持来自代表性不足背景的有志于 AI 研究的学者。它提供指导、津贴和资源,以帮助参与者提升他们的 AI 知识并贡献于该领域。
与 Microsoft 一样,OpenAI 强调道德考虑和负责任的 AI 开发。
进一步阅读
在这本书中,我们将主要关注通过 Power Platform 直接或通过 Azure AI 服务暴露的 OpenAI 服务。OpenAI 的产品也可以单独获取。有关使用 OpenAI 平台进行开发的更多信息,请访问platform.openai.com/overview。
与 Google、Anthropic 等公司的服务合作
虽然我们将主要关注在 Microsoft 云中提供的服务(更具体地说,是 Power Platform AI Builder、Azure AI 服务和 OpenAI),但它们现在并不是 AI 领域的唯一大玩家。目前还有几个其他 AI 平台——既有通用的也有特定的——正在开发中。其中一些甚至现在就开放供你实验!
这里有一些你可能遇到的服务列表:
-
Google Bard:基于 Google 的对话应用语言模型(LaMDA),Bard 是由 Google 研究团队开发的高级语言模型。LaMDA 的训练涉及对话而非孤立的提示,这使得它能够理解深层含义并参与更深入的对话交流。你可以在
bard.google.com与 Bard 开始对话。 -
Anthropic Claude:Claude 是另一种类型的对话式 AI 模型。Anthropic 在处理 AI 模型时采取了一些不同的方法,他们使用一种称为宪法 AI 的方法进行训练。宪法 AI 涉及监督学习和审查,以便 AI 从反馈中学习,生成无害的输出。与 Claude 在
claude.ai交谈。 -
Midjourney:与 ChatGPT、Bard 和 Claude 使用文本作为输入和输出不同,Midjourney 是一个基于 AI 的艺术生成平台。Midjourney 可以通过文本提示来创建高质量的艺术作品。在
www.midjourney.com/体验 Midjourney。
AI 也融入了无数的插件和扩展中。进行一次或两次快速的互联网搜索,很快就能发现您可以尝试的新工具。
摘要
希望对生成 AI 中涉及的某些计算类型、算法和框架的高层次理解,能让您在接触它时感到不那么可怕。虽然机器可能(目前)还没有来“找”我们,但它们无疑将影响未来多年商业和客户之间的互动。
现在,是时候通过准备您的开发环境来开始您的 AI 之旅了!
第三章:配置支持 AI 服务的环境
在本章中,我们将开始探索如何获取和设置您将需要执行本书练习的各种服务和环境。
由于本书主要关注与 Microsoft 生态系统中的 AI 服务一起工作,我们将花费大部分时间与 Azure 和 Power Platform 服务一起工作。在本章结束时,我们将介绍如何连接到其他 AI 平台,以防您想将它们作为学习的一部分。
注意
其中一些服务可能提供个人交互使用的免费试用,但大多数将需要某种形式的支付,以便任何以编程方式访问资源(如从 Power App)的用户。您可能需要相应地制定预算,以充分利用可用的平台。
对于那些只会在低代码场景(如 AI Builder 或 Power Apps 或 Power Automate 中的 OpenAI 动作)中使用 AI 的用户,配置 Azure 中的 OpenAI 服务资源可能不是必需的,您可以跳转到配置 Power Platform部分。然而,如果您想深入了解 Azure 提供的 AI 服务世界,请继续阅读。
配置 Azure
在 Azure 环境中,有几种方式可以使用基于 OpenAI 的服务,如 ChatGPT。根据您的上下文,您可能愿意使用公共服务如 ChatGPT 来满足您的生成需求。但是,如果您想在 Azure 租户的范围内配置 OpenAI 以处理您自己的数据集,您将需要请求访问 Azure OpenAI 服务。
在您的 Azure 租户中启用 OpenAI 的好处之一是您可以将其连接到您自己的租户数据。当您开始审查公共或免费 AI 接口的服务条款时,您会注意到服务提供商可以声称拥有您产生的结果的所有权,以及使用您提供的数据来进一步训练模型。如果您旨在使用 AI 来处理您自己的专有数据(这可能包含从个人身份信息(PII)到商业机密的各种内容),您需要确保您始终控制着通过系统传输的任何数据(从数据治理的角度以及内容所有权的角度来看)。
注意
OpenAI 为 ChatGPT 提供企业订阅,可以保护您的提示、源数据和结果不被用于训练通用模型。
为 Azure OpenAI 服务请求 API 访问
由于 AI 服务的快速发展和生成 AI(GenAI)可能带来的潜在风险,Microsoft 限制了访问 OpenAI 服务。作为其负责任的 AI 承诺的一部分,Microsoft 致力于确保其提供的服务以安全的方式被使用。
为了使用 Azure 服务,您需要一个 Azure 订阅。
小贴士
要查找您的 Azure 订阅,请导航到 Azure 门户 (portal.azure.com) 并在 搜索 栏中输入 Subscriptions。订阅 ID 的格式为 GUID,您在请求过程中需要提供。有关查看您的 Azure 订阅的更多信息,请参阅 learn.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id。
要开始请求访问 Azure OpenAI 服务,请按照以下步骤操作:
- 使用浏览器,导航到
aka.ms/oai/access。

图 2.1 – 请求访问 Azure OpenAI 服务
-
使用您的姓名和 Azure 订阅 ID 填写表格。
-
选择您想要使用的 Azure OpenAI 服务。可用的选项包括 文本和代码模型 和 DALL-E 2 模型。请参阅 图 2.2:

图 2.2 – 选择 Azure OpenAI 服务模型
-
为每个模型选择用例。在选择用例时,请注意,如果您不是当前的微软 MVP 或 RD,选择 最有价值专家 (MVP) 或区域总监 (RD) 演示用 将导致拒绝。
-
确保填写所有必填字段,例如您组织的电话号码或公司网站。
-
对于 问题 18,您必须选择 我承认这些条款适用于使用 Azure OpenAI 服务。阅读问题中链接的条款,包括法律条款、Azure 预览版产品的支持条款,以及 Azure OpenAI 服务的行为准则。
-
对于 问题 19,您必须选择 是的,我声明 以确认符合服务要求,并承认微软正在监控完成和生成 API 的使用。
-
点击 提交。
表格将被发送到微软进行审查和批准。目前,请求审查大约需要 10 个工作日。一旦您的访问得到批准,您就能在 Azure 门户中创建和使用 OpenAI 资源。
在 Azure 中设置 OpenAI 服务资源
一旦微软批准了您在 Azure 租户中的 OpenAI 服务,就到了设置它的时候了!
您需要与 OpenAI 一起工作的所有服务已经存在——它们只是等待被启用。为了利用本书中的示例,您需要注册几个资源提供者。
Azure 资源提供者是一组 REST 操作,旨在支持特定 Azure 服务的功能,例如用于 Azure 认知搜索服务的 Microsoft.Search。此提供者指定用于管理服务各个方面的 REST 操作,包括配置搜索索引和启用基于语义搜索的应用程序的开发。
资源提供者按订阅进行注册和启用。在本节中,我们将采取必要的步骤来启用支持以后使用 Azure OpenAI 服务的连接:
-
导航到 Azure 门户 (
portal.azure.com) 并选择 订阅。 -
选择您用于注册 OpenAI 服务访问的订阅之一。
-
在 设置 下,选择 资源提供者,如图 图 2.3* 所示:

图 2.3 – 导航 Azure 订阅
- 从资源提供者列表中选择 Microsoft.AppConfiguration:

图 2.4 – 选择 Microsoft.AppConfiguration 资源提供者
-
点击 注册。
-
对于本书中将使用的以下服务提供者,重复 步骤 4 和 步骤 5:
-
Microsoft.AppPlatform
-
Microsoft.App
-
Microsoft.Authorization
-
Microsoft.BotService
-
Microsoft.CognitiveSearch
-
Microsoft.CognitiveServices
-
Microsoft.Insights
-
Microsoft.Logic
-
Microsoft.ManagedIdentity
-
Microsoft.KeyVault
-
Microsoft.Storage
-
Microsoft.Web
-
当你使用 Azure OpenAI 扩展你的用例时,你需要启用这些功能以开始与模型和服务一起工作。
配置 ChatGPT 的 API 访问
虽然任何人都可以浏览到 OpenAI 并免费交互式地使用 ChatGPT,但如果你想在应用程序和自动化中使用 ChatGPT,你需要获得 API 访问权限。
要注册 API 访问,请按照以下步骤操作:
-
使用浏览器,导航到
beta.openai.com/signup。 -
在 创建您的账户 页面上,输入一个电子邮件地址并点击 继续。或者,您可以使用 OAuth 连接通过 Google、Microsoft 账户或 Apple ID 进行身份验证。
-
为您的新 OpenAI 账户输入一个密码并点击 继续。
-
检查您在 步骤 2 中提供的账户,以确认消息。点击链接以确认您的身份并继续注册流程。
-
在 告诉我们关于您的情况 注册页面上,添加您的个人详细信息,包括您的 全名、组织 和 生日 信息。点击 同意。
-
如果你之前已经注册,你可能会收到一条关于升级到付费计划以开始使用 API 的消息。点击 继续。
-
如果需要,在 欢迎使用 OpenAI 平台 概览页面上点击 升级,如图 图 2.5* 所示:

图 2.5 – OpenAI 平台概览页面
-
否则,在导航菜单中点击 API 密钥。
-
点击 开始验证 以开始电话验证过程。
-
在 验证您的电话号码 页面上,输入一个能够接收短信的设备的电话号码。点击 发送代码。
-
在 输入代码 页面上,输入您从 OpenAI 验证服务收到的六位数字代码。
-
点击开始 支付计划。
-
在您最好描述自己页面,选择最能描述您的使用场景的分类(个人或公司)。
-
在设置支付计划页面,输入您的信用卡信息并点击继续。
-
在配置支付页面,输入初始信用购买的值。您可以选择介于 5 美元和 50 美元之间的任何金额。
-
在支付摘要页面,点击确认支付。您将被收取配置支付页面和摘要中指定的金额。
-
在计费概览页面,在用户下的导航菜单中选择API 密钥。见图 2.6:

图 2.6 – 选择 API 密钥
- 在API 密钥页面,选择创建新 密钥:

图 2.7 – 创建新的 API 密钥
-
在创建新密钥弹出窗口中,输入 API 密钥的名称(例如 OpenAI API 密钥)并点击创建 密钥。
-
将显示的值复制到安全位置。当您从其他应用程序和服务连接到 OpenAI 服务时,您将需要此值。一旦您点击完成,此值将被隐藏,并且您将无法在未来检索它:

图 2.8 – 捕获 API 密钥
重要提示
像对待金钱一样保护此 API 密钥值。如果它被泄露或被盗,其他人可以使用它来执行针对您的账户余额的 API 调用和查询。如果它丢失或被盗,您需要返回此页面,生成新的密钥,然后通过点击垃圾桶图标撤销旧密钥。此外,如果 OpenAI 检测到您的密钥已被保存或发布到公共位置(如 GitHub),您的密钥将被无效化,您需要生成一个新的。
- 点击完成。
当您配置其他服务以与 ChatGPT 集成时,您将为此服务提供此 API 密钥进行身份验证。
配置您的工作站
有许多工具可以帮助您构建和部署基于 AI 的应用程序。为了本书的目的,您可能需要下载和部署一些工具:工具
使用提供的链接下载并安装每个工具。请确保使用所有工具的默认安装选项,因为本书中的任何示例都将引用默认选项和路径。
配置 Power Platform
最后,我们将设置 Power Platform 所需的必要订阅和先决服务。
通过 Power Platform 工具中的 AI Builder 可用的 AI 模型需要 AI Builder 许可证以及访问 Microsoft Dataverse 的权限。要开始,请按照以下步骤操作:
-
导航到 Microsoft Power Automate 网站端口(
make.powerautomate.com)并使用管理员账户登录。 -
从导航菜单中选择AI 中心。
-
在发现 AI 功能页面,选择AI 模型。
-
如果需要,选择创建数据库以创建新的 Dataverse 数据库。
-
在新数据库页面,选择一个货币和语言值,然后点击创建 我的数据库。
-
如果你还没有 AI Builder 容量,你应该在页面顶部看到开始免费试用横幅,如图 图 2.9* 所示。选择它:

图 2.9 – 开始 AI Builder 的免费试用
- 按提示注册或延长试用。
就这样!你就可以在 Power Automate 和 Power Apps 中使用 AI Builder 了!
摘要
在本章中,你配置了使用 AI 服务所需的所有先决条件——包括 Azure 中的 OpenAI、ChatGPT 和 Power Platform AI Builder。你还配置了工作站,以便将 AI 应用部署到 Azure。
接下来,我们将以最终用户身份开始与 ChatGPT 互动,以了解其工作原理。
第四章:与 ChatGPT 对话
如果你正在阅读这本书,你可能至少听说过围绕 ChatGPT 的炒作。但是,你实际上看到它做什么了吗?它是如何工作的?你知道什么是提示吗?如何与之互动?
也许你已经对其进行了些探索,所以你接下来的问题可能是一些诸如我该如何向它发送数据?和我该如何从它那里获取数据?以及什么是令牌,为什么它们很重要?这样的问题。
如果是这样,你就来对地方了。在本章中,我们将通过 ChatGPT 界面进行一些探索,以熟悉其工作方式,然后转向 Power Automate,在那里你将学习处理 ChatGPT 数据的基础知识。
作为用户与 ChatGPT 合作
作为用户与 ChatGPT 合作非常简单。首先,你只需打开一个网络浏览器并导航到chat.openai.com。
设置
希望你已经开始了一个 ChatGPT 账户(它是第二章,配置支持 AI 服务的环境)的作业之一)。
一旦登录,请使用你之前注册的凭据登录:

图 3.1 – 登录 ChatGPT
一旦你登录,你就可以立即开始向模型发送问题(提示),如图图 3.2所示:

图 3.2 – 向 ChatGPT 发送提示
在输入提示后,ChatGPT 将以内容(在这种情况下,是披萨配菜的想法)进行回应。
你不仅限于向 ChatGPT 提交简单的问题,你甚至可以提交场景和背景信息以帮助指导 ChatGPT 的回应。这种框架被称为上下文。例如,你可以通过以下几种方式向 ChatGPT 提供上下文:
-
向一个 10 岁的孩子解释弦理论。
-
你是一位技术作家。描述混合砂浆所需的步骤。
-
你是一位网页开发者。为具有简单一级菜单的网页生成基本的 HTML 代码。
-
这里有一份动物列表:老虎、猫、狗、灰熊、羚羊、蜘蛛。将它们按从小到大的顺序排列。
ChatGPT 是会话式的,允许你回顾之前的提示和回应,以进一步细化你的输出。
那么,什么是令牌?
我很高兴你问了这个问题!当你与 ChatGPT(或其他语言模型和服务)互动时,这会出现。在 ChatGPT 的上下文中,令牌是模型处理的最小文本单元。它可能小到单个字符,常见的字母组合、前缀和后缀,甚至整个单词,具体取决于模型的配置。
从成本和计费的角度来看,模型通常根据你提交的令牌数量以及你收到的作为响应的令牌数量来收费。让我们以图 3.2 中展示的示例提示为例 – 我可以提供哪些披萨配菜?
使用像 OpenAI 的 Tokenizer 这样的工具,你可以计算出发送此请求将花费多少成本:

图 3.3 – 查看 Tokenizer 的结果
如你所见,这个请求花费了 11 个令牌。底部区域显示了 OpenAI 如何拆分句子。
响应令牌的计数方式相同。考虑到这一点,你可能发现将问题和响应标准以最小化令牌使用的方式框架化是有用的(或者根据你的预算,这是必要的)。根据你所消费的服务,你的使用可能被不同地计算。始终了解定价和计费模式非常重要,以确保你不会收到意外的账单!
在处理完会计任务后,我们将查看如何将数据发送到 ChatGPT。
向 ChatGPT 发送提示
作为最终用户与 ChatGPT 一起工作相当简单。那么,使用 Power Automate 做同样的事情有多难呢?答案是,这并不那么糟糕。
你有两个主要选项可以将数据传递给 OpenAI ChatGPT 服务本身:内置的 HTTP(高级)连接器或第三方 OpenAI 连接器。我们将快速介绍这两种选项,你可以根据需要调整其中任何一个。
这两个示例都将通过简单的文本提示构建为即时云流。对于这两个示例,你需要你在 第二章,配置支持 AI 服务 的环境中创建的 OpenAI API 密钥。
HTTP
HTTP 方法是两种方法中更复杂的一种,但它也提供了最大的灵活性。
更新后的参数信息
就像所有云服务一样,OpenAI 可能会不事先通知就更改端点和其他参数。你可以在 platform.openai.com/api-reference/completions 获取最新的端点和参数。
要开始构建流程,请按照以下步骤操作:
-
启动网页浏览器并导航到 Power Automate 网络门户 (
make.powerautomate.com)。 -
从导航菜单中,点击 创建,然后,在 从空白开始 下选择 即时云流。见 图 3**.4:

图 3.4 – Power Automate 门户
- 在 构建即时云流 页面上,添加一个 流名称 值,然后选择 手动触发流 触发器。点击 创建:

图 3.5 – 创建空白即时云流
-
在画布区域,点击 手动触发流 以展开触发器。
-
点击 添加输入 并选择 文本 输入类型:

图 3.6 – 选择输入类型
- 在
提示中
为什么我的 Power Automate 画布看起来不同?
根据您的设置,您可能正在查看经典 Power Automate 画布或新的设计器界面。您可以使用页面右上角的 新设计器 开关在两种体验之间切换。界面略有不同,因此请随意调整并使用您更喜欢的任何一个。如果在设计过程中切换视图,您将需要在继续之前保存您的作品。
-
点击 新建步骤。
-
在 选择操作 对话框中,选择 HTTP (高级) 触发器:

图 3.7 – 选择 HTTP (高级) 触发器
- 在 HTTP 动作的第一个部分填写以下数据:
| 方法 | Post |
| --- | --- |
| URI | https://api.openai.com/v1/chat/completions |
接下来,您需要添加两个不同的头部。头部是在 HTTP 事务期间发送的信息数据。在这种情况下,您将发送一个包含您的 OpenAI API 密钥的 Authorization 头部,以及描述数据事务类型的 Content-Type 头部:
| 头部 | 值 |
| --- | --- |
| 授权 | Bearer <OpenAI API key> |
| 内容类型 | application/json |
最后,您需要为 正文 参数输入值。正文 将包含有关正在使用的模型类型、提示动态内容对象、要返回的完成数量以及其他指导信息。见 图 3.8:
| 正文 |
| --- |
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "**TRIGGER DYNAMIC CONTENT**
}
],
"max_tokens": 1000,
"temperature": 0,
"n": 1,
"stream": false,
"logprobs": null,
"stop": null
}
|
输出结果如下所示:

图 3.8 – 填写 HTTP 动作
- 在 正文 部分,选择 TRIGGER DYNAMIC CONTENT(包括方括号)并替换为通过点击闪电图标表示第 6 步提示的动态内容令牌:

图 3.9 – 更新提示体
- 点击 保存。
保存后,就是时候测试它了!
-
点击菜单栏上的 测试 图标以验证其是否正常工作。
-
在 测试流程 飞出菜单中选择 手动 单选按钮,然后点击 测试:

图 3.10 – 测试流程
- 在提示中输入您的文本,然后选择
列出烘焙蛋糕的成分:

图 3.11 – 输入提示
-
点击 完成。
-
滚动到 输出 部分,然后查找 正文 字段。见 图 3.9:

图 3.12 – 完成输出
现在您已经看到了如何以复杂的方式进行操作,让我们看看如何使用预构建的连接器。
OpenAI GPT-3 完成内容
使用预构建的连接器使得与 ChatGPT 交互的任务变得更加简单。
我们将创建另一个即时云流程来查看其功能:
-
启动网络浏览器并导航到 Power Automate 网络门户(
make.powerautomate.com)。 -
从导航菜单中,点击创建。然后,在从空白开始下选择即时****云流程。
-
在构建即时云流程页面,添加流程名称值,然后选择手动触发流程触发器。点击创建。
转换方向
要在手动触发流程卡片中查看必要的选项,你需要切换到经典视图。完成后可以切换回来。
-
在画布区域,点击手动触发流程以展开触发。
-
点击添加输入并选择文本输入类型。
-
在
上下文。 -
选择上下文输入的省略号(…),然后点击添加选项****下拉列表:

图 3.13 – 添加下拉列表
- 用
user角色填充列表。这将用于通知 GPT 谁在与系统交互。该字段区分大小写,因此请确保以小写输入:

图 3.14 – 配置下拉列表
-
点击添加输入并选择文本输入类型。
-
在
提示。 -
点击新建步骤。
-
在选择一个操作对话框中,在OpenAI(独立发布者)下选择聊天完成(预览)操作,如图图 3.12*所示:

图 3.15 – 选择聊天完成(预览)操作
- 在
Bearer <APIKEY>格式下并点击接受:

图 3.16 – 配置连接
-
选择高级参数下拉菜单,然后选择正文/模型和正文/消息。
-
在
gpt-3.5-turbo。
关于模型
虽然有多个模型可供选择,但你最可能使用的最常见模型是gpt-3.5-turbo、gpt-4和gpt-4-turbo。gpt-3.5-turbo 模型是一个性价比极高的日常模型,而 gpt-4 模型则具有一些改进的功能调用支持,可以处理更多的标记。gpt-4-turbo 模型具有更高的标记计数支持,并且还具有视觉能力。在其他上下文中,你可能使用dall-e-3模型通过图像 API生成图像。
-
在正文/消息区域,点击添加****新项。
-
在
上下文动态内容标记。 -
在
提示动态内容标记。 -
在
1000。见图图 3.17*:

图 3.17 – 配置聊天完成卡片
- 点击保存。
就像之前一样,让我们来测试一下:
-
在菜单栏上点击测试图标。
-
在测试流程弹出窗口中,选择手动单选按钮。
-
如果提示,点击继续以登录并授权 OpenAI 连接。
-
在 上下文 下拉菜单中,选择一个角色。
-
在
列出蛋糕的成分以及简要的制备说明:

图 3.18 – 测试 OpenAI Chat Completions 流
-
点击 运行流程。
-
点击 流程运行页面 以重定向到运行历史记录。
-
选择运行,然后滚动到 输出 部分的 Choices 区域以查看详细数据:

图 3.19 – 查看输出
到目前为止,一切顺利!
现在你有了这个输出,下一步是什么?你可以将这个输出输入到其他流程或过程中!
从 ChatGPT 获取数据
当你审查测试流程的输出时,你可能会注意到 ChatGPT 的答案(或响应)是以特定的方式组织的:

图 3.20 – ChatGPT 响应数据
结构,它是 name:value 对结构或表示法。
那么,JSON 究竟是什么呢?
让我们来看看我们例子中的几个字段:
"body": {
"object": "text_completion",
"model": "gpt-3.5-turbo",
"choices": [
{
"text": "\n\n1\. Flour\n2\. Sugar\n3\. Baking powder\n4\. Salt\n5\. Eggs\n6\. Milk\n7\. Butter or oil\n8\. Vanilla extract",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 7,
"completion_tokens": 39,
"total_tokens": 46
}
}
在这个例子中,body 标签或名称用于表示 JSON 响应的内容。在 name:value 上下文中,body 是名称,而大括号 { 和 } 之间的所有内容都是其值。
JSON 还允许你使用相同的结构或表示法嵌套对象。在这种情况下,下一个 name:value 对是 "object": "text_completion",将 object 定义为 name,将 text_completion 定义为其值。这种嵌套 name:value 对的过程可以扩展到 64 个级别。
除了简单的 name:value 对之外,JSON 还支持数组构造。一个 name:value 对表示名称与其对应值之间的一对一关系,而数组可以被视为一对多关系。例如,我有五个孩子:
-
Liberty
-
Hudson
-
Glory
-
Anderson
-
Victory
-
确实是一个孩子的数组!在 JSON 中,数组对象由方括号
[和]表示。 -
如果我用 JSON 格式描述我的孩子,我可能会构建一个像这样的数据样本:
{
"children": [
"Liberty",
"Hudson",
"Glory",
"Anderson",
"Victory"
]
}
JSON 数组对象也可以包含它们自己的 name:value 对,每个分组由其自己的大括号集合表示。
- 这里有一个例子:
{
"children": [
{
"name": "Liberty",
"age": "20"
}
{
"name": "Hudson",
"age": "18"
}
{
"name": "Glory",
"age": "16"
}
{
"name": "Anderson",
"age": "14"
}
{
"name": "Victory",
"age": "12"
}
]
}
JSON 的一个好处是它易于阅读和理解。
现在我已经通过在书中突出他们的特点来满足孩子们,让我们回到处理 ChatGPT 的 JSON 格式化输出的任务上来。
在 Power Automate 中处理 ChatGPT 的 JSON 输出
我们可以只打印响应体,但正如你在图 3.15 中看到的,响应体包含的不仅仅是文本输出。我们真正想要的数据存储在 choices 子对象中的一个 name:value 对中。为了只访问这部分数据,我们将使用 compose 动作中的表达式来提取我们想要的输出,并将其保存到变量中以供以后使用。
从 Power Automate 流程中,你可以按照以下步骤操作:
- 在HTTP操作之后,选择新建步骤:

图 3.21 – 添加新步骤
-
在选择一个操作框中,搜索并选择Compose操作。
-
选择Compose操作的输入框。如果需要,点击添加动态内容链接以显示弹出窗口。
-
在表达式构建器框中,开始键入
outputs并选择outputs函数:

图 3.22 – 添加 triggerOutputs 函数
-
你可以用以下文本完成其余的功能:
outputs('HTTP')?['body/choices'][0]['text']让我们深入探讨这个表达式:
在这个例子中,
'HTTP'引用了前面的操作。我们正在寻找该操作的结果(因此使用outputs函数)。?字符用于选择我们想要引用的元素、参数或子对象。在这种情况下,我们正在选择 body 元素。从查看测试流程的输出图 3.20中,我们知道 body 元素本身有许多子元素或子对象(body/choices)。根据生成的输出类型,
[0])。我们在这个元素内部寻找的名称/值对的名称是text。因此,当阅读表达式时,它说“使用 HTTP 操作的输出,在 body/choices 元素中查找,选择第一个元素,然后在该元素内部,捕获 text 对象的值。”
-
然后,点击添加步骤。
-
选择初始化 变量操作。
-
在
ComposeOutput中,并将类型设置为字符串。 -
在值框中,添加表示Compose变量输出内容对象的动态内容令牌,如图图 3.23所示:

图 3.23 – 添加初始化变量步骤
- 当你完成时,点击保存然后重新测试。
在这一点上,你可以转到流程的运行历史记录并检查输出:

图 3.24 – 查看流程的输出
就这样!你已经成功地将数据发送到 ChatGPT 并接收了数据(并且在过程中学习了一些关于 JSON 的知识)。
摘要
在本章中,你迈出了使用 ChatGPT 和生成式 AI 与 Power Platform 相结合的第一步。通过你创建的示例流程,你能够接收输入,使用两个不同的操作将其发送到 ChatGPT,然后提取响应。
在下一章,我们将探讨使用 AI 来帮助构建更复杂的流程。
第五章:使用 ChatGPT 和 Copilot 创建流程和应用程序
在上一章中,我们通过发送提示并得到一些回应,在 ChatGPT 的水中试水。
在本章中,我们将更深入地探讨,了解一些从 AI 和自动化中获得帮助的有趣方法。也许你想要自动化比内置的 Power Automate 模板更复杂的事情,或者你不确定需要哪些连接器和操作。也许你以前从未构建过 Power App,不知道从何开始。
这些都是 AI 辅助自动化的绝佳用例。
在本章中,我们将探讨一些用例,并使用 AI 辅助来帮助构建过程。
与 Power Automate 一起工作
Power Automate,作为 Power 平台中的业务和流程自动化工具部分,可以简单到你想(或需要)的任何程度。从复制文件或发送电子邮件这样的简单流程,到将行插入数据库的更复杂流程,Power Automate 几乎可以帮助任何流程。
在下一节中,我们将探讨 ChatGPT 可以提供什么样的帮助。
使用 ChatGPT 创建流程
当涉及到 Power Automate 时,ChatGPT 可以提供一些很好的指导,告诉你如何开始。
想象一下,你在一个传说中的制造集团 Contoso 的市场部门工作。你希望监控 Twitter(或现在称为 X)上提及 Contoso 的时刻。
你可以向 ChatGPT 提出类似的问题:

图 4.1 – 向 ChatGPT 询问如何创建流程
如你所见,ChatGPT 可以提供相当直接的指导,告诉你如何做某事。
使用 ChatGPT 创建流程的限制
如果你想得到更多,比如一个可以导入的完整流程呢?
到目前为止,ChatGPT 无法以任何有意义的方式打包流程,或提供可以导入的下载。当你从 Power Automate 界面导出流程时,生成的 ZIP 文件是一组描述流程触发器和操作的 JSON 文件,以及连接定义和一个提供有关文件和流程本身元数据的清单文件。
相反,它可以在你在 Power Automate 中创建它或使用一些 Power Platform 命令行界面工具之后,提供几种不同的导出指令。
你也可能注意到,如果你的指令没有很好地定义或不完整,ChatGPT 可能会提供一些建议。在阅读图 4**.1 中的样本指令时,注意步骤 6*有关于操作的提示。提示没有提供执行操作的指导——而操作是创建流程的重要组成部分。
在阅读了 ChatGPT 的指令后,你可能决定你喜欢将帖子发布到 Teams 频道的建议。你甚至可以回过头来询问 ChatGPT 如何将内容添加到你的流程中!

图 4.2 – 使用 ChatGPT 更新流程
你会注意到它并不完美——ChatGPT 假设你已经用某种东西填写了第 6 步的空白。幸运的是,很容易看到差距并在飞行中做出调整:你只需合并两组指令,从第一个提示的第一步开始,然后从第二个提示的第 2 步继续。
使用 ChatGPT 精炼输出
这个精炼输出的过程是艺术和科学的结合。在某些情况下,你可能希望向 ChatGPT 提供一些输出示例以供模仿或特定的数据集以供工作。
微调模型是一项大量工作,需要大量的训练数据和时间,并导致针对特定场景的更多特定性。虽然这在某些情况下可能是所希望的,但在通用人工智能中并不非常实用。在这种情况下,你可以使用一种称为射击学习的技术。
射击学习的概念相当简单:
零次学习:这种类型的学习要求模型在没有先前的知识或训练示例的情况下执行任务。这是大多数人使用 ChatGPT(以及我们在前面的示例中使用的)的方式。
单次学习:在这种类型的示例中,你可以向模型提供一些上下文数据来展示如何解释数据。例如,当与基于图像的人工智能模型一起工作时,你可能会上传一些不同品种的猫和狗的标记图像。然后,你可以向模型展示一张新图像并询问它,“猫还是狗?”
少次学习:这种学习类型将单次学习的概念进一步扩展,允许你输入几个示例。你可以输入四到五个玛雅·安吉洛、巴勃罗·聂鲁达或威廉·莎士比亚的引文,然后要求模型生成一个听起来像这些作者之一的引文。
可能你会将这项工作交给其他人,他们可能没有你那么强的直觉,或者对 Power Automate 的熟悉程度不同,你希望提供更简洁的输出。你可以尝试用更详细的语言重述你的提示,并要求 ChatGPT 提供一个完整的解决方案,就像我在图 4.3中做的那样:

图 4.3 – 向 ChatGPT 求一个完整的 Power Automate 解决方案
虽然 ChatGPT 的低端订阅不能直接创建流程,但市场上有一个新的解决方案可以做到这一点。
使用 ChatGPT Plus 创建流程
2023 年 9 月,微软发布了一个新的 ChatGPT 插件,它提供了 ChatGPT 和 Power Automate 之间更好的集成。
首先,你需要将你的标准 OpenAI 订阅升级到 Plus 订阅。
一旦你完成了这些,你需要进行几个步骤:
- 首先,点击页面左下角的你的名字或登录 ID,然后选择设置和测试版菜单,如图 4.4 所示:

图 4.4 – 设置 & 测试版菜单
- 然后,在测试版功能下,打开插件的滑块(见图 4**.5):

图 4.5 – 启用插件
- 在页面顶部选择GPT-4模型,然后选择插件****测试版选项:

图 4.6 – 选择插件测试版选项
- 接下来,选择未启用插件旁边的下拉箭头,然后选择插件商店:

图 4.7 – 启动插件商店
-
点击确定以确认弹出页面上的信息。
-
在搜索栏中输入
Power Automate,然后点击Power Automate插件卡片中的安装:

图 4.8 – 搜索 Power Automate 插件
-
阅读同意书。提供必要的同意并点击接受。
-
Power Automate 插件现已启用并可供使用,如图 4**.9所示:

图 4.9 – Power Automate 插件已启用
现在,剩下的就是再次尝试使用已启用的 Power Automate 插件来输入提示了!

图 4.10 – 使用 ChatGPT 和 Power Automate 插件创建流程
点击链接将启动 Power Automate 并显示您流程的预览:

图 4.11 – 查看建议的流程
您可以简单地遵循提示来完成设置。
回顾
你是否注意到了你被引导到的 Power Automate 页面上的有趣之处?没错——Power Automate 的描述以设计功能。我们将在下一节中探讨这一点。
使用 Copilot 创建流程
Copilot 是微软的伞形品牌,涵盖了广泛的 AI 辅助技术。Power Automate 利用 OpenAI 模型,在描述以设计功能名下促进自然语言处理和交互。
这意味着什么?本质上就像将 ChatGPT 等生成式 AI 的所有功能原生集成到 Power 平台:

图 4.12 – Copilot 和“描述以设计”功能
通过直接在 Copilot 文本区域输入您的自然语言文本,您可以跳过 ChatGPT Plus 插件的步骤,并在 Power Automate 中直接开始创建和编辑体验。
例如,我决定从 Twitter 示例中转变,尝试一些更复杂的东西。在 图 4.13 中显示的示例中,我要求 Copilot 创建一个流程,该流程将发送我所有未读消息的每周总结电子邮件,这是它提出的内容:

图 4.13 – Copilot 根据自然语言输入创建流程的初始尝试
它看起来很接近——它确实包含了一些正确的组件(例如获取我的 Office 365 个人资料和连接到我的邮箱),尽管我没有看到任何考虑总结要求的动作。尽管如此,它可能是一个不错的起点。
你也可以尝试重新措辞提示,看看是否能得到更好的结果。例如,我在 图 4.14 中更新了提示,得到了可能更接近的结果,尽管一些项目似乎顺序不当:

图 4.14 – Copilot 生成的修订版流程
当你对 Copilot 提供的内容感到满意(尽可能满意)时,你可以让 Copilot 创建流程。在我的例子中,点击 下一步 后,我看到了一个对话框,需要提供任何凭证,以及再次列出构成流程的步骤。
点击 创建流程 将实例化 Copilot 安排的动作和步骤:

图 4.15 – 准备创建流程
在框架搭建完毕后,你就可以像其他流程一样拖放步骤或添加动作。其中一个更有趣的功能是使用 Copilot 来 更新 流程并对其进行细化,如 图 4.16 所强调的:

图 4.16 – 使用 Copilot 功能更新流程
作为一项预览功能,Microsoft 会提前告诉你并非所有连接器或动作都受支持,这可能是导致结果好坏参半的原因,如 图 4.17 所示:

图 4.17 – 尝试使用 Copilot 更新现有动作
虽然它没有做到我想要的样子,但看到它的进步还是很令人兴奋的。作为一个基于 AI 的助手,Copilot 是探索 Power Automate 空间的好方法。
与 Power Apps 一起工作
现在,让我们转换一下思路,看看我们如何利用 AI 来帮助在应用程序领域进行创作。
使用 ChatGPT 构建应用程序
那么,你如何开始呢?你可以尝试从空白画布开始创建新的流程,但对于我们中的许多人来说,这个空白画布也意味着很多迷茫。幸运的是,如果你有一个想要去的地方的想法,AI 可以帮助你到达那里。
与 Power Automate 一样,你可以尝试使用 ChatGPT 来指导你的设计。在这个例子中,我指示 ChatGPT 创建一个 Power App,该应用可以用来通过照片盘点我的车库中的某些物品。该应用应尝试进行一些视觉识别,将数据保存到描述中,然后将物品上传到 SharePoint 列表中。
图 4.18 展示了 ChatGPT 对这个任务的响应:

图 4.18 – 请求 ChatGPT 创建 Power App
它开始得很好,但正如你在 图 4.19 中可以看到的,我想要实现的具体性很快就减弱了:

图 4.19 – Power App 的配置
一旦它到达流程的更复杂部分,ChatGPT 没有提供关于如何做的良好指令,而是退回到了 在此处插入自己的 步骤。
记住,ChatGPT 是对话式的,所以你可以告诉它之前的输入不是你想要的,你需要更多细节。你可以提供具体的指令以及部分流程。使用这些细化策略可以帮助你更接近你的结果,如图 图 4.20 所示:

图 4.20 – ChatGPT 提供更详细的解释
这是一个更有帮助的响应——特别是对于那些不太熟悉 Power Apps 平台的人来说。
让我们看看 Copilot 与 Power Apps 集成后如何处理这个相同的任务!
使用 Copilot 构建应用
与 Power Automate 一样,Power Apps 也对 Copilot 有一些支持:

图 4.21 – Power Apps Copilot 提示
在下面的例子中,我将提供与 ChatGPT 提供的相同初始指令。如图 图 4.22 所示,初始响应似乎并不那么有用,只是展示了一个包含 名称、描述 和 照片 列的样本数据表:

图 4.22 – Power Apps Copilot 的初始响应
点击 创建应用 后,Power Apps Studio 页面就会出现。结果是一个单页应用,它以表格的形式收集信息,如图 图 4.23 所示:

图 4.23 – 使用 Copilot 创建的示例应用
你可以点击并预览该应用,但到目前为止,它有点令人失望。
小贴士
Power Apps Studio 界面在添加或更新组件方面不如 Power Automate 直观——尤其是当在画布应用上工作时 Copilot 集成没有显示时。如果你在Power Apps Studio 的标题栏上没有看到 Copilot 图标,请查看 Power Platform 管理中心(admin.powerplatform.com),然后在环境下选择你的环境 > 设置 > 产品 > 功能,并确保Copilot和AI Builder 预览模型都已开启。
虽然自然语言处理对很多事情都有帮助,但在某些情况下,你需要找出将触发 AI 以你想要的方式协助的关键词和短语。我将回到画板,重新开始——这次,重新措辞提示并使用 Copilot 页面上的细化控件。
正如你在图 4.24中看到的,重新措辞提示并使用 Copilot 界面帮助我更接近数据输入页面:

图 4.24 – 使用 Copilot 更新的应用
从这里,我可以创建这个应用,然后开始修改它。通过在 Power Apps Studio 的标题栏上选择 Copilot 图标,我可以尝试指示 Copilot 更新内容,有时比其他时候更成功:

图 4.25 – 尝试使用 Copilot 修改属性
在图 4.25中,确实添加了一个复选框,但它最终被添加到了主屏幕上。文本,而不是设置为来自妈妈的礼物,被配置为选项 1的默认标签。在移除复选框并告诉 Copilot 将其添加到Form1(输入表单的名称),然后设置文本为来自妈妈的礼物后,我取得了一些成功,尽管控件仍然在主屏幕上,实际上并不是输入表单的一部分:

图 4.26 – 与 Copilot 过程合作
即使经过多次改写尝试,我也无法让 Copilot 将一个简单的复选框添加到收集数据的输入表单中:

图 4.27 – 使用 Copilot 进行细化
对于许多目的来说,目前这个阶段——尤其是如果你刚开始熟悉 Power Apps——询问 ChatGPT 如何做某事可能比让 Copilot 为你做它更有效率:

图 4.28 – 向老朋友 ChatGPT 求助
这并不是说 Copilot 不能做到——但正如我之前提到的,你确实需要知道如何与 Copilot 沟通,才能让它变得有用(我们将在第五章中讨论)。你不应该以为只要说出一个应用的名字,Copilot 就能将其变为现实。虽然 Power Apps Copilot 确实有助于启动一些简单的画布应用,但你仍然需要相当多的 Power Apps 知识,以及传统的设计技能,才能将它的应用生成尝试转化为更有用的东西。
摘要
本章的最终收获是,像 ChatGPT 和 Copilot 这样的 AI 助手,本质上只是助手。尽管生成式 AI 目前还无法替你完成工作(至少目前是这样),但它是一个极好的辅助工具——尤其是在你尝试突破舒适区的时候。
如果你正在寻找启动新应用和工作流的途径,AI 助手可以帮助你开始,但最终你需要继续完善你的提示,搜索博客和社区群组,以及学习底层技术本身,才能真正取得成功。
在下一章中,我们将扩展使用 Copilot 进行 Power Apps 的应用。虽然我们的第一次尝试并没有取得很大的成功,但有一些技巧你可以使用,以使 Copilot 和 Power Apps 结合在一起,在最短的时间内产生可工作的应用。
第六章:使用 Copilot 启动 Power App
Copilot 已经开始进入 Microsoft 365 平台。然而,正如你在上一章中看到的,如果你只是像对待 ChatGPT 一样寻求 Copilot 的帮助,你可能会感到沮丧。
在本章中,我们将深入了解如何让 Copilot 与你合作创建可用的应用程序。我们将尝试一个比我们在第四章中一起工作的车库库存应用更复杂的应用程序。在这里,我们将尝试使用几个 SharePoint 列表和 Copilot 创建一个简单的请假或休假请求应用。
配置先决条件
这个请假请求示例应用将包括几个 SharePoint 列表:一个用于存储关于请求的信息(请求者、开始和结束日期、审批状态等),另一个用于存储关于审批者的信息。
在 Entra ID 中创建身份
由于我们将从 Entra ID 中挑选用户,你需要用用户填充目录。你应该创建尽可能详细信息的用户。
进一步阅读
有关在 Entra ID 中创建用户的更多信息,请访问learn.microsoft.com/en-us/microsoft-365/admin/add-users/add-users?view=o365-worldwide。
创建 Dataverse 环境
虽然 Microsoft 365 租户是组织逻辑边界,但环境是一个用于分割应用程序、用户、部门或业务单位的逻辑容器或边界。一个 Microsoft 365 租户可以有多个环境。环境用于分组 Power Platform 组件(如 Power Automate 流程、Power Apps 应用程序、Power Pages 站点或 Dynamics 365 组件),以及在 Dataverse 数据库中的专用信息存储。一个 Dataverse 环境只能有一个数据库。
默认情况下,你的 Microsoft 365 租户应该有一个预构建的 Dataverse 环境(包含一个可以存储高达 3 GB 数据的数据库),如图图 5.1所示:

图 5.1 – 查看 Dataverse 的容量
如果由于某种原因它没有(或者你不想使用默认环境),你可以按照以下步骤创建一个新的环境:
-
导航到 Power Platform 管理中心(
admin.powerplatform.com)并使用被分配了管理角色(如全局管理员或 Microsoft Power Platform 管理员)的用户登录。 -
选择环境,然后点击新建。
-
为环境输入一个名称值并选择一个区域值。
-
选择一个类型值(可以是试用、开发、生产或沙盒),并在目的区域中(可选)输入描述。
-
在添加 Dataverse 数据存储下,将滑块移动到是以启用数据库。然后,点击下一步。
-
在向导此页面上,唯一需要填写的是 安全组。点击 选择 以选择环境的安全控件。您可以在 公开访问 下选择 无 以允许任何用户访问,或在 受限访问 下选择现有的安全组以限制访问。
-
点击 保存。
几分钟后,环境应该已经创建。无论何时您希望在此环境中创建或管理内容,您都需要在创建者门户中切换环境,如图 图 5**.2 所示。

图 5.2 – 选择环境
接下来,让我们探索如何使用 Copilot 创建新的 Power App。
如果我遇到困难怎么办?
如果由于某种原因遇到障碍(找不到功能、某个选项没有显示出来,或者某些内容不清楚),帮助只需点击一下!您可以从我们的 GitHub 网站下载本章的工件:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
使用 Copilot 构建新的 Power App
在满足我们的先决条件后,是时候开始构建应用程序了!如您在 第四章 中所看到的,如果您仅使用 Copilot 提示来创建应用程序,您实际上得到的是一个可以用于数据输入的表格。我们将尝试不同的方法 – 从一个空白应用程序开始,然后使用 Copilot 添加和链接组件。
该解决方案建立在具有数据库的 Dataverse(以前称为 Common Data Service)环境之上,将利用员工请求休假的前端入口组件和审批者或经理使用的后端解决方案。
画布和模型驱动应用
Power Apps 有两种类型 – 画布 应用和 模型驱动 应用。画布应用是通过向空白画布页面添加控件来构建的(因此得名)。控件本质上是用户通过点击按钮、添加文本或提交表单等动作与之交互的构建块。然而,模型驱动应用的设计方法与光谱的另一端相反。模型驱动应用用于与结构化数据交互,并从连接的数据源中获取其核心架构和界面组件配置。有关画布应用的更多信息,请参阅 learn.microsoft.com/en-us/power-apps/maker/canvas-apps/getting-started。有关模型驱动应用的更多信息,请参阅 learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/model-driven-app-overview。
配置数据元素
在您开始创建应用程序之前,您需要设置一些结构来存储数据。本质上,您将创建一个带有列的表——您可以将其视为电子表格。在 Dataverse 表中,列被配置为具有类型,这相当于可以存储的数据类型。
按照以下步骤开始:
Copilot 可用性
在撰写本文时,Power Apps Maker 门户的 Dataverse 部分没有 Copilot 界面。
- 导航到 Power Apps Maker 门户 (
make.powerapps.com) 并选择解决方案。
什么是解决方案?
解决方案可以被视为容器对象,用于在环境之间传输应用程序和组件,并在 Power Platform 中实现应用程序生命周期管理(ALM)。一个解决方案可以像单个流程一样简单,也可以包括应用程序和组件,例如网站地图、应用程序和表。
-
点击新建解决方案。
-
输入一个显示名称值。名称属性将自动计算,尽管您可以编辑它。然后,点击创建:

图 5.3 – 创建新解决方案
- 展开新菜单,指向表,然后选择表:

图 5.4 – 添加表
- 输入一个
休假表。选中启用附件(包括笔记和文件)复选框并点击保存:

图 5.5 – 创建新表
术语更新
表之前被称为实体。
- 点击新建 > 列:

图 5.6 – 添加列
术语更新
列之前被称为字段。
- 在显示名称字段中的姓氏,选择单行文本下的数据类型,并点击保存。见 图 5.7:

图 5.7 – 配置列
- 重复 步骤 7 以根据 表 5.1 中显示的内容创建更多字段:
| 字段名称 | 数据类型 | 附加属性 | 必需 |
| --- | --- | --- | --- |
| 姓氏 | 单行文本 | | 业务必需 |
| 电子邮件 | 单行文本 | 格式:电子邮件 | 业务必需 |
| 监督员 | 单行文本 | | 业务必需 |
| 监督员电子邮件 | 单行文本 | 格式:电子邮件 | 业务必需 |
| 开始日期 | 日期和时间 | 仅日期 | 业务必需 |
| 结束日期 | 日期和时间 | 仅日期 | 业务必需 |
| 请求类型 | 选择 | 与全局选择同步:否选择:休假选择:生病选择:丧亲选择:陪审团服务 | |
表 5.1 – Dataverse 字段
- 从 Power Apps Maker 门户,展开表 > 视图并选择活跃的休假表。见 图 5.8:

图 5.8 – 激活休假表
- 将 First name(名字)、Last name(姓氏)、Start date(开始日期)和 End date(结束日期)字段从 表列 区域拖动到主窗口中:

图 5.9 – 更新视图
-
点击 保存 并发布。
-
点击 后退 返回到 对象 视图。
-
展开 表 > 请假表 并选择 表单。选择将 表单类型 设置为 主 的表单。见图 图 5.9:

图 5.10 – 查看表单
- 将您之前创建的 Dataverse 列添加到视图中,如图 图 5.11 所示。完成操作后,点击 保存 并发布:

图 5.11 – 添加 Dataverse 列
接下来,是构建后端应用程序的时候了。
创建模型驱动后端应用程序
在本节中,您将配置一个新模型驱动应用程序,管理人员将使用该应用程序来批准请假请求。按照以下步骤操作:
Copilot 可用性
在撰写本文时,Copilot 不可用于处理模型驱动应用程序。
- 导航到 Power Apps Maker 门户 (
make.powerapps.com)。然后,展开 解决方案 并选择 Time off Requests 解决方案:

图 5.12 – 选择“请假请求”应用程序
- 点击 新建,展开 应用程序,并选择 模型驱动应用程序:

图 5.13 – 创建新的模型驱动应用程序
-
输入
Time off后端应用程序。 -
展开高级下拉菜单,选择 使用自定义解决方案中的组件。在 解决方案 下,选择 Time off Requests 解决方案,然后点击 创建:

图 5.14 – 设置新模型驱动应用程序的参数
-
点击 后退 返回到 对象 页面。
-
选择 网站地图。
-
选择 Time off Back-end App 网站地图:

图 5.15 – 查看网站地图
-
点击 Area1 标签,然后从菜单中选择 添加。选择 组。
-
点击 添加,然后点击 子区域。
-
在 属性 窗格中,在 类型 下选择 实体。
-
在 实体 下,选择 Time off Table(请假表):

图 5.16 – 更新网站地图
-
点击 保存 并关闭。
-
在 对象 视图中,选择 网站地图,然后点击 发布:

图 5.17 – 发布网站地图
- 点击 应用程序,然后点击 发布 所有自定义设置:

图 5.18 – 发布应用程序自定义设置
-
通过点击打开应用程序。
-
从顶部菜单中选择 播放:

图 5.19 – 运行应用程序
- 在应用程序上,点击新建以添加新记录:

图 5.20 – 创建新记录
- 按如下方式填写记录:

图 5.21 – 创建记录
这样,基于模型的移动应用程序就创建完成了。现在,是时候创建最终用户界面了。
创建画布前端应用程序
画布应用程序将由最终用户用于创建休假请求。在这里,您可以使用 Copilot 来帮助配置应用程序:
-
导航到 Power Apps Maker 门户(
make.powerapps.com)。然后,展开解决方案并选择休假请求解决方案。 -
选择应用。
-
点击新建 > 应用 > 画布应用程序。
-
在“休假请求”下,选择一个格式(无论是平板电脑还是手机),然后点击创建。
-
在导航面板中,选择数据。
-
点击添加数据并选择Office 365 用户连接器。在弹出窗口中,点击连接。
-
在“添加新表单。将表单的数据源设置为'Time off Tables'”:

图 5.22 – 添加表格并连接到数据源
注意
可能需要与 Copilot 尝试几次才能得到您想要的结果。如果它无法连接到数据源,请确保您输入的名称与表格下显示的名称完全一致。您可以打开表单的属性并选择数据源下拉菜单来手动选择它。
-
在数据源下,点击编辑字段。
-
点击添加字段。添加您之前创建的字段(列):

图 5.23 – 添加剩余字段
-
通过指示 Copilot 将所选表单的默认模式设置为“新建”,来更新表单的默认模式。或者,您也可以通过在属性表单旁边点击默认模式的下拉菜单并选择新建来更新配置。
-
指示 Copilot 向 Screen1 添加一个按钮。配置按钮以提交表单并导航到 Screen2。验证按钮的
OnSelect方法显示SubmitForm('FormName');Navigate('Screen2')函数并引用表单的名称。将按钮拖到屏幕上的适当位置:

图 5.24 – 向屏幕添加按钮
-
指示 Copilot 将按钮文本更新为“提交”。
-
指示 Copilot 使用“成功模板”创建一个新屏幕。或者,从菜单中选择新屏幕 > 模板 > 成功。默认情况下,屏幕将被命名为 Screen2。您应该会自动被导向 Screen2。
-
指示 Copilot 在 Screen2 上添加一个标签,上面写着“感谢您提交您的请求。”屏幕上应出现一个新的标签。调整大小,以便所有文本都可见。
-
指示 Copilot 在 Screen2 上添加一个标签为“开始新的请求”的按钮,该按钮导航到 Screen1 并重置表单。应创建一个新的按钮,该按钮具有
Navigate('Screen1');ResetForm('Form1')(或您的表单名称)的功能。将其拖到屏幕的空白区域,并调整大小以便所有文本都可见。参见图 5**.25:

图 5.25 – 完成表单
- 点击播放按钮进行测试并添加记录:

图 5.26 – 测试应用
-
测试应用后,点击X图标关闭它。然后,点击保存****并发布。
-
在发布页面,输入简短描述并点击发布****此版本:

图 5.27 – 发布应用
接下来,我们将使用 Power Automate 来启动审批。
启用自动化
在本节中,您将使用 Power Automate 来帮助自动化处理和通知:
-
导航到 Power Apps Maker Portal (
make.powerapps.com)。然后,展开解决方案并选择休假****请求解决方案。 -
选择应用。
-
点击新建,指向自动化,指向云流程,然后选择自动化:

图 5.28 – 创建新流程
- 在构建自动化云流程向导中,输入流程名称值并选择当行被添加、修改或删除的 Microsoft Dataverse 触发器:

图 5.29 – 选择触发器
-
点击创建。
-
更新触发器。为此,在更改类型下选择添加。然后,在表名下选择休假表选项。最后,在范围下选择组织:

图 5.30 – 更新触发器
-
点击新建步骤。
-
在开始并等待中,选择如图图 5**.31所示的开始并等待审批操作:

图 5.31 – 选择开始并等待审批操作
- 使用动态内容令牌填写审批:

图 5.32 – 填写审批步骤
-
点击新建步骤并选择条件控件。
-
在第一个批准:

图 5.33 – 填充条件
-
在是分支中,点击添加****一个操作。
-
选择发送****电子邮件(V2)。
-
使用动态内容令牌和文本填充电子邮件响应。
-
在 如果没有 分支中,点击 添加 操作。
-
选择 发送 电子邮件(V2)。
-
使用动态内容标记和文本填充电子邮件响应。
-
查看流程。参见 图 5.34:

图 5.34 – 完成流程
- 点击 保存。
完成此操作后,您可以启动画布应用程序输入数据,然后使用模型驱动应用程序检查提交的数据。这样,最终用户有一个简单的前端可以与之交互,而经理或审批者则可以更全面地查看组织的休假请求。
进一步探索
有几种方法可以提高这些应用程序的可用性。例如,您可以通过更改 默认 属性来自动填充请求者的姓名或电子邮件地址(以及经理的姓名和地址),而不是接受默认值:

图 5.35 – 更改默认属性
尝试使用 表 5.2 中显示的值更新控件,以提高应用程序的可用性:
| 字段 | 更新后的默认 属性值 |
| --- | --- |
| 名字 | Office365Users.MyProfile().GivenName |
| 姓氏 | Office365Users.MyProfile().SurName |
| 电子邮件 | Office365Users.MyProfile().Mail |
| 监督员 | Office365Users.Manager(Office365Users.MyProfile().UserPrincipalName).DisplayName |
| 监督员邮箱 | Office365Users.Manager(Office365Users.MyProfile().UserPrincipalName).Mail |
表 5.2 – 建议的默认属性值
尽管这个特定的解决方案不是最复杂的,但它可以用来展示 Power Platform 和协作者的能力。
摘要
协作者有潜力成为公民(和专业)开发者工具箱中的一个真正强大的补充。然而,正如您从我们与它的互动中看到的,它既不是万无一失的,也不是理解 Power Platform 的工作原理的替代品。在撰写本文时,Dataverse 和模型驱动应用程序没有协作者界面,当在 Power Platform 解决方案上下文中启动时,Power Automate 也没有。
协作者仍处于起步阶段,因此您可以期待它在接下来的几个月和几年里变得更好。话虽如此,如果您需要构建一个应用程序,并且您从对 Power Apps 知识最少的地方开始,您可能想从一些基础知识开始,例如 Matthew Weston 和 Elisa Barcena Martin 的 Learn Microsoft Power Apps, 2nd Edition。
在下一章中,我们将探讨如何使用 Power Platform 的一部分 AI Builder 工具来分析客户反馈。
第七章:使用情感分析处理数据
到目前为止,我们已经探讨了使用 AI(特别是微软的 Copilot 和 ChatGPT)来帮助我们创建和修改工具(如流程和应用程序)。虽然它们可能很有帮助,但通常需要大量的额外努力才能让这些通用助手完成非常具体的步骤导向任务。
Power Platform 允许您利用 AI 在广泛的内容和数据类型上做出判断,以帮助在机器速度下模仿人类评估。
例如,人类可以轻易地扫一眼名片,就能辨认出人的姓名和职位,无论这些信息在名片上的位置如何。然而,对于传统的计算机逻辑来说,这项任务要困难得多。随着名片设计的演变,数据字段发生变化,这使得传统的自动化引擎识别和识别变得更加具有挑战性。AI 模型引入了数据的相关意识,简化了自动化过程,使其类似于人类的表现。另一个例子可能是确定客户对某个产品或服务的感受。对于人类来说,推断客户的电子邮件是否有快乐或愤怒的语气相对容易,但使用标准的编程逻辑则要困难得多。
Power Platform 提供了访问各种 AI 能力的途径——无论是利用为特定类型任务训练的现有 AI 模型,还是将数据输入更通用的 AI 工具以对内容进行推理。Power Platform 的本地 AI 模型分为两大类:预构建模型(针对特定类型的数据集和狭窄的内容领域进行训练的模型)和自定义模型(具有一些核心训练但需要额外的定制和与您的数据进行训练的模型)。
那么,情感分析究竟是什么呢?
简而言之,情感分析回答的问题是:“在这段内容中存在哪些类型的情感?”Power Platform 的情感分析模型可以检查一段内容,并返回以下四种情感之一:
-
积极
-
消极
-
中立
-
混合
在处理文本时,情感分析 AI 模型为每个句子以及整个内容返回一个情感值。除了情感值之外,情感分析还提供置信度评分,表示模型对其评估的信心程度,评分范围在 0 到 1 之间,其中 1 表示更有信心,0 表示信心不足。然而,情感分析确实有其局限性——例如,如果内容中存在错误或不恰当的用词——这可能会影响评分。
本章的场景基于一家虚构公司,该公司使用客户服务邮箱作为评论和投诉的渠道。业务目标是处理电子邮件并确定情感。如果情感是消极的,解决方案应将消息发布到 Teams 频道,以便服务代表跟进客户。
让我们开始吧!
许可证必备条件
在 Power Platform 中使用 AI 模型和连接器有几个必备条件:
-
包含 Microsoft Dataverse 的订阅
-
AI Builder 容量(或试用容量)
-
Power Apps 或 Power Automate 高级许可
获取适当数量许可的最简单方法是注册包含 Power Apps 和 Power Automate 高级许可以及一定数量的 AI Builder 容量信用额的 Microsoft 365 E5 试用版。
如果您已有 Microsoft 365 订阅,您可以从 Microsoft 365 管理中心(admin.microsoft.com)注册 Power Apps 或 Power Automate 高级许可,如图 图 6**.1 所示:

图 6.1 – Microsoft 365 管理中心
您可以在 Power Platform 管理中心(admin.powerplatform.microsoft.com/resources/capacity#add-ons)下的 资源 > 容量 查看您的 AI Builder 容量分配情况,如图 图 6**.2 所示:

图 6.2 – 查看 Power Platform 容量
接下来,我们将查看构建解决方案的必备条件。
配置解决方案必备条件
一旦您解决了许可证问题,您还需要设置一些事情以确保此演示可以工作:
-
邮箱(无论是标准邮箱还是 Exchange Online 中的共享邮箱)
-
至少拥有默认通用频道的 Microsoft 团队
虽然不是必需的,但拥有一个免费的电子邮件账户(例如 Outlook.com 或 Gmail.com 账户)来验证解决方案是否端到端工作也是有帮助的。
创建共享邮箱
首先,我们将指导您创建一个共享邮箱。共享邮箱本身不需要任何特殊许可,但需要授权用户访问:
-
登录到 Microsoft 365 管理中心(
admin.microsoft.com)。从那里,展开 团队与组 并选择 共享邮箱。 -
如 图 6**.3 所示,点击 添加共享邮箱:

图 6.3 – 查看共享邮箱
- 在 添加共享邮箱 弹出窗口中,输入 名称 值并根据需要调整 电子邮件 地址:

图 6.4 – 创建共享邮箱
- 点击 添加成员到您的 共享邮箱:

图 6.5 – 查看新创建的邮箱
-
在 共享邮箱成员 弹出窗口中,点击 添加成员,选择组织中的至少一个拥有邮箱许可的用户,然后点击 添加。
-
关闭弹出窗口。
当使用 Power Automate 时,您需要使用在 步骤 5 中授予访问权限的账户的凭证。
接下来,您需要创建一个团队。
创建 Microsoft Teams 团队
Microsoft Teams 团队将用于接收来自 Power Automate 的通知。要从 Microsoft 365 管理中心创建团队,请按照以下步骤操作:
所有道路都通向罗马
在 Microsoft 365 中完成同一任务的方法有很多。虽然这些步骤详细说明了通过 Microsoft 365 管理中心创建团队(因为我们已经在这里),您也可以直接从 Microsoft Teams 中完成。要了解如何使用 Teams 来完成此任务,请访问support.microsoft.com/en-au/office/create-a-team-from-scratch-in-microsoft-teams-174adf5f-846b-4780-b765-de1a0a737e2b。
-
从 Microsoft 365 管理中心(
admin.microsoft.com),展开团队和组,然后选择活动团队****和组。 -
在团队和 Microsoft 365 组选项卡上,点击添加****团队。
-
在添加团队向导的基本页面,为团队提供一个名称值并点击下一步:

图 6.6 – 创建新的团队
-
在所有者页面,添加至少一个所有者(例如管理共享邮箱的账户)。然后,点击下一步。
-
在成员页面,添加任何其他成员并点击下一步。
-
在设置页面,输入团队电子邮件地址值。然后,点击下一步:

图 6.7 – 为团队配置电子邮件地址
- 在完成页面,检查设置并点击添加团队。
现在,让我们进入有趣的部分!
配置情感分析流程
如您在本章前面所学,情感分析提供了一种评估内容语气并提供输出的机制。为了应对处理负面客户反馈的业务场景,您可以使用情感分析流程来处理收到的共享邮箱中的消息。
如果我遇到困难怎么办?
如果您因为某些原因遇到障碍(找不到功能、选项没有显示或某些内容不清楚),帮助只需点击一下!您可以从我们的 GitHub 网站下载本章的工件:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
让我们创建流程:
-
导航到 Power Automate 制作门户(
make.powerautomate.com)。 -
从导航菜单中选择创建。
-
在从空白开始下,选择自动****云流程:

图 6.8 – 开始一个新的流程
- 在构建自动化云流程向导中,输入流程名称值然后选择当共享邮箱中收到新电子邮件(V2)触发器。完成后点击创建:

图 6.9 – 选择流程的触发器
-
在画布区域,选择当共享邮箱中收到新电子邮件(V2)触发器。
-
在弹出窗口中,如果屏幕显示有关无效连接的消息,则点击更改连接链接。参见 图 6**.10:

图 6.10 – 配置共享邮箱
- 选择将用于验证邮箱的凭据。如果凭据未列出,则点击添加新并提供对共享邮箱有访问权限的账户的用户名和密码。

图 6.11 – 更新连接设置
-
在弹出窗口的参数选项卡中,输入将用于接收客户电子邮件的共享邮箱的电子邮件地址。当提示时,选择使用 <电子邮件地址> 作为 自定义值。
-
点击<< (收起)图标以关闭弹出窗口。
-
在画布区域,点击触发器下的+图标以添加新步骤,然后点击添加 操作:

图 6.12 – 添加新操作
- 在搜索框中的
detect并选择检测文本中使用的语言操作,如图 图 6**.13 所示:

图 6.13 – 选择检测文本中使用的语言操作
- 在检测文本中使用的语言弹出窗口中,点击文本框内的位置。选择闪电图标以展开动态内容选择器:

图 6.14 – 配置检测文本中使用的语言操作
- 选择正文标记:

图 6.15 – 选择正文标记
-
收起弹出窗口。
-
点击For each循环组件外的+图标并选择添加 操作。
-
在搜索框中的
sentiment analysis并选择分析文本中的积极或消极情绪操作。 -
在分析文本中的积极或消极情绪弹出窗口中,选择语言下拉菜单并选择输入自定义值。选择闪电图标以显示动态内容选择器:

图 6.16 – 配置语言字段
-
选择闪电图标以显示动态内容选择器。
-
在动态内容选择器中,在检测文本中使用的语言操作下,选择语言动态内容标记:

图 6.17 – 选择语言动态内容令牌
-
在文本字段内点击并选择动态内容选择器。
-
在动态内容选择器中,在当共享邮箱(V2)中收到新电子邮件操作下,选择正文令牌。
-
收起飞出窗口。
-
查看到目前为止的流程。它应该看起来与图 6.18中所示排列相似:

图 6.18 – 查看流程的当前状态
-
在包含分析文本中的正面或负面情感操作的嵌套For each循环容器内,点击+图标以添加****一个操作。
-
在搜索框的
条件中,选择位于控制下的条件操作。 -
在条件飞出窗口中,点击左侧文本框并选择动态内容选择器。
-
在动态内容选择器中,在分析文本中的正面或负面情感下,选择整体文本情感令牌。如果该令牌不在默认选择列表中显示,您可能需要点击查看更多:

图 6.19 – 选择整体文本情感令牌
- 在右侧文本框中输入
negative:

图 6.20 – 配置条件评估
-
收起飞出窗口。
-
在条件的真分支中,点击+图标以添加****一个操作。
-
在搜索框中,输入
发布消息并选择在聊天或频道中发布消息的 Microsoft Teams 操作:

图 6.21 – 添加在聊天或频道中发布消息的操作
-
在在聊天或频道中发布消息的飞出窗口中,点击登录以创建连接。为将用于发布到 Teams 的用户账户提供凭据。
-
在发布为下拉菜单中,选择流程机器人。
-
在发布到下拉菜单中,选择频道。
-
在团队下拉菜单中,搜索您在许可 先决条件部分创建的团队。
-
在频道下拉菜单中,选择通用。
-
在消息文本框中,为要发布到频道的消息添加详细信息。您可以使用富文本格式选项,以及从动态内容令牌中选择。参见图 6.22:

图 6.22 – 配置在聊天或频道中发布消息的操作
-
收起飞出窗口。
-
查看流程布局,并检查任何明显的错误。参见图 6.23:

图 6.23 – 查看整体流程
- 在菜单栏上,点击保存以保存流程。
检查流程以确保步骤已配置。完成后,就是时候测试它了!
测试流程
现在,是时候确保一切按预期工作:
- 从菜单栏中选择烧杯图标(测试):

图 6.24 – 测试流程
-
选择手动单选按钮并点击测试。
-
通过向配置的共享邮箱发送电子邮件来测试您的流程。确保措辞强烈,以确保您表达的是不满:

图 6.25 – 编写测试电子邮件
- 发送电子邮件后,Power Automate Maker Portal 中的流程运行历史应开始更新:

图 6.26 – 流程执行结果
- 打开 Microsoft Teams(或导航到
teams.microsoft.com)并验证渠道帖子是否已发布:

图 6.27 – 验证渠道帖子
进一步探索
根据您的需求和其它连接的系统,您可能能够扩展和增强此解决方案,包括执行以下操作的流程:
-
连接到电子商务平台并为未来购买生成折扣优惠券代码
-
通过电子邮件回复客户并启动退款
-
与快递承运商集成以生成邮寄标签
在这方面已经覆盖后,让我们总结一下本章所学的内容。
摘要
AI Builder 模型具有许多开箱即用的功能。在本章中,你学习了如何利用 AI 处理客户服务邮箱中接收到的电子邮件。通过情感分析模型,你能够检测电子邮件是否具有整体积极或消极的语气,然后触发额外的操作,在 Teams 频道对话中发布通知。
在下一章中,我们将探讨如何使用 Power Automate 与 AI 服务将简单的 Word 文档转换为 PowerPoint 演示文稿。
第八章:使用 Power Automate 和 AI 构建 PowerPoint 演示文稿
如果您曾经面临过为老板或活动俱乐部准备演示文稿的最后一刻要求,您并不孤单。无论是熟悉的内容还是您以前从未见过的内容,压缩信息并使其对观众易于理解都不是一件小事情。
在本章中,我们将从大家最喜欢的开源知识库维基百科开始,使用 ChatGPT 总结其部分内容并将其插入到 PowerPoint 演示文稿中。
通过一点调整,您可以在存储在 SharePoint、内部企业网站或其他数字内容源中的文档上重复使用这种类型的摘要工具。
许可证要求
在 Power Platform 中使用 AI 模型和连接器的几个先决条件:
-
包含 Microsoft Dataverse 的订阅
-
AI Builder 容量(或试用容量)
-
Power Apps 或 Power Automate 高级许可证
如果您尚未启用 Dataverse 和 AI Builder 容量,请参阅第二章,配置支持 AI 服务的环境,以及第六章,使用情感分析处理数据。
由于 Power Automate 没有内置的 PowerPoint 连接器,这个特定的解决方案需要第三方连接器产品,由软件供应商Encodian提供。此连接器允许您将标准的 Power Automate 对象转换为 PowerPoint 内容。
Encodian 在www.encodian.com/product/flowr/提供免费的 30 天试用,包括 500 个积分的 Flowr 连接器:

图 7.1 – 设置 Flowr 试用
在注册后,您将收到一个 API 密钥(如图图 7.2.2*所示),您可以使用它来配置 Power Automate 中的 Encodian 连接器:

图 7.2 – Encodian API 密钥示例
一旦激活,您将想要创建一个通用的 PowerPoint 模板文件,这样您就可以在需要时保存和重复使用它!
了解 Encodian Flowr 连接器
在您开始处理流程之前,您需要了解如何使用 Encodian Flowr 连接器和其动作。在本节中,我们将查看使此流程正常工作所需的关键部分。为了成功使用连接器和动作,您需要了解以下概念、术语和动作:
-
输入格式化
-
令牌
-
填充 PowerPoint 动作
-
合并 演示文稿 动作
让我们快速浏览一下这些领域的每个部分!
输入格式化
Encodian 的许多内容操作都需要使用结构化数据。在这种情况下,结构化数据通常以JavaScript 对象表示法(JSON)语法提供:
{
"object1" : "value1",
"object2" : "value2—electric boogaloo"
}
如此简单示例所示,JSON 文本格式化为键/值(想想术语:定义)对。JSON,就像许多编程结构一样,也有数组或集合的概念。数组或集合是一组相似的对象。
假设你想要列出一个包含各种食物的集合。当格式化为 JSON 时,它可能看起来像这样:
{
"foods": [{
"category": "fruit",
"data": [
{"type": "orange","count": 1},
{"type": "strawberry","count": 7},
{"type": "apple","count": 3}]
},
{
"category": "grain",
"data": [
{"type": "sorghum","count": 1},
{"type": "wheat","count": 3}]
}]
}
在foods JSON 对象中,你可以看到如何指定数据值的几个示例。既有标准键/值对(如"category":"fruit"),用于标识单个对象,也有数组(如"data": [{"type": "sorghum","count":1},{"type":"wheat","count": 3}]),用于标识键/值对组。
JSON 对象可以包含各种数据类型,包括字符串(文本)、整数(数字)、数组(字符串或键/值对的集合)、布尔值(True 或 False),以及其他 JSON 对象。
进一步阅读
JSON 是一种非常灵活的格式,用于处理结构化内容,因为它既易于阅读,又与平台和语言无关。有关处理 JSON 对象和语法的更多信息,请参阅www.w3schools.com/JS/js_json_intro.asp。你还可以使用jsonformatter.org/等工具来帮助确保你的 JSON 格式正确。
标记
Flowr 的几个操作与特别格式化的标签(或 Encodian 所说的标记)一起工作,连接器将使用这些标签以查找和替换的方式与您提供的内容一起使用。
例如,假设你想要 Flowr 将单词或短语“The quick brown fox did some things”放入一个文档中。你可能会决定将这个短语分配给名为fox的标记。在文档模板中,你会通过输入一系列方括号和尖括号包围的标记名称来指示你想要此文本出现的位置:
<<[fox]>>
请参阅图 7**.3以了解 PowerPoint 幻灯片中一个标记的示例:
![图 7.3 – 在 PowerPoint 幻灯片中查看<<[fox]>>标记](https://github.com/OpenDocCN/freelearn-dl-zh/raw/master/docs/pwrplat-ai-rvl/img/B21234_07_03.jpg)
图 7.3 – 在 PowerPoint 幻灯片中查看<<[fox]>>标记
填充 PowerPoint
填充 PowerPoint操作正是其名称所表示的——它是将内容放入 PowerPoint 幻灯片的主要操作。在分配标记值后,填充 PowerPoint操作将搜索模板文件,用值替换标记。此操作的输入将是标记/内容键/值对以及任何源 PowerPoint 模板文件。输出将是一个完成的 PowerPoint 幻灯片。
合并演示文稿
最后,可以使用合并演示文稿操作将修改后的 PowerPoint 页面编译成一个单一、连贯的文档。输入将是生成的 PowerPoint 文件(通常,每个文件一个幻灯片)和输出将是一个多幻灯片的 PowerPoint 演示文稿。
现在你已经熟悉了我们将要在流程中使用的核心概念,是时候开始工作了!
与维基百科文章交互
由于本例中内容的来源将是一个维基百科文章,因此了解如何收集数据非常重要。维基百科有一个 API 端点 (en.wikipedia.org/w/api.php),它以 JSON 格式返回页面内容,如图 7.4 所示:

图 7.4 – 查看维基百科文章的 JSON 输出
链接是通过以下组件构建的:
-
API URL:
en.wikipedia.org/w/api.php -
操作参数:查询
-
格式参数:JSON
-
标题参数:维基百科文章的标题
-
属性(Prop)参数:提取(文章的全部内容)
我们将使用的数据本身位于 extract 节点中,嵌套在 query JSON 对象内。
在审阅维基百科文章时,你可能会注意到标题是 2 级标题 (<H2>) 标签和 3 级标题 (<H3>) 标签的混合,其中 <H2> 标签用作主要主题标题,而 <H3> 标签表示子主题。对于这个流程,我们将专注于将 <H2> 标签内的内容作为一个单元处理。图 7.5 展示了文本作为 <H2> 标题显示的示例:

图 7.5 – 查看维基百科文章
你可以通过查看所选网络浏览器中的文档源来确认这一点,如图 7.6 所示:

图 7.6 – 查看维基百科文章的源代码
在使用这些信息方面,我们将使用以下结构来总结内容:
{
"title" : "value of the <H2> tag"
"page" : "1 of number of <H2> tags"
"content" : "AI-generated summary of the content following an <H2> tag"
}
将其转换为 Flowr 连接器的工作方式,我们将创建三个标记:
<<[title]>>
<<[page]>>
<<[content]>>
现在你已经对如何操作有了基本的了解,让我们创建一个 PowerPoint 模板来存放生成的内容!
创建 PowerPoint 模板
在执行任何流程之前,你需要创建一个模板,以便 填充 PowerPoint 动作有所操作。对于这个示例,我们将在模板文件中使用单个幻灯片。
要创建一个简单的模板文件,请按照以下步骤操作:
- 启动 PowerPoint 并选择 新建。你可以选择 空白演示文稿 或使用主题模板文件:

图 7.7 – 创建新的模板文件
- 编辑文件的内容,将其放置在你之前识别的标记中。你可以对标记应用格式,例如 加粗 或 斜体:

图 7.8 – 使用内容标记更新模板
- 将文档保存在 SharePoint 或 OneDrive for Business 网站上:

图 7.9 – 保存 PowerPoint 模板文件
完成这些后,是时候开始构建我们的流了!
创建流
流将由两个执行离散操作的章节组成,分为作用域以帮助管理:
-
作用域 1:生成内容摘要
-
作用域 2:向 PowerPoint 模板添加内容
关于作用域
Power Automate 包含一个经常被忽视的控制对象,称为作用域。作用域本质上是一个逻辑容器,可以用来将操作分组。作用域可以展开和折叠,使您更容易可视化和管理复杂流的部分。
虽然这个流使用了作用域,但它们本质上是有组织的对象。如果你不习惯添加它们,你不需要这么做。
如果我遇到困难怎么办?
如果由于某种原因遇到障碍(找不到功能、选项没有显示或某些内容不清楚),帮助只需点击一下!您可以从我们的 GitHub 网站下载本章的工件:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
创建生成内容摘要的作用域
要开始创建流,请按照以下步骤操作:
-
导航到 Power Automate Maker Portal (
make.powerautomate.com)。 -
从导航窗格中选择创建。然后,在从空白开始下选择即时****云流。
-
在构建即时云流页面,输入流****名称值。
-
在选择触发此流的方式下,选择手动触发流。然后,点击创建:

图 7.10 – 创建新流
-
点击手动触发流操作以展开手动触发****流弹出菜单。
-
选择参数选项卡并选择添加****一个输入:

图 7.11 – 添加输入
-
对于选择用户输入类型提示,选择文本输入类型。
-
如果需要,修改输入提示,使用描述应提供的内容类型的描述 – 例如,
输入维基百科文章 URL:

图 7.12 – 自定义文本输入提示
-
在手动触发流卡片下,点击+然后添加****一个操作。
-
在
作用域中,选择作用域****控制操作:

图 7.13 – 添加作用域控制操作
- 通过点击作用域并编辑字段来点击深红色的
Scope – Generate Summaries:

图 7.14 – 更新作用域的名称
-
在画布上的范围卡片中,点击+图标然后选择添加 一个操作。
-
在添加操作弹出菜单中,选择Compose操作:

图 7.15 – 添加 Compose 操作
- 在
/字符处或点击𝑓**x图标以打开last(split(triggerBody()?['text'],'/'))并点击/字符作为分隔符,表达式将取文本输入字符串的最后一个值(来自History_of_Cryptography。见图 7**.13):

图 7.16 – 添加表达式
-
在范围 – 生成摘要控制卡片中,在Compose卡片之后点击+并选择添加 一个操作。
-
在添加操作弹出菜单中,选择HTTP操作。
-
在
/字符处或点击𝑓**x图标以打开concat('https://en.wikipedia.org/w/api.php?action=query&format=json&titles=',outputs('Compose'),'&prop=extracts')并点击CONCAT函数以组合维基百科 API 端点、查询和格式化参数以及提取的标题值:

图 7.17 – 自定义 HTTP 操作
-
在方法下拉菜单中,选择GET。
-
点击保存。不要退出 Power Automate 流程画布。
接下来,我们将开始配置内容处理。
配置 JSON 参数
在本节中,我们将导入 JSON 模式或内容结构的定义。要获取模式输出,您需要手动构造带有必要参数的 API 端点,然后插入文章名称。按照以下步骤操作:
- 打开一个新的浏览器标签页,导航到
en.wikipedia.org,并搜索你选择的任何文章。在这个例子中,/字符 – 例如,History_of_cryptography。见图 7.18:

图 7.18 – 提取维基百科文章的相对 URL
-
打开一个新的浏览器标签页并导航到维基百科 API 端点:
en.wikipedia.org/w/api.php。 -
在 URL 末尾附加
?action=query&format=json&prop=extracts&titles=然后将复制的维基百科文章值粘贴到 URL 栏的末尾 – 例如,?action=query&format=json&prop=extracts&titles=History_of_cryptograpy。结果应该是一个包含维基百科文章文本的 JSON 格式对象,如图图 7.19所示:

图 7.19 – 查看维基百科 API 的 JSON 输出
-
选择所有内容(Ctrl + A)并将其复制到缓冲区(Ctrl + C)。
-
切换回包含 Power Automate 流程的浏览器标签页。
-
在范围 – 生成摘要控制卡中,在HTTP卡之后,点击+并选择添加****一个操作。
-
在添加操作弹出菜单中,选择解析****JSON操作:

图 7.20 – 添加解析 JSON 操作
-
在解析 JSON弹出菜单中,选择参数选项卡。
-
在内容文本区域内部,选择动态内容图标,然后选择HTTP操作的输出对象:

图 7.21 – 添加 HTTP 输出对象
- 将缓冲区的内容粘贴到模式区域,如图图 7.22所示:

图 7.22 – 使用维基百科 API 输出填充内容
- 点击保存图标。不要退出 Power Automate 流程画布。
自定义 GPT 提示
与完成提示一起工作,既是一门艺术,也是一门科学。要获得一致的良好结果,可能需要进行大量的微调。
提示框架
正如古语所说,“垃圾输入,垃圾输出。”AI 模型变得越来越复杂,能够理解指令。为了获得好的结果,你需要提供好的指令。就像人们可以通过例子模仿和学习一样,AI 模型也可以。提示框架是帮助解释符合你期望的结果类型的一种方式。有关常见提示框架的示例,请访问www.undocumented-features.com/2023/12/15/chatgpt-patterns-practices-and-prompts/。
在本节中,你将创建一个自定义提示,ChatGPT 可以使用它来构建数据对象。按照以下步骤操作:
-
在范围 – 生成摘要控制卡中,在解析 JSON卡之后,点击+并选择添加****一个操作。
-
在添加操作弹出菜单中,选择使用提示创建文本操作:

图 7.23 – 添加使用提示创建文本的操作
- 在提示下拉菜单中,选择新****自定义提示:

图 7.24 – 选择新的自定义提示选项
-
给提示命名,例如
SummarizeWikipedia article。 -
在提示区域,粘贴类似于以下提示的文本:
You are generating content for a PowerPoint slide deck. Your input is a Wikipedia article. The output must be a well-structured JSON array and must adhere to the length requirement of 75 words or less. Each slide will be represented as an object inside the JSON array. Write a summary of the input body('Http') . Data is divided into sections separated by use of the H2 HTML tag. Each H2 section should be summarized as a separate paragraph. For every H2 tag, generate only one paragraph. The content summarization paragraph must be limited to a maximum of 75 words long. Each section will be used as a separate page in a slide deck. Each paragraph should be represented as an individual JSON object. Each object must include the following components: Title: Use the text of the HTML H2 tag Page: Page information in the form of "x of y," where x is the current page or paragraph, and y is the total number of slides that will be generated Content: The formatted paragraph data from each H2 tag, limited to a maximum length of 75 words. Do not deviate from the provided JSON format: [{ "title" : "Hanging gardens of Babylon", "page" : "1 of 1" "content" : "The hanging gardens of Babylon are one of the seven wonders of the ancient world. The exquisite, tiered gardens contained a wide variety of trees, shrubs, flowers, and vines. According to legend, the Hanging Gardens were built by King Nebuchadnezzar for his wife, Queen Amytis, because she missed the gardens and landscape from her homeland. The exact location of the Hanging Gardens has never been definitively established." }] Ensure the output of the JSON array is well-formatted, with a separate object for each paragraph and the content keyword not to exceed 75 words.
以下截图显示了这一点:

图 7.25 – 添加提示值
- 注意横幅,表明需要动态值。通过按Ctrl + C复制图 7**.20中高亮的值,body(‘Http’)。然后,点击添加动态值。提示中的高亮部分应替换为动态值占位符。请参阅图 7.26:

图 7.26 – 查看更新的动态值标记
-
要测试提示,滚动到提示定制区域的底部。切换到包含维基百科 API 内容的浏览器标签,全选并使用Ctrl + C将其复制到您的计算机缓冲区:
-
切换回包含定制 AI 提示的浏览器标签。在测试你的提示区域,粘贴复制的维基百科 API 输出,如图图 7.27所示:

图 7.27 – 将数据加载到测试你的提示区域
-
滚动到测试你的提示区域的底部并点击测试提示。
-
等待 AI Builder 提示生成响应。检查响应以确保它符合您的要求:

图 7.28 – 查看 AI 生成的文本内容
- 点击Input Body(‘Http’)字段内部,选择动态内容图标,然后选择解析 JSON动作的Body对象:

图 7.29 – 将 Body 对象添加到输入 Body(‘Http’)字段
-
点击创建文本后使用 GPT 的提示动作旁边的+图标,并选择添加 一个动作。
-
选择解析 JSON动作。此动作将 GPT 输出转换为可以稍后遍历的数组对象。
-
在解析 JSON动作弹出窗口中,将动作重命名为解析 JSON – 创建数组。
-
在参数选项卡中,点击内容字段内部。选择动态内容图标,然后在创建文本后使用 GPT 的提示动作下选择文本标记。见图 7.30:

图 7.30 – 添加文本动态内容标记
-
在模式区域,复制并粘贴以下内容:
{ "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string" }, "page": { "type": "string" }, "content": { "type": "string" } }, "required": [ "title", "page", "content" ] } }此模式定义可以通过运行到这一点为止的流程,复制输出,然后将其粘贴到解析 JSON弹出窗口上的使用样本有效载荷生成模式中获取。
-
点击保存。不要关闭 Power Automate 流程画布。
到目前为止,您已创建了一个可以接受维基百科文章 URL 并将其总结为各自的 JSON 对象的流程。接下来,我们将处理将数据发送到 PowerPoint 模板的工作。
创建生成幻灯片的作用域
在本节中,我们将把 JSON 对象数组转换为 PowerPoint 幻灯片。按照以下步骤处理 AI 生成的文本内容:
- 在画布上滚动到流程的底部并选择+图标,位于Scope – Generate Summaries控制之外:

图 7.31 – 添加新步骤
-
添加一个新的作用域控制,并将其重命名为
Scope -Generate Slides。 -
点击“+”图标并在“范围 - 生成幻灯片”卡片内选择“添加”操作。
-
根据您保存模板文件的位置,选择 SharePoint Online 或 OneDrive for Business 的获取文件内容使用路径操作:

图 7.32 – 添加获取文件内容使用路径操作
- 在“获取文件内容使用路径”弹出窗口中,定位文件。如果您使用的是 OneDrive for Business 操作,请使用文件夹浏览器选择文件路径字段。如果您使用的是 SharePoint Online 操作,请选择文件所在的站点地址值,然后在“文件路径”字段中使用文件夹浏览器选择文件:

图 7.33 – 选择 PowerPoint 模板文件
-
在“范围 – 生成幻灯片”卡片中,点击“+”图标并选择“添加”操作。
-
添加应用至每个控件。
-
在“应用至每个”控件弹出窗口中,选择参数选项卡。
-
在“从先前步骤中选择一个输出”字段中,添加您之前创建的“解析 JSON – 创建数组”操作的Body输出:

图 7.34 – 添加来自解析 JSON – 创建数组操作的 Body 输出
-
在“应用至每个”控件卡片中,点击“+”并选择“添加”操作。
-
选择解析 JSON操作。
-
将“解析 JSON –”PPT Values重命名。
-
在“参数”选项卡上的“解析 JSON – PPT 值”弹出窗口中,点击“内容”字段内部。
-
选择当前项动态内容令牌。见图 7.35:

图 7.35 – 选择当前项动态内容令牌
-
在模式区域,复制并粘贴以下值:
{ "type": "object", "properties": { "title": { "type": "string" }, "page": { "type": "string" }, "content": { "type": "string" } } }此内容可以通过运行流程到这一点,查看运行历史记录区域,选择使用提示创建文本操作的输出,然后将其粘贴到使用示例有效负载生成****模式弹出窗口中获取:
-
点击保存。不要关闭 Power Automate 流程画布。
接下来,我们将开始向 Encodian 连接器发送数据。
使用 Encodian Flowr
在此部分,您将开始与 Flowr 连接器交互。使其工作可能有些棘手,所以请按照以下步骤操作:
-
在“应用至每个”卡片中,点击“解析 JSON – PPT 值”后面的“+”图标并选择“添加”操作。
-
添加填充 PowerPoint操作:

图 7.36 – 添加填充 PowerPoint 操作
- 在“填充 PowerPoint”弹出窗口中,为 Encodian 连接输入一个连接名称值并添加您的API 密钥。点击“创建新”以完成设置:

图 7.37 – 配置 Encodian 连接
- 在“Populate PowerPoint”弹出窗口中,点击 高级 参数下拉菜单旁边的“显示所有”:

图 7.38 – 展示所有可用参数
- 在“文件内容”字段内点击,选择动态内容图标,然后为配置的存储位置(无论是SharePoint Online还是OneDrive for Business)选择“文件内容”令牌:

图 7.39 – 添加文件内容令牌
-
在“JSON 数据”字段中,定义连接器将用于替换模板文件中内容令牌的 JSON 结构。例如,本练习使用 title、content 和 page 令牌。JSON 定义应类似于以下示例:
{ "title": "@{body('Parse_JSON_-_PPT_values')?['title']}", "content" : "@{body('Parse_JSON_-_PPT_values')?['content']}", "page": "@{body('Parse_JSON_-_PPT_values')?['page']}" }
它应该看起来像这样:

图 7.40 – 配置 JSON 数据属性
您可以输入定义(例如 "title" : " ")然后从动态内容令牌列表中选择相应的参数值。输出应从“解析 JSON – PPT 值”操作中选择。或者,如果您已将操作重命名以遵循练习,您可以复制并粘贴整个 JSON 定义。
-
在“应用至每张卡片”内,点击“Populate PowerPoint”操作后的 + 图标并选择“添加”操作。
-
选择“Compose”操作。
-
在“Compose PowerPoint Slides”。
-
在“Compose PowerPoint slides”弹出窗口的“参数”选项卡中,点击“输入”字段并粘贴以下内容:
{ "fileName": ".pptx", "fileContent": { "$content-type": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "$content": } } -
在
"字符上的.字符(")。如果没有引号,您将收到 JSON 格式错误:

图 7.41 – 将 guid() 函数添加到文件名中
- 在
"$content":和点击动态内容图标。选择 File Content 动态内容令牌。见 图 7.42:

图 7.42 – 添加文件内容动态内容令牌
-
在“Apply each card”内,点击“Compose PowerPoint Slides”操作下方的 + 图标并选择“添加”操作。
-
选择“合并演示文稿”操作。
-
输入
Presentation.pptx)。 -
在“高级参数”下,选择“显示所有”。
-
在
<``guid>.PPTX名称中:

图 7.43 – 更改输入类型
- 在“文档项”字段内点击,并选择动态内容令牌图标。在“组合演示文稿幻灯片”下,选择“输出”:

图 7.44 – 更新文档项字段
-
收起 合并演示文稿 飞出菜单。
-
将 合并演示文稿 卡片拖动到 应用至每个 和 范围 – 生成幻灯片 卡片之外,并将其放置在范围卡片下方的 + 图标上。参见 图 7.45:

图 7.45 – 移动合并演示文稿卡片
此步骤顺序是必要的,以确保可以从动态内容菜单中选择 组合 PowerPoint 幻灯片 输出。
-
点击 合并演示文稿 后的 + 图标,然后选择 添加步骤 将其添加到流程末尾。
-
根据您希望输出位置选择 创建文件 动作(SharePoint 或 OneDrive for Business),它不必存储模板文件的同一位置。
-
在 创建文件 飞出菜单中,选择位置(如果您选择 OneDrive for Business,则为 文件夹路径 位置;如果您选择 SharePoint Online,则为 网站地址 和 文件夹路径 位置)。
-
在 文件名 字段中,从 合并演示文稿 动作中添加 文件名 动态内容令牌。
-
在 文件内容 字段中,添加来自 合并演示文稿 动作的 文件内容 动态内容令牌,如图 图 7.46 所示:

图 7.46 – 选择文件内容动态内容令牌
- 点击 保存。
点击 流程检查器 区域以确保您的流程不包含明显错误。完成这些后,就是时候测试流程了!
测试流程
要测试流程,请按照以下步骤操作:
-
打开一个新的浏览器标签页。导航到维基百科 (
en.wikipedia.org) 并搜索您选择的文章。例如,您可以尝试搜索航海或密码学历史。 -
在文章加载后,点击 URL 栏并使用 Ctrl + C 复制 URL 值。
-
切换回运行 Power Automate 画布的浏览器标签页。
-
点击标记为 测试 的 试管 图标:

图 7.47 – 准备测试流程
-
在 测试流程 飞出菜单中,选择 手动 单选按钮并点击 测试。
-
如果提示,确认任何权限并点击 继续:

图 7.48 – 确认流程的权限
- 将复制的维基百科 URL 粘贴到提示区域,然后点击 运行流程:

图 7.49 – 输入 URL
-
点击 完成 返回画布并观察流程运行执行。
-
在流程执行时等待:

图 7.50 – 等待流程完成
-
流程完成后,导航到您指定完成演示文稿应保存的位置。
-
打开演示文稿:

图 7.51 – 启动演示文稿
- 查看完成的演示文稿,注意幻灯片中的内容标记是如何被传递给 Encodian Flowr 连接器的相应 JSON 值所替换的:

图 7.52 – 查看完成的演示文稿
就这样!您现在已经通过抓取网站内容创建了一个完整的 PowerPoint 演示文稿。
进一步探索
想想您可以用哪些方式进一步扩展、重用或重新利用此类解决方案,从不同类型的内容源构建幻灯片:
-
季度报告
-
执行摘要
-
销售报告
通过将生成式 AI 的力量与 Microsoft 365 Apps 文档创建工具的自动化功能相结合,您可以轻松创建演示文稿!
摘要
本章展示了通过利用生成式 AI 的强大功能所能实现的令人难以置信的能力。通过使用本地的 AI Builder ChatGPT 连接器,您能够从世界上最大的在线百科全书获取网络内容,对其进行总结,并将其转换为 PowerPoint 演示文稿(借助 Encodian Flowr 连接器的帮助)。
使用在这里学到的技能,您可以调整此流程,从存储在 SharePoint、OneDrive 或其他网站和文档中的内容中提取报告和演示文稿。
在下一章中,我们将学习如何使用 AI Builder ID 读取器模型。
第九章:构建具有身份验证的事件注册应用
有时候,身份验证和验证是确定产品或服务资格所必需的。在本章中,您将学习关于 AI Builder 身份证明内容提取功能的相关内容。
AI Builder 身份证明文档阅读器是一个预构建的模型,它可以识别护照、驾照和其他身份证明文件中的内容。
设计解决方案
当思考如何构建一个处理身份的解决方案时,我立刻想到了某种事件注册应用或场景,它将需要身份验证或验证——这似乎是个不错的想法。
许多组织举办活动。虽然一些活动注册可能是内部的(例如大型组织的年度技术或销售会议)并且可能不需要身份验证,但许多活动是行业或主题聚焦的,吸引了来自众多公司的参与者。这似乎是一个完美的目标场景。
我心中有一个关于我希望这个解决方案如何工作的想法。然而,当与新兴技术产品合作时,有时您想要做的事情并不完全符合产品的功能。作为解决方案设计师,重要的是要灵活,并拥有一种心态,以便在您发现障碍时能够调整方向。
当深入到解决方案的细节时,我面临了几个挑战:
-
基于 Power Apps 的解决方案需要租户身份和许可,这两者都不适合外部用户。
-
Microsoft Forms 允许文件上传,但仅限于内部(租户)用户——再次,使其不适合外部用例。
-
Power Pages 解决方案可以接受上传,但解决方案需要相当数量的权限设置和管理,此外还需要设计整个网站界面和创建 Dataverse 表格。虽然有一个基本的事件注册应用模板可用,但仍然需要大量定制和修改才能应用这种验证逻辑。
-
SharePoint Online 可以接受文件上传,但通常仅限于认证用户。有一个请求文件 API 允许匿名上传,但它需要 SharePoint 管理员启用,并为记录创建一个定制的 API 文件链接。
如您从选项列表中可以看到,有许多障碍需要克服——无论是许可、编码挑战还是最终用户的易用性。在选择如何实施解决方案时,所有这些都必须考虑在内——可能需要绕过产品中的一些限制,尤其是如果您试图最小化对第三方产品的投资或限制整体产品开发时间。
在此解决方案中,我们将选择一个允许简单表单设计(使用 Microsoft Forms)并利用 SharePoint Online API(尽管它需要一点自定义开发工作)的路径。
图 8**.1 展示了此解决方案将如何工作的整体工作流程:

图 8.1 – 事件注册和身份验证工作流程
-
让我们分解一下:
-
用户使用 Microsoft Forms 链接填写事件注册表单。
-
Power Automate 触发并处理表单响应,请求用户上传数据。
-
用户收到一封带有上传其身份证明文件说明的电子邮件。
-
用户点击生成的电子邮件中的链接上传身份证明文件。
-
身份证明文件存储在 SharePoint Online 中。
-
AI Builder 被触发以验证身份证明文件。
-
SharePoint Online 事件注册列表更新以反映文档验证是否成功或失败。
-
Power Automate 条件检查身份验证状态:
-
如果身份验证成功,用户将收到确认电子邮件。
-
如果身份验证失败,用户将收到失败通知。
-
接下来,我们将查看此解决方案的许可前提条件。
许可前提条件
在 Power Platform 中使用 AI 模型和连接器有几个前提条件:
-
包含 Microsoft Dataverse 的订阅
-
AI Builder 容量(或试用容量)
-
Power Apps 或 Power Automate 高级许可
-
包含 Microsoft Teams 的订阅
-
包含 Exchange Online 的订阅
-
Outlook 桌面应用程序
如果您尚未启用 Dataverse 和 AI Builder 容量,请参阅第二章,配置支持 AI 服务的环境,以及第六章,使用 情感分析 处理数据。
配置解决方案前提条件
在开始工作流程配置之前,您需要创建一个 SharePoint 列表来存储注册者的信息,以及一个可以添加到确认电子邮件中的 Teams 会议链接。
配置 SharePoint Online
默认情况下,SharePoint Online 限制为经过身份验证的用户——无论是同一租户的用户还是之前兑换过嘉宾邀请的外部用户。然而,SharePoint 允许匿名共享链接以及一个用户生成文件上传请求并发送给匿名或其他未经身份验证用户的功能。我们将以编程方式利用文件请求功能,使 SharePoint Online 允许作为工作流程一部分的匿名上传。
进一步阅读
有关文件请求功能的更多信息,请参阅 learn.microsoft.com/en-us/sharepoint/enable-file-requests 和 support.microsoft.com/en-us/office/create-a-file-request-f54aa7f8-2589-4421-b351-d415fc3b83af。要使此功能正常工作(例如,不限制匿名外部访问、启用匿名或 任何人 链接,以及为 任何人 链接设置适当的权限),请确保您的环境已正确配置。
让我们逐步了解确保 SharePoint Online 正确配置的要求。
创建 SharePoint 网站
为了接收文件上传,您需要设置一个新的 SharePoint 网站。要配置新的 SharePoint 网站,请按照以下步骤操作:
-
导航到 SharePoint Online 管理中心 (
admin.microsoft.com),点击 显示全部…,然后在 管理中心 下选择 SharePoint。 -
展开 网站 并选择 活动网站。
-
点击 创建。
-
在 创建网站:选择网站类型 页面上,选择 团队网站。
-
在 选择模板 页面上,选择 标准团队。
-
在 预览并使用“标准团队”模板 页面上,点击 使用模板。
-
在
事件注册。 -
添加 组所有者 名称并点击 下一步。
-
点击 创建网站。
-
点击 完成。
在您创建网站后,请确保捕获完整的网站 URL - 它将在以后需要。完整的 URL 将采用 https://<tenant>.sharepoint.com/sites/<sitename> 的格式。您可以通过在 SharePoint 管理设置中选择网站以展开网站属性并复制 查看网站 链接来检索网站 URL,如图 图 8**.2 所示:

图 8.2 – 复制 SharePoint 网站链接
接下来,您需要在 SharePoint 管理中心配置 任何人 链接设置。
启用任何人链接
第一项要求是确保在租户级别启用了 任何人 链接。为此,请按照以下步骤操作:
-
导航到 SharePoint Online 管理中心 (
admin.microsoft.com),点击 显示全部…,然后在 管理中心 下选择 SharePoint。 -
展开 策略 并选择 共享。确保 SharePoint 访问控制滑块已移动到顶部(任何人)。见 图 8**.3:

图 8.3 – 配置 SharePoint 外部共享访问控制级别
-
展开 更多外部共享 设置 下拉菜单。
-
确保已清除 仅允许特定安全组用户外部共享 复选框(未勾选):

图 8.4 – 配置更多外部共享设置
- 在 为任何人链接选择过期和权限选项 下,确保 文件夹 设置为 查看、编辑 和 上传:

图 8.5 – 配置附加 SharePoint 设置
- 单击 保存。
下一步是创建一个文档库,用于存储与会者的身份文件。
配置 SharePoint 文档库
此解决方案需要一个存储位置来保存上传的身份文件。虽然您可以使用默认的文档库,但它的显示名称(文档)与其实际名称(共享文档)不同,这往往会导致更多的故障排除。
要创建新的 SharePoint 文档库,请按照以下步骤操作:
-
导航到 事件注册 SharePoint 站点。
-
单击 新建 然后选择 文档库。
-
在 创建新文档库 页面上,选择 空白库。
-
在 名称 字段中输入
Uploads并单击 创建。
就这样!接下来,我们将为与会者创建一个 SharePoint 列表。
配置 SharePoint 列表
配置 SharePoint 列表的最后一部分。该列表将用于存储注册者信息以及跟踪身份验证状态。按照以下步骤操作:
-
导航到 事件注册 SharePoint 站点。
-
单击 新建 然后选择 列表:

图 8.6 – 创建新列表
-
在 创建列表 页面上,选择 空白列表。
-
输入
Attendees并单击 创建。 -
在 与会者 列表中,单击 添加列。选择 文本 作为类型并单击 下一步:

图 8.7 – 配置新列
-
将列命名为
First name并单击 保存。 -
使用 表 8.1 中的列名和类型重复添加列:
| 列名 | 列类型 |
| --- | --- |
| 姓氏 | 文本 |
| 电话号码 | 文本 |
| 出生日期 | 文本 |
| 电子邮件 | 文本 |
| 验证状态 | 选择:待提交、通过、失败 |
| 有效期 | 文本 |
| 身份数据 | 文本 |
表 8.1 – SharePoint 列表列信息
更新 SharePoint Online 设置
接下来,您需要配置 SharePoint Online 租户以显示 请求文件 操作。按照以下步骤操作:
-
启动提升的 PowerShell 提示符。
-
安装 SharePoint Online 管理 PowerShell 模块的最新版本:
Install-Module Microsoft.Online.SharePoint.PowerShell -Force -
使用
<tenant>-admin连接到 SharePoint Online 管理界面以引用您的站点。参见 图 8**.8,其中租户名称为o365ninja。您的租户名称是在 Microsoft 365 设置期间建立的,格式为tenant.onmicrosoft.com:Connect-SPOService -Url https://<tenant>-admin.sharepoint.comhttps://<tenant>-admin.sharepoint.com

图 8.8 – 连接到 SharePoint Online
-
接下来,您需要在您之前创建的 SharePoint 网站上启用请求文件功能。在 SharePoint 管理 Shell 中使用以下 cmdlet:
Set-SpoSite -Identity <SiteURL> -RequestFileLinkEnabled $True

图 8.9 – 启用文件请求功能
-
更新设置后,导航到活动注册解决方案的 SharePoint Online 网址。选择上传以显示之前创建的文档库。
-
在名为
RegistrationData的新文件夹上右键单击,并搜索请求文件选项,如图8.10所示。10*。如果可见,则一切配置都正确:

图 8.10 – 查看请求文件选项的可用性
接下来,是时候配置一个 Teams 会议了。
建立一个 Teams 会议
如果您的活动将通过 Microsoft Teams 在线进行,则可以执行此可选步骤。在这个过程中,您将创建一个会议并将其导出为 ICS 文件。虽然您可以手动生成 ICS 文件,但直接从 Outlook 导出要容易得多。要创建会议,请按照以下步骤操作:
-
导航到 Microsoft Teams,并从左侧轨道中选择日历以打开日历应用。
-
点击新建会议旁边的下拉菜单,选择市政厅。虽然网络研讨会确实有注册,但它已集成到应用程序中,目前还没有方法将流程注入到原生网络研讨会注册过程中。现场活动计划在 2024 年停用,会议组织者应安排网络研讨会或市政厅活动。见图8.11:

图 8.11 – 创建新的市政厅会议
-
配置会议的详细信息,包括标题、开始日期、结束日期和描述值。
-
滚动到邀请底部,并在与会者下选择公开:

图 8.12 – 配置会议设置
-
点击保存。
-
点击发布以发布会议。
-
启动 Outlook 桌面客户端。
-
导航到由 Teams 会议向导创建的日历事件。打开会议。
-
点击文件以打开后台选项卡,然后选择另存为。
-
导航到一个 OneDrive for Business 或 SharePoint Online 网站以保存 ICS 文件。确保选中保存所选约会单选按钮,然后点击保存:

图 8.13 – 保存日历文件
注册完成后并验证身份,此日历约会将通过成功确认电子邮件发送。
构建输入表单
最后的准备步骤是构建一个将被活动参与者用于注册的 Microsoft 表单。要配置表单,请按照以下步骤操作:
- 导航到 Microsoft 表单(
forms.microsoft.com)并点击新建表单:

图 8.14 – 创建新的 Microsoft 表单
- 为表单命名,并添加姓名、姓氏、电子邮件和电话号码文本字段:

图 8.15 – 添加字段
- 展开省略号并选择设置,如图图 8**.16所示:

图 8.16 – 配置表单设置
- 在谁可以填写此表单下,确保选中任何人都可以响应单选按钮:

图 8.17 – 更新表单设置
- 点击收集响应,然后将表单链接复制到文本文件中,以便在测试阶段使用:

图 8.18 – 复制表单链接
配置好先决条件后,是时候开始一些自动化工作了!
创建流程
此解决方案有两个流程——一个是在表单响应时触发,另一个是在身份证明文件上传到 SharePoint 时触发。
如果我遇到困难怎么办?
如果由于某种原因遇到障碍(找不到功能、选项未显示或内容不明确),帮助只需点击一下!您可以从我们的 GitHub 网站下载本章的工件:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
让我们开始第一个流程!
配置处理表单提交的流程
此流程在表单提交时触发。表单处理完毕后,注册者将收到一封电子邮件,提示他们上传身份证明文件。如前所述,表单确实允许原生文件上传,但需要用户验证到 Microsoft 365 租户(这对外部用户来说并不理想)。
处理表单
在本节中,您将首先处理 Microsoft 表单数据。按照以下步骤操作:
-
打开浏览器并导航到 Power Automate 制作门户(
make.powerautomate.com),选择创建,然后点击自动****云流程。 -
在构建自动云流程页面,输入流程名称值,然后选择当有新响应提交时触发器。点击创建。
-
在画布上,点击当有新响应提交时触发器。如有必要,点击更改连接登录到 Microsoft 365:

图 8.19 – 使用凭据更新触发器
- 点击表单 ID下拉菜单,并选择事件****注册表单:

图 8.20 – 选择表单
-
点击 + 符号添加一个动作并选择 作用域 控件。
-
将作用域控件重命名为
Processing the form。见 图 8**.21:

图 8.21 – 更新作用域名称
-
在 Scope 控件内部,点击 添加 一个动作。
-
在 添加一个动作 弹出窗口中,选择 获取响应 详细信息 动作。
-
在 表单 ID 下,选择 Event Registration 表单。
-
在 Response Id 下,选择 响应通知列表 Response Id 的动态内容令牌。该操作将插入到 Apply each 或 For each 包装器中(取决于您是否使用 经典设计器 或 新设计器):

图 8.22 – 配置获取响应详细信息
-
在 每个 包装器中,在 获取响应详细信息 之后,点击 添加 一个动作。
-
选择
ComposeUnique。Compose 动作将用于生成一个唯一 ID,该 ID 将用于命名由 请求文件 动作提交的证据。 -
在 输入 文本框中添加一个表达式。在 函数 选项卡上,粘贴以下内容:
concat(utcNow('yyyyMMddHHMMss'),'_',)

图 8.23 – 配置 Compose 动作
- 在最后一个逗号 (
,) 和关闭括号 ()) 之间的文本区域中点击。点击 动态内容 选项卡,然后从 获取响应详细信息 动作中添加 Email 动态内容令牌。见 图 8**.24:

图 8.24 – 使用 Email 令牌更新 Compose 动作
完成后,函数值应类似于以下示例:
concat(utcNow('yyyyMMddHHMMss'),'_',body('Get_response_details')?['r05e4d4be0beb4bb7b64c3b502b312d63'])
这用于组合一个由流程执行的当前日期和时间以及响应者的提交的电子邮件地址组成的值。您不能复制并粘贴整个值,因为它直接对应于此环境中特定的表单对象。
进一步阅读
有关 Concat 函数的更多信息,请参阅 learn.microsoft.com/en-us/power-platform/power-fx/reference/function-concatenate。有关 UtcNow 函数的更多信息,请参阅 learn.microsoft.com/en-us/power-platform/power-fx/reference/function-now-today-istoday。
-
在 Apply to each 包装器内部,在 ComposeUnique 动作之后点击 添加一个动作。选择 创建新文件夹 SharePoint 动作。
-
在 创建新文件夹 弹出窗口中,在 站点地址 下选择 Event Registration 站点。
-
在 列表或库 下,选择您之前创建的 Uploads 文档库。
-
在文件夹路径下,从ComposeUnique操作中添加输出动态内容令牌,如图图 8**.25所示:

图 8.25 – 配置创建新文件夹操作
-
在Apply to each包装器内部,在创建新文件夹操作之后点击添加操作。选择创建项目SharePoint 操作。
-
在创建项目弹出窗口中,在站点地址下选择事件注册站点。
-
在列表名称下,选择参会者列表。
-
在高级参数下,在标题下选择输出动态内容令牌从ComposeUnique操作。
-
在
toUpper()下。 -
将光标置于括号
(和)之间。选择动态内容选项卡,然后从获取响应详情操作中添加姓氏动态内容令牌。输出应类似于以下内容:toUpper(body('Get_response_details')?['rd5fe1d483e4d4f23ac7a55bbbed1c004'])证件使用大写格式。参会者可能不会全部使用大写输入他们的详细信息,因此需要进行转换以确保任何比较操作都成功。
-
在
toUpper()下。 -
将光标置于括号
(和)之间。选择动态内容选项卡,然后从获取响应详情操作中添加姓氏动态内容令牌。输出应类似于以下内容:toUpper(body('Get_response_details')?['rfd1546de5f714c8da504d988e5c692ec']) -
在电话号码下,从获取响应详情操作中选择电话号码动态内容令牌。
-
在电子邮件下,从获取响应详情操作中选择电子邮件动态内容令牌。
警告
不要从获取响应详情操作中选择响应者电子邮件动态内容令牌。响应者电子邮件动态内容令牌链接到提交表单的认证用户。如果表单是由你的 Microsoft 365 租户之外的人提交的(这是本解决方案的目标),则此令牌值将是匿名。
- 在验证状态值下,选择待提交选项。参见图 8**.26中完成的创建项目操作配置:

图 8.26 – 配置创建项目操作
- 点击保存。
接下来,你将使用 SharePoint Online REST API 生成 SharePoint Online 文件请求。
生成文件请求链接
在本节中,你将在处理表单作用域内部创建一个新的作用域。这将帮助你将生成链接和发送电子邮件相关的任务分组。按照以下步骤操作:
-
在Apply to each包装器外部和处理表单作用域控制内部点击+号。选择添加操作并选择作用域控制。
-
将新作用域的名称更新为
生成 SharePoint Online 文件请求。 -
在生成 SharePoint Online 文件请求作用域内部点击添加操作。
-
选择向 SharePoint 发送 HTTP 请求操作。
-
在站点地址下,选择事件 注册站点。
-
在方法下,选择POST。
-
在
'Uploads'下是包含在先决条件部分创建的RegistrationData文件夹的文档库):_api/web/Lists/GetByTitle('Uploads')/GetItemById('@{body('Create_new_folder')?['ID']}')/ShareLink此特殊 URI 路径定位到
Uploads文档库,然后添加在上一节中创建的文件夹的唯一标识符。 -
在高级参数下,点击显示全部以显示正文区域。
-
将以下数据粘贴到正文区域:
{ "request": { "createLink" : true, "settings" : { "allowAnonymousAccess" : true, "linkKind" : 6, "restrictShareMembership": false, "updatePassword": false, "password" : "", "description": "@{outputs('ComposeUnique')}", "role" : 8, "applicationLink" : false, "limitUseToApplication" : false } } }此 JSON 值将被发送到 SharePoint Online 以触发文件请求。
进一步阅读
更多关于请求文件时 SharePoint Online REST API 函数的结构信息,请参阅learn.microsoft.com/en-us/graph/api/driveitem-createlink?view=graph-rest-1.0&tabs=http。
- 验证操作配置中的设置。见图 8**.27:

图 8.27 – 配置发送 HTTP 请求到 SharePoint 操作
-
在SharePoint Online 文件请求范围内,在发送 HTTP 请求到 SharePoint操作之后点击添加操作。
-
选择编写操作。
-
重命名
ComposeURL。 -
在输入字段中插入一个表达式,并输入以下值:
body('Send_an_HTTP_request_to_SharePoint')?['body']?['d/ShareLink/sharingLinkInfo/url']此操作将发送 HTTP 请求到 SharePoint操作的输出提取为动态创建的 SharePoint URL。
此表达式是从查看先前的流程运行中得出的,以确定从发送 HTTP 请求到 SharePoint操作的输出中可用的哪些属性。见图 8**.28:

图 8.28 – 查看成功的发送 HTTP 请求到 SharePoint 操作的输出
从 JSON 输出角度来看,结构如下:
{
"statusCode": 200,
"headers": {
"Cache-Control": "no-store, max-age=0, private"
},
"body": {
"d": {
"ShareLink": {
"sharingLinkInfo": {
"AllowsAnonymousAccess": true,
"Description": "20240128030134_user@domain.com",
"IsCreateOnlyLink": true,
"IsDefault": true,
"IsEditLink": true,
"LimitUseToApplication": false,
"LinkKind": 6,
"RequiresPassword": false,
"RestrictedShareMembership": false,
"SharingLinkStatus": 1,
"Url": "https://o365ninja.sharepoint.com/:f:/s/EventRegistration/EmlH2cOzMrRLsLRK6AjhXUwB97IiZxGyd2hQOv9GySxTSA"
}
}
}
}
}
需要存储在Url键/值对中的属性,以便参会者上传他们的身份证明文件。Power Automate 允许您使用/字符导航 JSON 结构的层级。从Url节点遍历 JSON 对象可以揭示引用 URL 所需的层次结构:
Url > sharingLinkInfo > ShareLink > d > body
当将其转换为 Power Automate 语法时,它变为以下内容:
body('Send_an_HTTP_request_to_SharePoint')?['body']?['d/ShareLink/sharingLinkInfo/url']
点击添加。
-
在SharePoint Online 文件请求范围内,在ComposeURL操作之后点击添加操作。
-
选择发送电子邮件 V2 Outlook 操作。
-
在发送电子邮件(V2)操作弹出窗口中,使用获取响应 详细信息操作的电子邮件动态内容令牌填写收件人字段。
-
在Subject名称中输入,并在Body区域创建一个基本的电子邮件消息。务必包括来自ComposeURL操作的Outputs动态内容值(因为它包含参会者上传身份证明文件所需的 URL),如图图 8.29所示。29*:

图 8.29 – 配置发送电子邮件(V2)操作
- 点击Save。
到目前为止,您可以通过提交表单并查看是否收到注册者的电子邮件来测试流程。否则,让我们开始创建第二个流程!
处理身份证明文件
到目前为止,您已创建了一个处理 Microsoft Forms 响应的流程,并使用其中的数据为注册者生成一个自定义文件上传链接。在下一个流程中,您将使用 AI Builder 身份证明文件读取器从上传的文件中提取数据,并更新Attendees SharePoint 列表中相应的参会者注册行。
让我们开始吧!
-
从 Power Automate 制作门户(
make.powerautomate.com),点击Create并选择Automated Cloud Flow。 -
输入Flow name值并选择When a file is created (properties only) SharePoint 触发器,如图图 8.30所示:

图 8.30 – 创建新的流程
-
点击Create。
-
选择When a file is created (properties only)触发器以打开弹出窗口。
-
在Site Address下,选择Event Registration网站。
-
在Library Name下,选择Uploads。
-
由于When a file is created (properties only)操作在文件夹创建时也会触发,因此排除文件夹创建活动很重要。选择操作的Settings选项卡。在Trigger conditions下,点击Add。
-
在字段中输入
@equals(triggerOutputs()?['body/{IsFolder}'],false)以过滤掉涉及文件夹创建的事件。见图图 8.31:

图 8.31 – 添加触发条件
-
接下来,通过添加
(concat(utcNow('yyyyMMddHHMMss'),'_',body('Get_response_details')?['value']))将上传文件的正文内容引入流程中。 -
在Get file content using path弹出窗口中,在Site Address下选择Event Registration网站。
-
在File path字段中,选择When a file is created (properties only)操作下的Full Path动态内容令牌。
当流程运行时,如果存在多个新文件,Power Automate 可能会添加For each或Apply to each控件。如果没有自动添加,请点击+,然后选择Add an action。选择Apply to each控件,并将Get file content操作拖入其中。
注意
如果动态内容控制没有显示任何动态内容值,您可以尝试切换到经典 Power Automate 设计器并重新添加获取文件内容使用路径操作。如果需要,您可以在之后保存并切换回新 设计器。
- 在获取文件内容使用路径操作之后,点击添加操作并选择从身份证明文件中提取信息 AI Builder 操作,如图图 8.32所示:

图 8.32 – 添加 AI Builder 操作
- 在从身份证明文件中提取信息飞出窗口中,从获取文件内容使用 路径操作添加文件内容动态令牌:

图 8.33 – 选择与 AI Builder 一起使用的文件内容
-
在从身份证明文件中提取信息操作之后,点击添加操作并选择获取项目 SharePoint 操作。
-
在网站地址下,选择事件 注册网站。
-
在列表名称下,选择与会者列表。
-
在高级参数下拉菜单中,选择过滤 查询参数。
-
在
Title eq'。 -
在Filter Query字段内点击并添加一个表达式。
-
在文本区域中输入
split(triggerOutputs()?['body/{Path}'],'/')?[1]并点击Filter Query字符串中的'字符。完成的值应类似于以下内容:Title eq '@{split(triggerOutputs()?['body/{Path}'],'/')?[1]}'该表达式操作 SharePoint 项目路径,提取
/字符后面的值。此路径值与 SharePoint 列表中相应项目的项目名称值相同。 -
在获取项目操作之后,点击添加操作并选择获取 项目操作:

图 8.34 – 选择获取项目操作
确保获取的是获取项目操作(而不是获取项目操作)。获取项目返回项目集合,而获取项目返回单个项目。
-
在网站地址下,选择事件 注册网站。
-
在列表名称下,选择与会者列表。
-
在Id字段区域点击。选择表达式图标。
-
在
first(outputs('Get_items')?['body/value'])?['id']上点击添加:

图 8.35 – 配置项目表达式
之前的表达式使用过滤查询返回单个项目。这个表达式在此基础上通过查找获取项目操作的id属性,使用步骤 20中表达式的输出。
-
在获取项目操作之后,选择添加操作并选择条件控制。
-
配置条件控制飞出窗口。在条件表达式区域,根据表 8.2配置条件:
| 条件 | 操作 | 条件 |
| --- | --- | --- |
| 从身份证明文档中提取信息 AI Builder 操作的 名字 | 包含 | 从获取项 SharePoint 操作中提取的 名字 |
| 从身份证明文档中提取信息 AI Builder 操作的 姓氏 | 包含 | 从获取项 SharePoint 操作中提取的 姓氏 |
表 8.2 – 配置条件控制值
- 检查 条件 控制配置。参见 图 8**.36:

图 8.36 – 检查条件控制
-
在 条件 控制的 True 分支中,点击 添加操作。选择 更新项 SharePoint 操作。
-
在 更新项 飞出窗口中,在 站点地址 下,选择 事件 注册 网站。
-
在 列表名称 下,选择 与会者 列表。
-
在 Id 字段中,添加来自 获取项 (not 获取项) 操作的 ID 动态内容令牌。参见 图 8**.37:

图 8.37 – 配置更新项操作
-
在 高级参数 下,点击 显示全部。
-
在 DOB 字段中,添加来自 AI Builder 从身份证明文档中提取信息 操作的 出生日期 动态内容值。
-
在 验证状态值 下拉菜单中,选择 通过。
-
在 身份证明文档 字段中,选择来自 AI Builder 从身份证明文档中提取信息 操作的 文件编号 动态内容值。
-
在 有效期 字段中,从 AI Builder 从身份证明文档中提取信息 操作中选择 到期日期 动态内容值。参见 图 8**.38:

图 8.38 – 配置更新项操作
- 点击 保存。
要完成此流程,我们将配置通知电子邮件。
发送确认消息
按照以下步骤操作:
-
在 条件 控制的 True 分支中,在 更新项 操作后点击 添加操作。选择 获取文件内容 操作。
-
重命名
Getcalendar invitation。 -
在 站点地址 下拉菜单中,选择从 建立 Teams 会议 预先步骤中保存的 ICS 日历文件所在的站点。
-
在 文件路径 字段中,点击文件夹图标并浏览到保存的 ICS 文件。参见 图 8**.39:

图 8.39 – 获取会议邀请的 ICS 日历文件
-
在 条件 控制的 True 分支中,在 获取日历邀请 操作后点击 添加操作。选择 发送电子邮件(****V2) 操作。
-
选择 发送电子邮件(****V2) 操作。
-
在 收件人 字段中,选择来自 获取 项 操作的 电子邮件 动态内容令牌。
-
在
Congratulations! Your event registrationis complete!。 -
在 正文 区域,输入一条消息。
-
在 高级参数 下,选中复选框以启用 附件 参数。
-
在
Meeting.ics) 附件中。 -
在 内容 字段中,从 Get calendar invitation 操作添加 File Content 动态内容令牌:

图 8.40 – 将附件添加到电子邮件消息中
-
在 附件 区域,点击 切换到输入整个数组 图标。
-
移除 File Content 动态对象周围的引号。见 图 8**.41:

图 8.41 – 更新附件区域
-
在这里,重要的是要移除动态内容令牌周围的引号——否则,附件将显示为
base64编码的文件,无法添加到日历中。 -
在 Condition 控制的 True 分支下,右键单击 Update item 操作并选择 复制操作,如 图 8**.42 所示:

图 8.42 – 复制操作
- 在 False 分支的 Condition 控制中,点击 + 并选择 粘贴操作:

图 8.43 – 粘贴操作
-
将操作重命名为
Update item – Failed。 -
在 高级参数 下,删除 DOB、Identity document 和 Valid through 的动态内容令牌。
-
在 Validation Status Value 下拉菜单中,选择 Failed。
-
在 Condition 控制的 True 分支下,右键单击 Send an email (V2) 操作并选择 复制操作。
-
在 False 分支的 Condition 控制中,点击 Update item – Failed 操作后面的 + 符号,然后点击 粘贴操作。
-
将操作重命名为
Send an email (V2) – Failed。 -
使用表示注册不完整的消息更新 Subject 值。
-
使用解决问题的说明更新 正文 值。
-
在 高级参数 下,点击 X 符号以移除配置的附件:

图 8.44 – 移除附件
- 点击 保存。
现在是关键时刻!
测试流程
你可能已经想在你构建流程时测试这个流程——这是完全可以的。这是学习过程的一部分,并且是验证你的语法是否正确以及你是否选择了正确的动态内容令牌的重要步骤。
要测试流程,你需要一些东西:
-
一个可以接收确认消息的电子邮件账户
-
一个包含全名、出生日期、到期日期和文件编号的驾照或护照(可以是真实的或来自互联网的样本)
-
带有摄像头(或已数字化身份证明文件)的手机或平板设备
要执行流程,请按照以下步骤操作:
-
导航到您在先决条件部分创建的 Microsoft 表单。您应该在“构建输入表单”部分的步骤 5中捕获表单 URL。
-
使用与您将要提交的身份证明文件匹配的姓名填写表格。请确保您使用的是可以访问的电子邮件地址。在此示例中,我们将使用以下示例护照卡为 HAPPY TRAVELER:


测试技巧
使用混合大小写输入姓名(例如 Happy Traveler)以确保您也在测试将姓氏和名字值转换为大写的toUpper()函数。
- 检查您的电子邮件以获取自动响应。响应应包含一个上传链接:

图 8.46 – 查看提交的电子邮件
- 点击链接。您应该会被重定向到一个可以上传文件的页面:


-
点击选择文件。浏览到之前保存的图像文件或使用您的移动设备上的照片应用拍摄新照片。
-
点击上传。
-
等待包含 ICS 日历附件的确认消息:


- 双击附件将其添加到您的日历:


- 查看包含加入链接的会议信息:


- 导航到事件注册网站并选择参会者列表。点击条目以查看提取的信息:

图 8.51 – 查看参会者信息
恭喜!您已成功验证流程!
您也可以尝试提交不同组合的身份证明文件和姓名来测试失败场景。
进一步探索
有很多不同的方法来实现这个解决方案。一个想法可能是使用 Zoom 会议而不是 Microsoft Teams 会议。为此,您需要 Zoom 客户端和日历客户端。您将能够直接通过 Zoom 界面下载 ICS 文件,而不是手动生成。请参阅support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0060791。
另一个想法可能是实施更健壮的身份证明文件验证机制,例如验证文件是否仍然有效或是否有与文件关联的文档识别号。
摘要
本章中的练习展示了 Power Automate 和 SharePoint Online 工具的许多高级功能。您能够在不到一个小时的时间内成功接受匿名用户的上传,使用原生 AI Builder 文档阅读器处理身份信息,并生成带有会议附件的电子邮件!
通过本章获得的知识,您可以进一步强化您的身份处理需求。
在下一章中,我们将学习如何使用另一个 AI Builder 模型进行文本提取。
第十章:实施一个 AI 赋能的简历筛选器
在某个时候,您可能需要负责招聘某人——至少,您需要审查一堆简历并尝试筛选出优秀的候选人。
如果您发布了一个热门的工作帖子,您可能会面临数十份、数百份甚至数千份简历。您如何有效地筛选这些简历?
关键词匹配可能是一种您可以采用的策略。从 AI 那里获得帮助怎么样?AI 模型可能能够做些什么?让我们来看看!
设计解决方案
这个解决方案将基于本书中已经学到的某些技能,包括使用 Power Automate 流程和 AI Builder 功能。在这个解决方案中,您将使用 AI 处理候选人简历,提取关键信息,并将候选人与一份工作描述列表进行比较,以查看他们是否有资格。AI 模型确定有资格的候选人将被发布到 Teams 频道。
以下图表表示解决方案背后的逻辑过程:

图 9.1 – 查看解决方案工作流程
让我们分解一下:
-
简历由共享邮箱接收。
-
Power Automate 检索文档并将其发送到 SharePoint。
-
SharePoint 用于维护申请人的状态信息:
-
简历文档本身存储在 SharePoint 库中。
-
候选人的引用存储在 SharePoint 列表中的一个条目中。
-
-
AI Builder 处理简历并使用提取的候选人信息更新 SharePoint 列表。
-
AI Builder 还评估候选人与 SharePoint 中存储的工作描述的匹配度。
-
AI Builder 的输出决定流程如何进行:
-
如果候选人是潜在匹配项,将向 Teams 频道发送通知。
-
如果候选人不符合条件,将向候选人的电子邮件地址发送拒绝邮件。
-
此解决方案以两种方式使用 AI:
-
为了提取实体信息(例如一个人的姓名和电子邮件地址)
-
为了推理文本以确定内容的含义
这个项目中有很多移动部件,所以让我们开始吧!
许可前提条件
在 Power Platform 中使用 AI 模型和连接器有几个前提条件:
-
包含 Microsoft Dataverse 的订阅
-
AI Builder 容量(或试用容量)
-
Power Apps 或 Power Automate 高级许可
-
包含 Microsoft Teams 的订阅
-
包含 Exchange Online 的订阅,以便您可以配置共享邮箱
-
Cloudmersive 免费层账户
如果您还没有启用 Dataverse 和 AI Builder 容量,请参阅第二章,配置支持 AI 服务的环境,以及第六章,使用情感分析处理数据。
配置解决方案前提条件
在开始工作流配置之前,您需要设置一些先决条件,例如 Microsoft Teams,以及一些 SharePoint 列表和文档库。由于 Microsoft Teams 中的所有团队都包含一个 SharePoint 站点,您只需利用该团队的 SharePoint 站点组件即可——这为您(以及您的 IT 环境)节省了空间。
创建共享邮箱
创建共享邮箱是一个相对简单的任务。这个邮箱将由提交简历的候选人使用。要配置共享邮箱,请按照以下步骤操作:
-
导航到 Microsoft 365 管理中心(
admin.microsoft.com)。 -
在导航菜单中,展开团队和组并选择共享邮箱。
-
点击添加共享邮箱。
-
输入
resumes。确认电子邮件地址的输入并点击保存更改。 -
在邮箱创建完成后,选择将成员添加到您的共享邮箱,如图图 9.2所示:

图 9.2 – 向共享邮箱添加成员
-
在共享邮箱成员弹出窗口中,选择添加成员。
-
选择一个或多个用户(例如你自己)并点击添加。
接下来,您将创建一个团队,该团队将用于存储简历和候选人信息(因为团队的一个组成部分是 SharePoint 站点),以及通知其他人潜在候选人已提交简历申请某个职位。
创建团队
创建团队的过程同样简单。您可以从 Microsoft Teams 或 Microsoft 365 管理中心创建一个。由于我们已经在 Microsoft 365 管理中心,我们将使用该界面。按照以下步骤操作:
-
从 Microsoft 365 管理中心(
admin.microsoft.com),展开团队和组,然后选择活动团队和组。 -
在活动团队和组页面,选择添加团队。
-
在
Jobs and candidates上,点击下一步。 -
在所有者选项卡中,添加至少一个所有者(例如你自己)并点击下一步。
-
在成员选项卡中,可选地添加额外的团队成员。点击下一步。
-
在
jobsandcandidates)上,将隐私级别设置为公共并点击下一步。 -
验证设置并点击添加团队以完成。
-
点击关闭。
一旦团队已配置,就到了将内容迁移到 SharePoint 的时候了。
配置 SharePoint Online
如前所述,每个 Microsoft Teams 团队都会获得一个 SharePoint 站点。对于此解决方案,我们将使用一些 SharePoint 列表和文档库。
进一步阅读
有关组成 Microsoft Teams 团队对象的组件的更多信息,请参阅www.undocumented-features.com/2021/07/05/a-deeper-dive-into-teams-architecture/。
让我们逐步了解确保 SharePoint Online 正确配置的要求。第一步是创建一个文档库,用于存储候选人的申请文档。
配置 SharePoint 文档库
此解决方案需要一个存储位置来保存候选人的简历。虽然您可以使用默认的文档库,但因为它显示名称(文档)与其实际名称(共享文档)不同,所以往往会引起更多的故障排除。
要创建新的 SharePoint 文档库,请按照以下步骤操作:
-
从 Microsoft 365 管理中心(
admin.teams.microsoft.com),展开团队和组并选择活动团队和组。 -
选择您在上一节中创建的团队。
-
在弹出窗口中,点击查看网站以导航到团队的连接 SharePoint 网站。见图 9**.3:

图 9.3 – 导航到团队的连接 SharePoint 网站
-
点击新建,然后选择文档库。
-
在创建新文档库页面,选择空白库。
-
在名称字段中输入
简历,然后点击创建。
就这些!接下来,我们将创建一些 SharePoint 列表。
配置 SharePoint 列表
在本节中,您将创建两个 SharePoint 列表——一个列出角色名称和描述,另一个用于存储候选人信息。按照以下步骤操作:
-
导航到工作和候选人SharePoint 网站主页。
-
点击新建,然后选择列表。
-
在创建列表页面,选择空白列表。
-
输入
角色,然后点击创建。 -
在角色列表中,点击添加列。选择多行文本作为类型,然后点击下一步。
-
职位描述并点击保存。 -
点击主页以返回到网站的首页。
-
点击新建,然后选择列表。
-
在创建列表页面,选择空白列表。
-
输入
候选人,然后点击创建。 -
使用表 9.1中的列名和类型,重复将列添加到候选人列表的过程:
| 列名 | 列类型 |
| --- |
| 名字 | 文本 |
| 姓氏 | 文本 |
| 电话号码 | 文本 |
| 电子邮件 | 文本 |
| 当前公司 | 文本 |
| 当前角色 | 文本 |
| 候选人摘要 | 多行文本 |
| 简历链接 | 文本 |
| AI 筛选 | 是/否;默认值否 |
| 服务台技术人员 | 选择:是/否/可能(您也可以使用文本作为列类型) |
| 原因 | 多行文本 |
表 9.1 – SharePoint 列表列信息
小技巧
之后,我们将创建一个流程来填充简历链接列的文件 URL。如果你想使其可点击,你可以自定义字段格式。选择简历链接列,指向列设置,然后点击格式化此列。将以下 JSON 粘贴到文本框中,然后点击保存:
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "a", "txtContent": "@currentField", "attributes": { "target": "_blank", "href": "=@currentField" } }
配置工作描述
这个简历筛选解决方案的一个目标是可以确定候选人是否适合某个角色。为了做到这一点,你需要定义角色信息。有许多方法可以导入工作描述数据;在这个例子中,我们将使用之前创建的角色SharePoint 列表。
寻找好的样本工作描述
为了让 AI 模型确定简历是否与工作匹配,你需要好的工作描述(最好是那些你可以找到相应简历的工作描述)。你可以使用resources.workable.com/job-descriptions/这样的网站来检索样本工作描述。
要添加工作描述,请按照以下步骤操作:
-
导航到你在职位和候选人网站中之前创建的角色SharePoint 列表。
-
点击新建。
-
在标题字段中输入角色或工作标题。
-
在职位描述文本区域字段中输入工作描述。
-
点击保存。
重复此过程,添加几个工作标题和描述。在本章中,我们将只关注匹配单个工作描述(例如 IT 服务台技术员)。
在线内容
你可以从本书的 GitHub 网站下载样本简历:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution
配置 AI 模型
到目前为止,你已经使用了几种不同的 AI 技术:
-
提示,例如 AI Builder 的生成式 AI(GenAI)提示或 Open AI 的 ChatGPT
-
Power Platform 的 Copilot
-
预构建的 AI Builder 模型,例如情感分析模型
在这些示例中,你已经提供了在运行时(即在流程或应用程序的上下文中)要分析或处理的内容。然而,在这个解决方案中,你将使用一个需要训练的 AI 模型。
在这个背景下,训练意味着向模型展示一个样本数据集,然后突出显示哪些数据是重要的以及如何将识别的数据映射到字段。由于我们正在构建简历筛选器,训练数据应该代表你可能期望处理的简历。你可以从 LinkedIn 或互联网等搜索来源获取样本。你也可以向同事、家人或朋友索要简历。模型通过看到大量不同类型的样本表现最佳。
寻找好的样本数据
你需要几个示例的原因是,这样你可以训练 AI 模型如何识别某些字段。当 AI 模型学会了与某些字段相关联的数据类型时,关键项或实体提取效果最佳。例如,如果一个人看到123 Main Street, Chicago, IL,他们很容易就能确定这是一个地址。除非经过其他训练,否则 AI 模型只会看到数字和字母。为了帮助增强你的训练数据,你可以从像www.beamjobs.com/resumes这样的网站下载示例简历。务必寻找包含你之前添加到角色列表中的职位和职位描述的简历模板。
训练 AI 模型
要训练 AI 模型,请按照以下步骤操作:
-
导航到 Power Automate 制作门户(
make.powerautomate.com)。 -
从导航菜单中选择AI 中心。
-
选择AI 模型:

图 9.4 – 探索 AI 中心
- 从顶部导航栏选择文档,然后选择从文档中提取自定义信息自定义模型:

图 9.5 – 选择自定义模型
- 在从文档中提取自定义信息页面,选择创建自定义模型,如图图 9**.6所示:

图 9.6 – 创建自定义模型
- 在选择文档类型页面,选择非结构化文档:

图 9.7 – 选择非结构化文档
-
点击下一步。
-
在选择要提取的信息页面,点击添加并选择文本:

图 9.8 – 选择要提取的信息
-
在文本字段弹出窗口中,为该字段输入姓名。点击完成。
-
为姓氏、电子邮件、电话号码、当前角色和当前公司添加额外的文本字段。完成后点击下一步。
-
在添加文档集合页面,点击新建集合,如图图 9**.9所示:

图 9.9 – 添加文档集合
-
点击+号将文档添加到集合中。
-
在集合 1弹出窗口中,点击添加文档:

图 9.10 – 向集合中添加文档
-
选择存储你的样本数据的位置。
-
选择要包含在集合中的文档,然后点击添加:

图 9.11 – 选择集合中的文档
-
在上传文档页面,点击上传文档。
-
上传完成后,点击完成。
-
点击下一步。
-
对于集合中的每个文档,选择文档中与文本字段(姓名、姓氏、电子邮件、电话号码、当前角色、当前公司)之一对应的文本。选择一个字段的文本后,选择适当的字段来映射此项目。请参阅图 9.12:

图 9.12 – 标记字段
- 在为所选文档标记所有字段后,使用集合面板中的导航箭头移动到集合中的下一个文档。对每个文档重复选择和标记过程。在文档中标记每个字段后,文档缩略图将更新为带有复选标记的图标,表示已完成。如果样本文档中没有字段,请选择字段旁边的省略号,并选择文档中不可用。请参阅图 9.13:

图 9.13 – 查看已标记完整的文档
-
当所有文档都已标记后,点击下一步。
-
在模型摘要页面上,点击训练。模型训练可能需要几分钟到几小时不等。在训练作业提交后,点击转到模型。
您可以在AI 模型 > 我的模型页面上查看状态,如图图 9.14所示:

图 9.14 – 查看模型训练
如果需要,您可以修改简历识别。如果您的环境中有多个已训练的 AI 模型,这将帮助您轻松识别它。
测试模型
模型完成训练后,您应该测试它以确保它返回所需的结果。
要测试一个模型,请按照以下步骤操作:
-
从AI 中心设置中,通过点击其名称来打开模型。
-
在训练文档下,选择快速测试:

图 9.15 – 运行快速测试
-
在快速测试页面上,点击从我的设备上传并浏览到样本简历文档(最好是您没有用于训练的文档)。
-
如果它无法识别某些字段或您发现它将数据映射到错误的字段,您可能需要通过向集合中添加更多参考文档并重新运行训练来更新模型。
发布模型
在您对模型的数据识别满意后,您需要通过发布它来使其对 Power Platform 可用。要发布模型,请点击一个已训练的模型,然后选择发布:

图 9.16 – 发布模型
接下来,让我们去注册一个连接器,以便使一些文本操作变得更容易。
启用 Cloudmersive 连接器
一些 AI Builder 动作需要您指定一个文档类型参数,或者只能以文本形式接收输入。由于最终用户可能会发送各种类型的文档(如 Word 文档或 PDF 文件),您需要能够相应地格式化数据。
虽然您可以使用一些条件控制和组合语句来完成一些工作,但为什么不使用工具来简化您的工作呢?Cloudmersive 的连接器使内容转换变得轻而易举!而且,每月有 800 个免费的 API 调用,这是一个相当不错的交易。
要注册,请按照以下步骤操作:
-
填写表格并点击立即注册。
-
在选择计划页面,选择免费层。
-
在选择您的角色以完成账户设置页面,选择代表您工作类型的角色。
-
在您希望从哪个 API 开始?页面,选择文档和数据转换 API。
-
在您希望使用哪种编程语言?页面,选择Microsoft Flow/ Power Automate。
-
在API 密钥页面,点击创建密钥。
-
将免费层密钥下的API 密钥区域的值复制到您可以轻松访问的位置。API 密钥是一个由字母 a 到 f 和数字 0-9 组成的 36 位代码。
现在,是时候开始使用自动化工具了!
创建流程
在所有先决条件都准备就绪后,是时候开始使用一些自动化工具了!这个流程将被分为几个部分,以帮助您理解这些动作。
配置触发器和变量
在设计解决方案部分,我们确定共享邮箱是简历内容将被摄取的方式。在现实世界中,这可能是您选择接收简历的唯一方式。您可能还有一个候选人可以上传简历的网站,甚至可能配置第三方职位发布服务以存储或转发简历。在任何情况下,流程都将非常相似。触发器将取决于您可用的访问、轮询或通知方法。
为了简化起见,此示例将使用共享邮箱。
此流程将使用变量——本质上,是可以在流程中用作临时内容或值的占位符。将构建四个变量:
-
RoleFitJson:用于存储评估候选人简历的 AI Builder 动作的 JSON 输出。 -
RoleFit:一个词的答案,表示候选人是否适合。示例流程将输出三个潜在值之一——是、可能和否。 -
RoleFitSummary:AI Builder 评估的简要描述或理由。这有助于您的组织映射到微软的负责任 AI 原则中的透明度。 -
CandidateSummary:候选人简历的简要总结。
在整个流程中,我们将使用我们各种 AI 解决方案生成的值来更新它们。
如果我遇到困难怎么办?
如果由于某种原因遇到障碍(找不到功能、选项未显示或某些内容不明确),帮助只需点击一下!您可以从我们的 GitHub 网站下载本章节的工件:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
要配置流程,请按照以下步骤操作:
-
导航到 Power Automate 制作门户(
make.powerautomate.com)并选择创建。 -
在从空白开始下,选择自动化****云流程。
-
在
Process resumes)上选择当共享邮箱中收到新电子邮件时(v2)触发器。点击创建。 -
选择当共享邮箱中收到新电子邮件时(V2)触发器。在弹出窗口中,输入您在先决条件中创建的共享邮箱的电子邮件地址作为自定义值。
-
在高级参数下,选择仅包含附件和包含附件参数。对于这两个参数,选择是。参见图 9**.17:

图 9.17 – 配置触发器
-
点击添加操作并选择初始化变量变量操作。
-
将
- RoleFitJson更新为操作名称。在RoleFitJson中,选择类型值为字符串。参见图 9**.18:

图 9.18 – 添加初始化变量操作
-
点击添加操作并选择初始化变量变量操作。
-
将
- RoleFit更新为操作名称。在RoleFit中,选择类型值为字符串。 -
点击添加操作并选择初始化变量变量操作。
-
将
- RoleFitSummary更新为操作名称。在RoleFitSummary中,选择类型值为字符串。 -
点击添加操作并选择初始化变量变量操作。
-
将
- CandidateSummary更新为操作名称。在CandidateSummary中,选择类型值为字符串。
现在,我们将处理保存附件并为候选人添加 SharePoint 列表项。
处理附件和候选人记录
在本节中,我们将配置保存附件并添加发送简历的候选人 SharePoint 列表项所需的步骤。请按照以下步骤操作:
-
在Initialize variable CandidateSummary操作之后,添加创建文件SharePoint 操作。
-
将
– Add resume to SharePoint library更新为操作名称。 -
在网站地址下,选择工作和候选人SharePoint 网站。
-
在文件夹路径下,选择简历文档库。
-
在文件名字段中,添加一个表达式。添加以下表达式:
-
concat(utcNow('yyyyMMddHHmmss'),'_',triggerOutputs()?['body/from'],'_',item()?['name']).这将根据当前日期(年-月-日-小时-分钟-秒)、发件人的电子邮件地址和原始附件名称构建一个新的文件名,每个名称之间用下划线字符分隔。例如,文件名为
20240326140005_sender@domain.com_MyResume.pdf将表示 2024 年 3 月 26 日 14:00:05 小时从sender@domain.com收到的文件,原始文件名为MyResume.pdf。虽然这并非完全必要,但它确实有助于跟踪单个简历文件,以确保它们可以轻松地单独识别。 -
在 File Content 字段中,在 When a new email arrives in a shared mailbox (V2) 操作下添加 Attachments Content 动态令牌。见图 9.19*:

图 9.19 – 添加 SharePoint 创建文件操作
-
将
– 获取上传文件属性添加到操作名称中。 -
在
https://<tenant>.sharepoint.com/sites/jobsandcandidates,如图 9.20 所示:

图 9.20 – 选择与团队关联的 SharePoint 网站选择
-
在 Library Name 下,选择 Resumes 文档库。
-
在 Id 下,从 Create file Add resume to SharePoint library 操作中选择 Id 或 ItemId 动态内容令牌。它也可能显示为 body/ItemId 令牌(取决于你使用的是 New designer 或 Classic designer 视图),如图 9.21 所示。21*:

图 9.21 – 添加 ItemId 动态内容令牌
-
接下来,将
– 导入简历数据添加到操作名称中。 -
在 Site Address 下,选择与 Jobs and candidates 团队关联的 SharePoint 网站。这应该是你之前在 步骤 8 中选择的相同网站。
-
在 File Path 下,在 Create file Add resume to SharePoint library 操作下添加 body/Path 动态内容令牌。见图 9.22*:

图 9.22 – 添加 body/Path 动态内容令牌
- 在
– Candidate list entry操作名称之后。
好了!现在是时候点击 Save 保存你的进度了!接下来,我们将介绍一个使用你之前训练的模型的新 AI Builder 操作。
从简历中提取信息并更新候选人记录
下一个过程将利用文档提取模型。由于模型已经训练好,你实际上不需要做任何事情,只需将文档发送到模型即可。按照以下步骤操作:
- 在 Create item Candidate list entry 操作之后,添加 Extract information from documents AI Builder 操作:

图 9.23 – 添加 AI Builder 操作
-
将
– 从简历中提取候选人信息添加到操作名称中。 -
在AI 模型下,选择您训练的简历识别模型。
-
在表单类型下,选择PDF。
-
在表单下,选择文件内容动态内容标记,该标记位于使用路径导入简历数据动作下:

图 9.24 – 配置从文档中提取信息操作
-
将操作名称添加为
– 更新候选人个人信息。 -
在网站地址下,选择与职位和候选人团队关联的 SharePoint 网站。
-
在列表名称下,选择候选人列表。
-
在ID下,选择创建项目 - 候选列表条目 SharePoint 操作下的ID动态内容标记。参见图 9.25:

图 9.25 – 选择与候选条目关联的 ID
-
在高级参数下,点击显示全部。
-
在姓氏、名字、电话号码、电子邮件、当前角色和当前公司字段中,添加从文档中提取候选人信息动作下的相应动态内容标记,如图图 9.26 所示:

图 9.26 – 将动态内容标记映射到字段
您可以使用<字段名称>值或文本动态内容标记。为了保持一致性,请为所有字段使用相同的标记类型。
- 在简历链接字段中,添加项目链接动态内容标记,该标记位于获取上传文件属性 获取上传文件属性动作下。
是时候再次点击保存了!到目前为止,您已经将简历处理到从文档中提取关键细节并将其插入到候选人记录的程度。接下来,您将根据职位描述评估简历。
使用提示评估简历
在本节中,我们将配置操作以导入其中一个职位描述,并将职位描述和简历的文本发送到 GenAI 提示。按照以下步骤操作:
-
在动作描述中添加
– 导入职位描述。 -
在网站地址下,选择职位和候选人网站。
-
在列表名称下,选择角色。
-
在高级参数下,在下拉菜单中选择过滤查询。
-
在
Title eq 'Service Desk Technician':

图 9.27 – 编辑过滤查询
-
在本例中,使用过滤查询选择包含服务台技术人员职位描述的列表行。将单引号之间的文本更改为与您要测试的角色描述相匹配。
-
添加将 PDF 文档转换为文本(txt) Cloudmersive 操作:

图 9.28 – 添加 Cloudmersive PDF 文档转换动作
- 在 创建连接 弹出窗口中,指定一个 连接名称 值,然后输入在 启用 Cloudmersive 连接器 部分设置时获得的 API 密钥 值。完成后点击 创建新。参见 图 9**.29:

图 9.29 – 配置连接
-
在 要执行操作的输入文件 字段中,添加在 使用路径获取文件内容 导入简历数据 动作下 文件内容 动态内容令牌。
-
在 要执行操作的输入文件(文件名) 字段中,在 获取上传文件的属性 获取上传文件的属性 动作下添加 带有扩展名的文件名 动态内容令牌。
这将导致简历 PDF 文件被转换为文本,以便与 GenAI 提示一起处理。
-
在动作描述中添加
– Evaluate candidate against job descript。 -
在 提示 下,选择 新 自定义提示:


-
在提示区域中,粘贴以下文本:
You are an HR professional screening candidate resumes. A candidate has submitted the following resume: *CandidateResume* You are trying to fill the position *RoleTitle* that has the following job description: *RoleDescription* Based only on the information in the supplied role description and the information in the candidate's resume, is this candidate a good fit for the position? Output must be structured in a JSON output. The JSON object must have three name value pairs: RoleFit: Evaluation of whether candidate is a fit for the role. Possible answers are Yes, No, Maybe. RoleFitSummary: Short summary of why candidate was or was not a fit. Limit to 50 words. CandidateSummary: Short summary of candidate skills, experience, and work history. Limit to 100 words. Only Yes, No, or Maybe answers are accepted for the RoleFit name value pair. Use the following information to determine good fit: The resume and the role description should have at least an 80% confidence match to be considered a good fit (Yes). If the resume and role description have between and 70% and 80% confidence match, then answer Maybe. If the resume and the role description is less than a 70% confidence rating, consider the candidate not a fit (No). You must limit your answers to either Yes, No, or Maybe for the RoleFit name value pair. The output data must be a properly formatted JSON object and should be ordered based on the following sample: { "RoleFit" : "yes", "RoleFitSummary" : "50 word description explaining reasoning.", "CandidateSummary" : " 100 word summary of candidate skills and experience." } -
添加一个
基于简历和职位描述进行角色匹配。 -
将用星号(
*CandidateResume*,*RoleTitle*, 和*RoleDescription*)标记的高亮单词替换为动态值。您可以直接输入正斜杠(/)字符或使用 添加动态值 按钮来插入动态内容令牌。参见 图 9**.31 中的完成提示示例:

图 9.31 – 编辑提示
-
点击 保存 自定义提示。
-
在 输入角色标题 字段中,选择在 获取项目 导入职位描述 动作下 标题 动态内容令牌。
-
在 输入候选人简历 字段中,在 将 PDF 文档转换为文本(****txt) 动作下添加 body/TextResult 动态内容令牌:

图 9.32 – 添加 Cloudmersive 将 PDF 文档转换为文本(txt)动作
-
在 输入角色描述 字段中,在 获取项目 导入职位描述 动作下添加 JobDescription 动态内容令牌。
-
点击 保存。
您只剩下几个部分了!接下来,我们将更新一些变量,我们可以使用这些变量来更新 SharePoint 列表中的候选人记录并生成要发布到 Teams 或通过电子邮件发送的消息。
更新候选人记录
在本节中,我们将从 GPT 动作生成的数据元素中添加它们回到候选人记录中。按照以下步骤操作:
-
在动作名称后添加
– RoleFitJson。 -
在 名称 字段中,选择 RoleFitJson。
-
在 值 字段中,选择在 使用提示评估与职位描述的候选人 动作下 创建文本 动态内容令牌。
此动态内容标记包含我们在提示中指定的 JSON 结构:

图 9.33 – 添加 GPT 提示文本输出
-
在动作名称中添加
– 提取生成的 RoleFit 数据。 -
在内容字段中,添加RoleFitJson变量动态内容标记。
-
在架构区域,粘贴以下定义:
{ "type": "object", "properties": { "RoleFit": { "type": "string" }, "RoleFitSummary": { "type": "string" }, "CandidateSummary": { "type": "string" } } }此架构用于定义 JSON 数组的结构。注意名称/值对定义及其内容类型。在动作名称中添加
– RoleFit。 -
在名称字段中,选择RoleFit变量。
-
在值字段中,在解析 JSON 提取生成的 RoleFit 数据动作下添加Body RoleFit动态内容标记。

图 9.34 – 选择 RoleFit 内容
-
在动作名称中添加
– RoleFitSummary。 -
在名称字段中,选择RoleFitSummary变量。
-
在值字段中,在解析 JSON 提取生成的 RoleFit 数据动作下添加Body RoleFitSummary动态内容标记。
-
在动作名称中添加
– CandidateSummary。 -
在名称字段中,选择CandidateSummary变量。
-
在值字段中,在解析 JSON 提取生成的 RoleFit 数据动作下添加Body CandidateSummary动态内容标记。
-
在动作名称中添加
– 更新候选人状态。 -
在站点地址下,选择包含候选人简历和列表的 SharePoint 站点。
-
在列表名称下,选择候选人。
-
在ID字段中,在创建项候选人列表条目动作下添加ID动态内容标记。

图 9.35 – 配置更新项动作 – 更新候选人状态
-
在高级参数下,点击显示全部。
-
在候选人摘要字段中,添加CandidateSummary变量。
-
在服务台技术人员字段中,添加RoleFit变量。
-
在原因字段中,添加RoleFitSummary变量。见图 9.36:

图 9.36 – 添加输出变量
点击保存以保存流程上的进度。在最后部分,我们将添加一些通知。
发送确认消息
在将候选人的RoleFit状态更新为是、否或可能之后,是时候发送一些通知了!请按照以下步骤操作:
-
在更新项动作(更新候选人状态的地方)之后,点击添加动作并选择条件控件。
-
将表达式评估从AND更改为OR。
-
在第一个框中,添加
Yes的动态内容标记。 -
点击新建项然后选择添加行。
-
在新行的第一个框中,添加
Maybe的动态内容标记。见图 9.37:

图 9.37 – 为 RoleFit 添加条件控制
- 在条件控制的真分支中,添加如图图 9.38所示的在聊天或频道中发布消息的 Teams 操作:

图 9.38 – 添加 Teams 发布消息操作
-
在以…发布下,选择流程机器人。
-
在发布到下,选择频道。
-
在团队下,选择工作和候选人团队。
-
在频道下,选择通用。
-
使用标记,如候选人摘要、角色匹配和简历链接自定义消息区域:

图 9.39 – 创建 Teams 频道通知
-
在假条件分支中,添加从共享邮箱发送电子邮件(V2) Office 365 Outlook 操作。
-
在原始邮箱地址字段中,选择输入自定义值,然后添加本章中配置的共享邮箱的电子邮件地址。
-
在收件人字段中,添加来自从简历中提取信息提取候选人信息 AI Builder 操作的电子邮件值动态内容标记。这将选择简历中指定的电子邮件地址。
-
在主题字段中,输入一条消息。
-
在正文区域,输入要发送给候选人的消息,可以使用您认为适合消息的任何动态内容标记(例如,来自提取… AI Builder 操作的First name value标记):

图 9.40 – 自定义电子邮件消息
- 点击保存。
现在是关键时刻!
测试流程
要测试流程,您需要一些东西:
-
几份简历样本(一份应该符合工作描述,另一份则不应符合)
-
用于发送简历的电子邮件账户
要测试流程,请按照以下步骤操作:
-
从流程设计器中,点击测试。
-
选择手动单选按钮,然后点击测试。
-
启动您的电子邮件客户端并向配置的共享邮箱发送带有样本简历的电子邮件。
-
查看流程运行历史,它在流程设计器中更新:

图 9.41 – 查看流程运行历史
- 启动 Microsoft Teams 并导航到工作和候选人团队。检查发布消息操作中指定的频道,以查看简历是如何被评估的:

图 9.42 – 查看 Teams 频道帖子
- 接下来,导航到工作和候选人 SharePoint 网站并选择候选人列表以查看您的简历提交:

图 9.43 – 查看简历提交
恭喜!您已成功验证了流程!
如果流程错误地将简历分类,你可以轻松地返回并调整提示,以提高或降低置信度要求。
进一步探索
这个流程所奠定的基础为工作流程自动化开辟了众多可能性。可能性包括以下内容:
-
分支以允许与同一流程中的其他角色描述进行核对
-
筛选消息主题的条件,以便将其路由到其他流程
-
使用 Cloudmersive 操作进行文档验证,以确保提交的简历可读
-
拒绝非 PDF 附件的条件
-
面试安排
摘要
在本章中,我们介绍了两个强大的 AI Builder 概念:数据提取建模以及使用 GenAI 总结和评估内容。
通过本章获得的能力,你可以将 GenAI 适应到众多商业挑战中。
在下一章中,我们将基于本章的 GenAI 文本摘要能力,制作文档的执行摘要。
第十一章:使用 GPT 制作执行摘要
许多人都需要准备某种类型的提案——无论是响应 RFP、提交工作说明书、向客户提出解决方案,还是展示季度业务报告。执行报告是这些文档的关键特性——将关键点以高级、易于消化的概述形式汇总在一起。
在本章中,我们将探讨如何利用生成式 AI 的力量来推理内容、构建执行摘要,并将其插入文档中。我们将使用一些熟悉的工具(如 Encodian 和 Cloudmersive 连接器)来实现这一点!
设计解决方案
如果你已经完成了第七章中的练习,“使用 Power Automate 构建 PowerPoint 演示文稿”,以及第九章中的练习,“实现 AI 增强的简历筛选器”,你已经熟悉了 Encodian Flowr 和 Cloudmersive 连接器。此解决方案基于这两个连接器,并结合了 OpenAI ChatGPT 的力量。
许可证先决条件
在 Power Platform 中使用 AI 模型和连接器有几个先决条件:
-
Power Automate 高级许可
-
OpenAI 订阅
-
Encodian 免费试用
-
Cloudmersive 免费层账户
如果你还没有启用 Dataverse 和 AI Builder 容量,请参阅第二章,“配置支持 AI 服务的环境”,以及第六章,“使用情感分析处理数据”。
配置解决方案先决条件
在开始工作流配置之前,你需要解决一些先决条件——即获取 OpenAI、Encodian 和 Cloudmersive 的免费、试用或付费订阅,设置模板文档,并确保你有存储完成文档的位置。
让我们快速查看如何准备这些内容。
启用订阅
如果你已经有了这些,那就太好了!如果没有,你可以参考第二章以获取关于 OpenAI 订阅配置的信息,第七章以获取 Encodian 试用,以及第九章以注册免费 Cloudmersive 订阅。
准备文档模板
如果你已经完成了第七章中的练习,你将熟悉图 10.1 中显示的<<[]>>:

图 10.1 – 在文档中放置令牌
在图 10.1 中,<<[ExecutiveSummary]>>令牌代表 Flowr 将插入由 GPT 服务生成的执行摘要内容的位置。
设置云存储提供商
在本章中,我们将使用包含 Office 365 或 Microsoft 365 订阅的 OneDrive for Business 服务。您可以使用其他解决方案(例如 Dropbox 或 Google Drive),但您必须单独配置这些解决方案并使用适当的连接器。
创建流程
在所有先决条件都准备就绪后,是时候开始使用一些自动化工作了!
如果我遇到困难怎么办?
如果您因某些原因遇到障碍(您找不到功能、某个选项没有显示或某些内容不清楚),帮助只需点击一下!您可以从我们的 GitHub 网站下载本章的工件,网址为 github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
我们将从触发器开始。
配置触发器
此流程最适合手动触发,您将提供用作执行摘要基础的文档。
如您所知,GPTs 使用提示来提供关于要执行的任务类型的指令。您可以选择在触发器中提前提供整个提示,或者将提示语言的基础移动到稍后,并允许在触发器中进行自定义或调整。
在此流程中,我们将采用后一种方法。此触发器将使用四个输入变量:
-
您想要包含在摘要中的文档部分列表
-
您想要从摘要中排除的文档部分列表
-
一个可以输入额外指令以定制响应的地方
-
文件上传输入
要配置流程,请按照以下步骤操作:
-
导航到 Power Automate 制作门户(
make.powerautomate.com)并选择创建。 -
在从空白处开始下,选择即时****云流程。
-
在
Generate executive summary下选择手动触发流程触发器。点击创建。 -
选择手动触发流程触发器。在弹出窗口中,选择添加****输入。
-
选择文本:

图 10.2 – 选择文本输入
- 替换
Inclusions。这将是一个文本区域,您可以描述要在流程中包含的文档部分或组件。在文本区域中,您可以替换(scope of work and project deliverables),如图 10.3所示:

图 10.3 – 自定义输入
备注
需要注意的是,您用作建议的文本与默认文本(在没有提供自定义的情况下将自动包含的文本)不同。Power Automate 目前不支持默认文本。您必须在流程运行期间填写此文本。
根据您组织的作业范围如何构建以及您的典型执行摘要看起来如何,您可能需要进一步自定义此设置。
-
点击添加****输入。
-
替换
包含内容。这将是一个文本区域,您可以在此描述文档的章节或组件,以便包含在您的流程中。在文本区域中,您可以替换项目治理、项目管理、绩效期、资源规划、客户资源承诺和定价)。根据您组织的工作范围如何构建以及您的典型执行摘要看起来如何,您可能需要进一步自定义此内容。 -
点击添加输入。
-
替换
附加说明。这将是一个文本区域,您可以在此提供任何其他相关说明,例如可能对特定客户重要的事情。在文本区域中,您可以替换关注与客户的积极成果和合作机会。 -
点击添加输入并选择文件。
-
替换
上传。
配置触发器后,是时候开始处理文档了。
转换文档
由于 GPT 只能处理文本形式的内容(而不是 Word 文档的二进制格式),因此需要将其转换。以下步骤将发送文档到 Cloudmersive 连接器以将其转换为纯文本:
-
触发后,点击+并选择添加一个动作。
-
在
Cloudmersive中,滚动到Cloudmersive 文档转换连接器,并点击查看更多:

图 10.4 – 选择连接器
- 选择将 Word DOCX 文档转换为文本 (txt) 动作,如图图 10.5所示。5*:

图 10.5 – 选择转换动作
- 将 Word DOCX 转换为文档到文本 (txt) 的飞出菜单出现。在要执行操作的输入文件框中,在手动触发一个 流程动作下添加文件内容 contentBytes的动态内容令牌:

图 10.6 – 添加 File Content contentBytes 动态内容令牌
- 在要执行操作的输入文件(文件名)框中,在手动触发一个 流程动作下添加文件内容 name的动态内容令牌。
现在,我们将数据发送到 OpenAI 的 ChatGPT 进行处理!
将内容发送到 GPT
在本节中,我们将配置保存附件所需的步骤,并为提交简历的候选人添加 SharePoint 列表项。我们将使用 HTTP 高级连接器来完成本节。
在我们这样做之前,让我们先探索将被发送到 OpenAI 的 JSON 有效负载。此有效负载包含有关将要使用的模型的信息、提示信息以及将控制模型如何响应的参数:
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You are a system architect collaborating with an account executive on a statement of work for a new customer."
},
{
"role": "user",
"content": "Generate an executive summary for the included content. Focus on the following areas of the document: **Inclusions** Exclude the following sections from the executive summary: **Exclusions** Use the following additional information to write a compelling closing statement: **Additional Instructions** The completed executive summary should be between 225 and 350 words."
}
],
"max_tokens": 5000,
"temperature": 0,
"n": 1,
"stream": false,
"logprobs": null,
"stop": null
}
在审查此代码示例时,有几个关键区域:
-
model:在这个例子中,我们将使用gpt-4。您可以使用其他模型,但 GPT-4 是 OpenAI 目前提供的最先进的模型。 -
messages:此对象定义了两个角色,system 和 user,每个角色都关联一个 content 键/值对。system 角色代表您作为开发者向 GPT 提供的内部指令。相关的内容键是您可以提供系统角色指令的地方。在这种情况下,您指示 GPT 扮演系统架构师。user 角色是请求 GPT 执行任务的个人或服务。其内容键/值对用于提供请求上下文和指令。 -
max_tokens:这是您希望服务消耗的最大标记数。如您从 第三章 的 与 ChatGPT 交谈 中所回忆的那样,标记是 GPT 将请求分解成的内容块(单词或单词的一部分)。每份文档可能有所不同,但 5,000 个标记大约相当于 10-15 页双倍行距的文档。您可以使用 OpenAI 的 Tokenizer (platform.openai.com/tokenizer) 来估计您的源文档包含多少标记:

图 10.7 – 使用 OpenAI Tokenizer
-
temperature:这是一个参数(介于 0 和 1 之间的值),它控制响应中展现的随机性和创造力。接近零的值更确定,而接近 1 的值更具创造性。 -
n:提供多少个完成选项。 -
stream:这允许发送部分消息内容。在这种情况下,我们希望将整个响应体作为一个单一实体发送。
您还会注意到一些被星号包围的内容,例如 包含 和 排除。这些只是您将用动态内容标记替换的占位符。
让我们开始吧!
- 在 将 Word DOCX 文档转换为文本 (txt) 动作之后,在 HTTP 连接器下添加 HTTP 动作:

图 10.8 – 添加 HTTP 动作
-
在
https://api.openai.com/v1/chat/completions这是 OpenAI 服务的聊天完成端点。
-
在 方法 下,选择 POST。
-
在 授权 的 键 字段下。
-
接下来,你需要你的 OpenAI API 密钥。在
Bearer <OpenAI AI key>的Bearer sk-qztnj1CoTtoXFsXXlFYnT3ClbkFJqOOBf7gFcn9ErCKqeYbV的 值 字段下。参见 图 10**.9:

图 10.9 – 配置 HTTP 授权
不,那不是一个真正的密钥,所以不要尝试使用它。它只是看起来像。
-
正文 字段是我们将向 GPT 发送请求的地方。我们将发送的请求将结构化为 JSON 有效负载。您可以复制以下有效负载(从本节开头重复):
{ "model": "gpt-4", "messages": [ { "role": "system", "content": "You are a system architect collaborating with an account executive on a statement of work for a new customer." }, { "role": "user", "content": "Generate an executive summary for the included content. Focus on the following areas of the document: **Inclusions** Exclude the following sections from the executive summary: **Exclusions** Use the following additional information to write a compelling closing statement: **Additional Instructions** The completed executive summary should be between 225 and 350 words." } ], "max_tokens": 5000, "temperature": 0, "n": 1, "stream": false, "logprobs": null, "stop": null } -
选择文本 包含 并将其替换为 包含 动态内容标记,来自 手动触发流程 动作。
-
选择文本排除项并将其替换为来自手动触发一个 流程操作的排除项动态内容令牌。
-
选择文本附加说明并将其替换为附加说明动态内容令牌,来自手动触发流程操作。见图 10**.10:

图 10.10 – 配置 HTTP 操作的正文
-
在HTTP操作之后,添加解析 JSON操作。
-
在内容字段中,选择来自HTTP操作的正文动态内容令牌。
-
在模式文本区域字段中,粘贴以下内容:
{ "type": "object", "properties": { "id": { "type": "string" }, "object": { "type": "string" }, "created": { "type": "integer" }, "model": { "type": "string" }, "choices": { "type": "array", "items": { "type": "object", "properties": { "index": { "type": "integer" }, "message": { "type": "object", "properties": { "role": { "type": "string" }, "content": { "type": "string" } } }, "logprobs": {}, "finish_reason": { "type": "string" } }, "required": [ "index", "message", "logprobs", "finish_reason" ] } }, "usage": { "type": "object", "properties": { "prompt_tokens": { "type": "integer" }, "completion_tokens": { "type": "integer" }, "total_tokens": { "type": "integer" } } }, "system_fingerprint": {} } }模式定义了输出的格式。在 Power Automate 中,它来自直接对 ChatGPT API 运行 HTTP POST 请求的实际输出。有几种方法可以自己完成,例如使用 Postman (
www.postman.com) 运行基本查询,如图图 10**.11所示:

图 10.11 – 通过 Postman 生成模式源文件
生成输出后,您可以在解析 JSON弹出窗口中点击使用示例有效负载生成模式,然后复制/粘贴来自原始 ChatGPT 输出的内容,如图图 10**.12所示:

图 10.12 – 添加 JSON 有效负载以生成模式
在此阶段,您可以点击保存以保存您的进度。接下来,我们将使用此输出并将其插入到 Word 文档中。
填充文档并保存新文件
我们在这个例子中已经接近完成!我们将按照以下步骤处理 Word 文档,然后将输出发送到 OneDrive for Business:
-
在解析 JSON操作之后,添加填充 Word 文档Encodian 操作。
-
在解析 JSON弹出窗口中,在文件内容字段中,在手动触发一个 流程操作下添加文件内容 contentBytes动态内容令牌。
-
在文档数据文本区域字段中,输入以下内容:
{ "ExecutiveSummary" : "**Body Content**" } -
将正文内容替换为来自解析 JSON操作的正文内容动态内容令牌,如图图 10**.13所示:

图 10.13 – 配置填充 Word 文档操作
-
添加创建文件OneDrive for Business 操作。
-
在
concat(utcNow('yyyyMMddHHmm'),'_',triggerBody()?['file']?['name'])。这将通过连接日期戳和文件的原始名称来创建一个文件。 -
在文件内容字段中,在填充 Word 文档操作下添加文件内容动态令牌。见图 10**.14:

图 10.14 – 配置填充 Word 文档操作
- 点击保存。
现在,到了关键时刻!
测试流程
要测试流程,您需要一个结构化的 Word 文档,例如添加了<<[ExecutiveSummary]>>令牌的工作说明书。准备好后,让我们一起来测试这个流程:
-
从流程设计者处,点击测试。
-
选择手动单选按钮,然后点击测试。
-
填写包含内容、排除内容和附加说明(见图 10.15中的屏幕文本)区域。使用样本文本根据您使用的 Word 文档创建自己的包含内容和排除内容:

图 10.15 – 测试流程
-
点击导入并浏览到样本工作说明书。
-
点击运行流程。
-
查看输出步骤以确保一切正常:

图 10.16 – 查看流程运行步骤
-
浏览到 OneDrive for Business,查看根目录中新建的文件。打开它并导航到文档中您放置<<[****ExecutiveSummary]>>令牌的部分。
-
查看插入的内容。根据需要做出任何编辑,以确保内容适合您的用例:

图 10.17 – 查看更新的 Word 文档
恭喜!您已成功验证了流程!
如果流程错误地将简历分类,您可以轻松地返回并调整提示以提高或降低置信度要求。
进一步探索
现在您已成功创建了一份工作说明书的执行摘要,您可以考虑以下想法来扩展它:
-
修改以将输出文件保存到 Teams 网站、Google Drive 或 DropBox 存储位置
-
将其用作模板流程以创建其他标准文档部分
-
构建一个更定制的提示以完成摘要
-
添加更多令牌以进一步定制输出以满足特定客户或业务需求
-
使用 AI Builder 自定义提示操作而不是发送 HTTP 操作到 OpenAI
摘要
在本章中,我们汇集了两个第三方连接器,以帮助操作和增强 Word 文档。我们不是使用本机 AI 构建器组件,而是使用 HTTP 连接器直接将内容发送到 OpenAI ChatGPT 端点。
在下一章中,我们将使用 AI 工具自动识别图片。
第十二章:在 SharePoint 库中使用 AI 标记图像
想象一个场景,你有一些现场工作人员、承包商、员工或其他人在使用一个应用程序拍照并将照片上传到 SharePoint 网站上。这可能出于任何原因——工作人员可能是在拍卖会上捕捉库存、调查设施、记录工作流程或在公司野餐会上拍照。
一旦大量数据进入你的环境,对其进行分类和标记变得越来越困难。为什么不让 AI 尝试一下呢?
在这个解决方案中,我们将展示如何让 AI 做这件事。通过利用 Azure 计算机视觉和 Power Automate,你将能够处理图像(无论是现有的库还是新到达的内容),加速你组织中内容分类的过程。
在我们深入解决方案的核心之前,让我们快速了解一下我们将要使用的技术。
什么是计算机视觉?
Azure 计算机视觉是微软云服务,它使用 AI 算法和深度学习模型来分析和提取图像中的洞察力。计算机视觉可以用于执行多种图像分析和处理任务。Azure 计算机视觉具有多种不同的功能,包括:
- 图像分类:这指的是通过识别内容中的主要对象来整体分类图像。例如,你可能训练一个模型来识别像 图 11.1 这样的图像,并使用“狗”这个词。

图 11.1 – 将图像分类为狗
- 对象检测:与图像分类类似,对象检测用于识别图像中的对象。对象通过使用称为 边界框 的类型边界来指示。对象检测通常可以在单个图像中识别不同类型的对象,如图 图 11.2 所示。

图 11.2 – 在图像中检测对象
- 语义分割:这是对对象分类的另一种看法,语义分割指的是对对象单个像素的分类。这种分类机制可能用于跟踪物品在视频流或捕获的视频文件中移动的情况。

图 11.3 – 查看语义分割图像
- 图像分析:这种检测采用多种技术,包括机器学习模型识别常见特征(边缘、颜色、形状、模式和边界)并应用特定领域的知识来识别和描述对象。

图 11.4 – 使用图像分析处理图像
- 人脸检测:一种特殊对象检测形式,用于在图像中识别人脸。分类和其他技术可以用来提供高级识别(如识别个人)。

图 11.5 – 图像中的面部识别
- 光学字符识别(OCR):另一种特殊对象检测形式,OCR 识别图像中的字母和单词。

图 11.6 – 图像中检测到的文本
在每个示例中,计算机视觉能够处理图片并提取单个特征和对象,使它们可以通过其他计算机化系统访问。
设计解决方案
如简介所暗示,我们将使用 Azure 计算机视觉服务(最初是 Azure 认知服务的一部分,现在重新命名为 Azure AI 服务)。
许可先决条件
在 Microsoft Power Platform 中使用 AI 模型和连接器有几个先决条件:
-
Power Automate 的高级许可
-
Azure 订阅
-
SharePoint Online 订阅
一旦这些设置就绪,就是时候设置计算机视觉了!
配置解决方案先决条件
在开始工作流配置之前,你需要先设置一些事情——即,一个计算机视觉服务和 SharePoint 网站。
创建计算机视觉服务
按照以下步骤在 Azure 订阅中创建一个计算机视觉服务:
-
导航到 Azure 门户(
portal.azure.com)并登录。 -
在
计算机视觉下选择计算机视觉。 -
在计算机视觉页面,点击创建。

图 11.7 – 创建计算机视觉服务
-
选择一个订阅、资源组、区域,输入一个名称(必须在整个 Azure 空间中唯一),并选择一个定价层。点击审查+ 创建。
-
在确认屏幕上,点击创建。
-
在部署概览页面,点击转到资源。

图 11.8 – 审查概览页面
-
在资源管理下,选择密钥和端点。
-
点击显示密钥。复制一个 API 密钥和端点,并保存以备后用。

图 11.9 – 查看密钥和端点页面
接下来,我们将设置一个 SharePoint 库来存储图像。
配置 SharePoint 库
虽然你可以创建一个标准的 SharePoint 库,但创建一个 Microsoft Teams 团队并在团队附加的 SharePoint 库上构建(从项目角度和更广泛的功能角度来看)都有好处。
- 启动 Microsoft Teams(或导航到
teams.microsoft.com)并创建一个团队(团队 | + | 创建团队 | 从头开始创建)。

图 11.10 – 创建团队
- 团队创建后,导航到 通用 通道,选择 文件 选项卡,然后选择 在 SharePoint 中打开 以导航到团队的连接 SharePoint 网站。

图 11.11 – 打开团队的连接 SharePoint 网站
- 从菜单中选择 主页,然后点击 新建 | 文档库。

图 11.12 – 创建新的文档库
- 从可用选项列表中,选择 媒体库,如图 图 11.13* 所示。

图 11.13 – 创建媒体库
-
点击 使用模板。
-
点击 创建。
-
选择 不添加这些功能 复选框,点击 下一步,然后点击 明白了。
-
在媒体库内部,选择齿轮图标以展开 设置 飞出菜单。选择 库设置。

图 11.14 – 展开设置飞出菜单
-
在 库设置 飞出菜单中,选择 更多库设置。
-
在 列 下,选择 从现有网站列添加,如图 图 11.15* 所示:

图 11.15 – 添加列
- 在 从网站列添加列 页面上,从 可用网站列 列表中选择 关键词 并点击 添加。此列将保存计算机视觉在处理图像时生成的关键词。

图 11.16 – 添加关键词列
-
完成后点击 确定。
-
点击网站导航栏中的 媒体库 返回到媒体库页面。
-
选择 视图 下拉菜单(默认设置为 所有媒体),然后选择 编辑当前视图。

图 11.17 – 编辑当前视图
-
在 列 下,向下滚动并选择 描述。
-
将页面滚动到最底部并点击 确定 保存更改。
根据您的屏幕大小和浏览器缩放,您可能需要向右滚动才能看到额外的列。到此为止,您已经准备好了一个用于图像的库!
创建流程
所有先决条件都已准备就绪,现在是时候开始使用一些自动化工作了!我们将从触发器开始。
配置触发器
此流程与自动触发器配合使用最佳,其中它可以处理新图像,当它们被插入到库中时。
要配置流程,请按照以下步骤操作:
-
导航到 Power Automate 制作门户(
make.powerautomate.com)并选择创建。 -
在从空白开始下,选择自动化****云流程。
-
在
更新图像描述操作中,选择当文件创建时(仅属性)SharePoint 触发器。 -
点击创建。
-
在当文件创建时(仅属性)弹出窗口中,在站点地址下,选择包含您在先决条件部分创建的媒体文档库的 SharePoint 站点。
-
在库名称下,选择在先决条件部分配置的库。

图 11.18 – 配置触发器
在当文件创建时(仅属性)弹出窗口中,选择设置选项卡。
在@or(endsWith(triggerOutputs()?['body/Name'],'.jpg'),endsWith(triggerOutputs()?['body/Name'],'.jpeg'),endsWith(triggerOutputs()?['body/Name'],'.bmp'),endsWith(triggerOutputs()?['body/Name'],'.png'),endsWith(triggerOutputs()?['body/Name'],'.gif'))
这将创建一个触发条件,仅处理以 .jpg、.jpeg、.bmp、.png 或 .gif 结尾的文件扩展名。见图 11.19。

图 11.19 – 配置触发条件
进一步阅读
您可以在此处了解用于创建条件和表达式的工作流定义语言:learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference。
-
按添加操作并选择初始化变量。
-
通过在变量操作名称后追加
– 描述来更新变量操作的名称。 -
在
描述。 -
在类型字段中,选择字符串。见图 11.20。

图 11.20 – 添加描述变量操作
-
在初始化变量 - 描述操作之后,添加另一个初始化****变量操作。
-
通过在变量操作名称后追加
– 关键字来更新变量操作的名称。 -
在
关键字。 -
在类型字段中,选择字符串。

图 11.21 – 添加关键字变量操作
配置好触发器和变量后,是时候开始使用 AI 进行工作了!
使用计算机视觉
在本节中,我们将导入已上传文件的內容,并将其发送到之前配置的 Azure AI 服务。让我们开始吧!
- 在初始化变量 - 关键字操作之后,添加获取文件内容SharePoint 操作。

图 11.22 – 添加使用路径获取文件内容操作
-
在获取文件内容使用路径弹出菜单中,在站点地址下,选择此练习的站点。
-
在文件标识符下,选择完整路径动态内容令牌,位于当文件创建时(仅属性)操作下。

图 11.23 – 配置获取文件内容操作
- 在获取文件内容使用路径操作之后,添加描述图像计算机视觉 API 操作。见图 11.24*。

图 11.24 – 添加描述图像操作
-
在创建连接弹出菜单中,在连接名称框中输入一个名称。
-
将身份验证类型设置为API 密钥。
-
在账户密钥字段中,输入在完成先决条件时保存的计算机视觉 API 密钥。
-
在站点 URL字段中,输入在完成先决条件时保存的端点 URL。

图 11.25 – 配置 API 连接
-
点击创建新。
-
在描述图像弹出菜单中,在图像内容下,选择图像源。
-
在图像源下,选择文件内容动态内容令牌,位于获取文件内容使用 路径操作下。
-
点击保存。
到目前为止,我们可以运行一个测试来确定我们需要处理哪种类型的输出。你需要一个或两个可以上传到媒体库的文件。
按照以下步骤运行快速测试以检查描述 图像操作的输出。
-
在流程设计器内部,点击测试。
-
选择手动单选按钮。
-
在另一个浏览器标签或窗口中,导航到包含媒体库的 SharePoint Online 站点。
-
通过拖放或使用上传按钮将你的图像添加到库中。

图 11.26 – 上传测试图像
-
在流程完成之后,切换回具有流程设计器的浏览器标签或窗口,并查看运行历史记录。
-
完成后,选择描述图像内容操作,然后在弹出菜单中滚动到输出部分。检查正文区域。

图 11.27 – 检查正文区域
正文输出是一个结构化的 JSON 对象,包含一些值得注意的架构项——tags对象将被添加到媒体库的关键词列中,而字幕列中的值将被添加到描述中。
-
在流程设计器中点击编辑以返回编辑流程。
-
添加设置 变量操作。
-
将
– 描述重命名为标题。 -
在名称下,选择描述。
-
在值字段中,添加来自描述图像内容操作的字幕文本动态内容令牌,如图图 11.27*所示。

图 11.28 – 更新描述变量
-
添加另一个设置****变量操作。
-
将
– Keywords重命名为标题。 -
在值字段中,添加一个表达式。将以下表达式粘贴到其中:
join(outputs('Describe_Image_Content')?['body/description/tags'],',')此表达式将描述图像操作输出的所有单个关键词连接起来,并用逗号分隔。
-
点击保存。
接下来,我们将这些更新发送回上传的图像文件。
更新库中的图像详细信息
现在您有了包含内容更新的变量,是时候将它们应用到库中的原始图像上了。
-
在设置变量 – 关键词操作之后,添加更新文件属性SharePoint 操作。
-
在更新文件属性弹出窗口中,在网站地址下选择包含媒体库的网站地址。
-
在库名称下,选择媒体库。
-
在ID下,从当文件创建时(仅属性)触发操作中选择ID动态内容令牌。
-
展开高级参数下拉菜单并选择关键词和描述复选框。
-
在关键词字段中,在变量部分下添加关键词动态内容令牌。
-
在描述字段中,在变量部分下添加描述动态内容令牌。见图 11.29。

图 11.29 – 更新文件属性
- 点击保存。
现在,到了关键时刻!
测试流程
现在流程已完全配置,让我们试试看!
-
点击测试图标。
-
如果您之前已经跟随操作并测试了流程,可以选中自动单选按钮,然后选择使用最近使用的触发器,然后选择流程的先前运行。如果没有,选择手动。做出选择后,点击测试。
-
如有必要,上传文件。
-
检查流程运行历史记录以确保流程已成功完成。如果没有,根据错误进行调整并重试。

图 11.30 – 查看流程运行历史
-
接下来,导航到包含媒体库的 SharePoint 网站。
-
如图 11.31所示,查看关键词和描述列中的内容。

图 11.31 – 查看更新的字段
- 为了验证内容确实可搜索,您可以在 SharePoint 中点击主页图标进入主 SharePoint 登录页面。在关键词列中输入一个词或图像描述的一部分。您应该从您的媒体库中找到该图像的搜索结果。

图 11.32 – 查看搜索输出
恭喜!您已成功验证流程!
进一步探索
现在你已经掌握了基础知识,思考一下在其他章节中学到的内容,以及它们如何有助于扩展这个流程:
-
在团队频道中发布通知,说明图片已被分类
-
生成媒体库中添加的图片描述的摘要
探索如何进一步增强你组织中其他的工作流程。
摘要
在本章中,我们介绍了 Azure AI 服务计算机视觉 API。此 API 允许你执行图像内容识别和标记,并提供包含描述(或标题)以及关键词(标签)的文本输出。
在下一章中,我们将利用生成式 AI 的力量来创建一个能够回答问题的机器人!
第十三章:创建基于生成式 AI 的机器人
到目前为止,我们做的是在人类交互方面相当有限的事情——你创建一个文件,启动一个流程,发送一封电子邮件,然后将它交给一个应用程序或流程,并等待结果。这可以很棒。
然而,在与人打交道时,有时需要更多——比如一定程度的响应和跟进,有人(或某物)能够理解他们的问题——即使这些问题表述得并不完全正确。这就是生成式、对话式 AI 机器人可以发挥作用的地方。
在许多大型公司中,人力资源部门是其中最繁忙的部门之一——不断有人试图弄清楚最新的福利表格在哪里,休假累积政策是什么,或者在哪里申请公司信用卡。虽然自网站创建以来,常见问题解答(FAQ)网站一直是自助服务世界的基石,但它们的管理、更新和搜索可能会变得繁琐。它们依赖于人们使用正确的关键词或短语来找到答案,如果你不知道某个技术的术语,这可能会是一种令人沮丧的经历。在这样的时期,直接拿起电话找人询问会更容易一些。
如果有更好的方法呢?如果你能构建一个能够以某种方式理解这些问题背后的意图的应用程序呢?
如果我告诉你,存在一种更智能的方法,而且这种方法存在于 Microsoft 365 中呢?
了解解决方案
在这个解决方案中,我们将探索新的 Copilot Studio,这是协同助手的升级版——之前被称为 Power Virtual Agents。这一套开发工具使用引导式、无代码的图形界面,使用户能够构建强大的聊天机器人。
这些聊天机器人用于自动化对话,与客户或员工互动,无需直接人工干预——非常适合我们的人力资源场景。
在我们深入探讨之前,让我们从高层次上谈谈协同助手的特性和功能:
-
跨 Microsoft 365 生态系统的集成:聊天机器人可以集成到各种 Microsoft 产品和服务(如 Dynamics 365、Power BI 和 Azure 服务)中,以及通过 API 与外部系统集成。这种集成使得聊天机器人能够在对话流程中执行复杂操作,并从其他系统中检索数据。
-
使用 AI 和自然语言处理:协同助手使用 Microsoft 的 AI 和自然语言处理能力来理解和解释用户输入,使聊天机器人能够以更自然、更有效的方式响应查询。
-
可定制的流程:协同助手作者可以定义特定的流程或主题,这些流程或主题指导聊天机器人的响应和行动,基于对话上下文。
让我们来看看与协同助手一起工作的基础要素。
主题究竟是什么?
主题本质上是由聊天机器人或对话机器人可以采取的对话路径。它们是聊天机器人的最基本构建块。作者定义聊天机器人可以回答的主题,填充将导致机器人采取特定路径的问题或关键词(称为触发器),并以预定义的内容、答案或工作流程结束。
例如,想象你创建了一个旨在回答有关费用报告问题的聊天机器人。你考虑用户可能提出的常见请求,例如我应该在哪儿提交我的费用报告?,我可以报销餐费吗?,或我的费用报告多久能支付?你可以为这些问题创建一个主题,并在触发器中填充诸如费用,提交费用报告,或报销计划之类的短语。当用户输入这些单词或短语(或类似的内容)时,将启动适当的对话节点。
在这条路径上,你可能配置机器人提出细化问题。用户的答案可以保存到变量中,然后用于检查条件(想想这本书前面提到的 Power Automate 流程),这可以进一步将对话引导到已决定的路径。最终,你可能显示一些非常简单的内容,比如网页链接或转到另一个主题。你也可以返回更复杂的内容,比如从数据库检索记录或转交给代理人的交互。
Copilot Studio 还提供了各种系统主题。这些内置主题负责你副驾驶的许多基础部分,例如开始和结束对话或错误处理。你不能删除系统主题,尽管你可以禁用它们。图 12.1展示了内置的系统主题。

图 12.1 – 查看系统主题
什么是生成式回答?
我们迄今为止讨论的主题是预定义的对话路径——要么是你创建的精选主题,要么是在你的副驾驶首次创建时添加的系统定义主题。生成式回答略有不同——而不是设计路径,它们允许你提供信息(文档、网站或其他数据源),生成式 AI 可以据此进行推理并尝试返回答案。即使没有创建特定主题,生成式回答也会返回信息。
在上一节的费用报告示例的基础上进行扩展,假设用户正在寻找有关如何分类费用的信息。他们输入了expense关键词,但主题将他们引导到费用报告应用程序。
在这种情况下,“费用”关键词触发了关于提交费用报告的主题,但它并不符合他们的意图。然而,你可能有一个表格嵌入在文档中,解释了合格的费用项目和类别。协同助手允许你通过称为检索增强生成(RAG)的过程利用这种类型的现有文档知识。通过更新协同助手的配置以包含数据源,你可以允许协同助手“阅读”内容并根据其理解动态回答问题。
通过利用精心挑选的主题和生成式 AI,协同助手可以提供卓越的服务体验,并帮助客户和员工找到他们需要的答案。
设计解决方案
在开发协同助手时,必须回答的第一个问题是,“这个协同助手的目的是什么?”在这种情况下,我们将构建一个基于预定义主题和组织内容(RAG)的人力资源问题解答协同助手。内容将来源于一组人力资源政策文件样本,包括组织的员工手册、休假政策、互联网使用政策、手机政策以及在家工作政策。
在设计聊天机器人时,你需要考虑以下问题:
-
应包含哪些主题?
-
主题的可能场景有哪些?这些场景属于哪些类别,例如信息性、任务完成或故障排除?
-
作为用户,你可以说出哪些触发词、短语或问题来激活特定主题?
-
你期望或认为哪些信息或结果是有帮助的?
绘制对话节点树图可能很有帮助,组织主题,并优化如何最好地引导用户问题。参见图 12.2,了解如何绘制主题的示例。

图 12.2 – 主题流程示例
你可以为每个主题区域创建一个图表,不断优化,直到你确定了帮助你的聊天机器人用户获取所需信息的最有效路径。你还需要注意结果,例如导航到特定的文件或网站,提供明确的答案,以及确定你将作为工作流程一部分使用的数据源。
备注
虽然确实可以将协作伙伴配置为直接从 SharePoint 网站或其他受保护内容中提取数据,但这个过程要复杂得多(包括 Entra ID 应用程序注册和 API 权限委派),并且这比我们在本书中追求的解决方案要复杂得多。如果您想了解更多关于扩展到 SharePoint Online 和 OneDrive for Business 中存储的内容的信息,请访问 learn.microsoft.com/en-us/microsoft-copilot-studio/nlu-generative-answers-sharepoint-onedrive。
接下来,我们将探讨从许可角度出发,启用这些功能所需具备的条件。
许可前提条件
Copilot Studio 和协作伙伴需要许可(类似于 Microsoft 365 套件中的其他功能)。在本章中,我们将重点关注内部协作伙伴及其要求。为了完成这里提供的示例,您需要一个 Copilot Studio 许可证(无论是 Copilot Studio 租户订阅还是 Copilot for Microsoft 365)。
许可指南
有关精确的 Copilot 许可场景的更多信息,请访问 go.microsoft.com/fwlink/?linkid=2085130。
此解决方案还将使用 ChatGPT 生成某些类型的答案。如果您为本书中其他章节配置了 OpenAI 订阅,您可以继续使用该订阅。
准备解决方案前提条件
在我们开始使用 Copilot Studio 之前,您需要收集可用于生成式 AI 答案的文档。
在本章中,我们将使用一组示例组织政策文档,包括涵盖远程办公、骚扰和公司信用卡政策的内 容。您可以收集自己的或使用这里提供的集合:github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution。
创建协作伙伴
在收集到源数据后,是时候开始使用 Copilot Studio 进行工作了!
要创建您的协作伙伴,请按照以下步骤操作。
-
导航到 Copilot Studio (
copilotstudio.microsoft.com)。 -
点击“创建自定义协作伙伴”或“新建协作伙伴”以开始操作。

图 12.3 – 启动 Copilot Studio
- 在“创建协作伙伴”页面,输入协作伙伴名称并选择一种语言。点击“创建”。

图 12.4 – 初始化协作伙伴
- 请等待 Copilot Studio 设置您的协作伙伴。
接下来,是时候用一些主题更新您的新协作伙伴了!
定制协作伙伴
首先,我们将开始配置我们的精选内容和对话路径。如您之前所回忆的,这种类型的配置,称为主题,当您对用户可能提出的问题以及最佳匹配内容的位置有一个想法时使用。您还可以使用主题将您的共乘者与其他 Power Platform 组件,如流程,集成在一起。
创建一个使用 ChatGPT 的新主题
创建新主题的过程与创建 Power Automate 流程非常相似。像流程一样,主题有触发器和操作,可以利用条件来确定要采取的路径。
在这个例子中,我们将创建一个简单的主题:
- 在主题页面上,点击创建。指向主题,然后选择使用共乘者创建描述。

图 12.5 – 创建新主题
-
在“假日”。
-
在“告诉用户今年观察到的假日”和“列出”公司支付的假日”。

图 12.6 – 向共乘者提供说明
-
点击创建。
-
查看生成的触发器。如果您有其他想法(或想删除一些生成的触发短语),您可以在短语卡片中点击编辑来配置其他将激活此主题的单词或短语。

图 12.7 – 查看触发短语
- 您可以看到 Copilot Studio 已填充了一个消息卡片,其中包含机器人将返回的响应。虽然这可能很有帮助,但它排除了我们观察到的许多假日。请继续删除任何已配置的消息卡片,方法是点击卡片右上角的省略号并选择删除,如图 图 12.8 所示:

图 12.8 – 删除卡片
- 在触发卡下点击+来添加一个节点。选择提问。

图 12.9 – 添加问题节点
- 我们希望允许用户提前规划他们的假期日程,因此我们需要一个选项来查看他们想要查看的年份的假日日程。

图 12.10 – 添加问题文本
- 在识别框中,选择用户的整个响应。这将允许虚拟代理捕获用户输入的文本响应。

图 12.11 – 更新识别变量类型
- 在年份(见图 图 12.12)下。

图 12.12 – 更新变量名
- 在问题卡片之后,选择+并添加一个节点。然后,选择创建流程。

图 12.13 – 添加流程操作
- 等待 Power Automate 的新浏览器窗口打开。片刻之后,它应该会显示两个卡片 – 当 Power Virtual Agents 调用一个流程 和 将返回值返回给 Power Virtual Agents,如图 图 12**.14 所示:

图 12.14 – 查看带有 PVA 动作的 Power Automate 画布
- 选择
Prompt,然后将Prompt文本放在提示框中。

图 12.15 – 添加文本输入
- 添加一个
ChatCompletion并将其类型设置为 字符串(见 图 12**.16)。

图 12.16 – 初始化变量
-
添加一个 HTTP 动作。
-
在 URI 字段中,输入
api.openai.com/v1/chat/completions。 -
在 方法 下拉菜单中,选择 POST。
-
添加一个名为
Authorization的头,其值为Bearer <OpenAI key>(见 图 12**.17)。

图 12.17 – 配置 HTTP 动作
-
在 正文 字段中输入以下文本。您可以根据需要替换假期:
{ "model": "gpt-4", "messages": [ { "role": "system", "content": "You are a helpful HR assistant." }, { "role": "user", "content": "Generate a list of the following holidays for the year **PROMPT**. The output format should be a bulleted list of the name of the holiday, followed by the day of the week, month, day, and year. For example, \n New Year's Day: Wednesday, January 1, 2024\n. Generate the list using the following holidays: New Year's Day, Martin Luther King Jr Day, Memorial Day, Independence Day, Labor Day, Veterans Day, Thanksgiving Day, Day after Thanksgiving Day, Christmas Eve, Christmas Day, New Year's Eve"" } ], "max_tokens": 5000, "temperature": 0, "n": 1, "stream": false, "logprobs": null, "stop": null } -
将
**PROMPT**文本替换为 当 Power Virtual Agents 调用一个 流程 触发器中的 提示 动态内容令牌。

图 12.18 – 使用提示动态内容令牌更新正文
-
在 HTTP 动作之后,添加一个 解析 JSON 动作。
-
在 内容 字段中,选择 HTTP 动作的 正文 动态内容令牌。
-
在 模式 文本区域中,粘贴以下内容:
{ "type": "object", "properties": { "id": { "type": "string" }, "object": { "type": "string" }, "created": { "type": "integer" }, "model": { "type": "string" }, "choices": { "type": "array", "items": { "type": "object", "properties": { "index": { "type": "integer" }, "message": { "type": "object", "properties": { "role": { "type": "string" }, "content": { "type": "string" } } }, "logprobs": {}, "finish_reason": { "type": "string" } }, "required": [ "index", "message", "logprobs", "finish_reason" ] } }, "usage": { "type": "object", "properties": { "prompt_tokens": { "type": "integer" }, "completion_tokens": { "type": "integer" }, "total_tokens": { "type": "integer" } } }, "system_fingerprint": {} } }如果这看起来很熟悉,那应该是。这是当你从 OpenAI 的 ChatGPT 完成端点的 API 调用中粘贴文本时生成的模式。您可以通过创建手动流程、配置 HTTP 动作,然后发送聊天完成请求(步骤 15 到 20)来自己生成它。如您所记得,该模式定义了 JSON 输出对象的格式。
查看 图 12**.19 以了解配置的模式看起来像什么。

图 12.19 – 配置解析 JSON 动作
-
在 解析 JSON 动作之后,添加一个 设置 变量 动作。
-
在 设置变量 动作的 名称 下拉菜单中,选择您之前创建的 ChatCompletion 变量。
-
在 值 字段中,选择 解析 JSON 动作的 正文内容 动态内容令牌,如图 图 12**.20 所示:

图 12.20 – 配置设置变量动作
-
选择 将返回值返回给 Power Virtual Agents 动作。
-
点击 添加输出 并选择 文本 作为类型。
-
将输出名称设置为
Completion。 -
将输出的值设置为 ChatCompletion 变量的动态内容令牌。

图 12.21 – 配置返回值
-
如果需要,将流程重命名为
假日完成(或类似名称),以便在查看您的流程时能够识别它。 -
点击 保存。
-
返回到已打开 Copilot Studio 的浏览器标签页。可能会要求您刷新它。
-
在问题卡片后,点击 + 再次调用动作。这次,应该会显示 假日完成 流程供您选择,如图 图 12.22 所示:

图 12.22 – 添加假日完成动作
- 使用您在 步骤 10 中设置的 提示 变量(年份)更新动作。这将配置 Copilot 发送 年份 变量,该变量将在 假日完成 流程中用作输入。

图 12.23 – 设置要发送到流程的变量
- 在动作完成后,点击 + 并添加 发送一条 消息 卡片。

图 12.24 – 添加发送消息卡片
- 使用文本自定义消息卡片。您可以选择 {x} 图标来插入您在此节点中使用的变量。例如,添加 年份 变量将显示用户输入的年份,而输入 完成 变量将插入 ChatGPT 返回的值。

图 12.25 – 配置消息卡片
- 在消息卡片后添加一个节点,指向 主题管理,然后选择 结束对话。

图 12.26 – 添加结束对话节点
- 点击 保存。
让我们继续前进,继续自定义 Copilot。
禁用模板主题
每个 Copilot 都带有一些基本主题模板。在使您的 Copilot 公开之前,您应该禁用未使用的或模板主题,以确保您的 Copilot 如预期那样表现,并且只返回相关内容。
要禁用主题,请按照以下步骤操作:
-
在 Copilot Studio 中,选择 主题。
-
将鼠标悬停在 第一部分(一个示例主题)上以显示 更多 选项 省略号。

图 12.27 – 探索主题
- 点击省略号以展开 更多选项 面板,然后选择要禁用主题的 状态 切换或选择要完全删除主题的 删除 选项。如果删除主题,您将收到确认提示。

图 12.28 – 禁用和删除主题
- 对 第二部分 和 第三部分 主题重复此操作。
现在,您的机器人将只响应适当的主题。
为生成式 AI 添加内容
在这一点上,我们将添加我们的组织内容,以增强我们的机器人回答问题的能力。
生成式 AI 有三个主要的内容来源:
-
公共网站
-
存储在 Dataverse 中的文件
-
存储在 OneDrive for Business 和 SharePoint Online 中的文件
来自公共网站和存储在 Dataverse 中的内容都非常容易配置和集成。存储在 OneDrive for Business 和 SharePoint Online 中的文件需要从认证方面进行大量配置,更多地属于代码化开发类别。
在此示例中,我们将添加我们的库存文件。
在线内容
对于用于开发此解决方案的示例在线内容,请参阅位于 github.com/PacktPublishing/Power-Platform-and-the-AI-Revolution 的第十二章 文件。
要开始配置生成式主题,请按照以下步骤操作:
-
导航到 Copilot Studio (
copilotstudio.microsoft.com) 并打开您新创建的 Copilot。 -
在 Copilot 的概览页面,选择添加文件。

图 12.29 – 测试生成式 AI 响应
- 在生成式 AI页面,您可以将策略文档文件拖动到上传文档区域,或者选择点击浏览链接导航到包含策略文档文件的源文件夹。

图 12.30 – 配置生成式 AI 源
- 在您将文件上传到 Dataverse 后,Copilot Studio 将启动索引过程。在索引过程完成后,您将能够就这些策略文档中的内容提问!

图 12.31 – 索引策略文档
- 在内容被索引后,向下滚动到页面底部。仅上传内容本身并不能启用生成式 AI 功能,因此我们还需要这样做。启用使用生成式答案增强对话覆盖的滑块切换。

图 12.32 – 启用生成式答案功能
- 点击面板顶部的保存图标。状态栏应更新,指示 Copilot Studio 正在启用生成式答案,如图 图 12**.33 所示:

图 12.33 – 保存更改
- 要验证其已准备好使用,请返回到主题 > 系统并查找对话增强系统主题。

图 12.34 – 验证已创建对话增强主题
接下来,我们将测试我们的副驾驶!
测试副驾驶
在本节中,我们将测试我们的两个副驾驶配置 – 基于 ChatGPT 的 假期 主题和生成答案。
假期主题
首先,我们将测试我们创建的 假期 主题:
-
点击导航栏中的 测试副驾驶 按钮以打开 测试副驾驶 聊天弹出窗口。
-
一旦弹出窗口出现,输入一个触发短语以启动 假期 主题:

图 12.35 – 测试副驾驶
- 检查输出。如果您成功完成所有操作,您的机器人应该会响应它从 ChatGPT 获取的输出!

图 12.36 – 检查 ChatGPT 的数据
这真是太棒了!
接下来,让我们问一个问题,这个问题只能通过生成答案增强来回答。
生成答案
为了查看生成答案学到了什么信息,尝试向您的新副驾驶问一个问题,您可以从上传的文档中获取这个问题:
- 在聊天区域,向您的副驾驶提问。在这个例子中,您可能会问一些像 什么是 歧视政策? 的问题。

图 12.37 – 向副驾驶请求基于生成答案的响应
- 点击引用链接以调出上传的政策文件。

图 12.38 – 检查副驾驶答案的原始材料
恭喜!您已经构建了一个包含两种不同类型人工智能增强内容的副驾驶!
进一步探索
这只是触及了副驾驶能为您的组织做什么的表面。您可以构建一个巨大的副驾驶来处理大量数据,或者几个更小、更具体的副驾驶,用于帮助用户根据组织知识提供答案。
你有什么想法可以扩展这个副驾驶?考虑使用条件来导航到新的对话节点和主题,例如以下内容:
-
创建一个关于企业信用卡的主题,并提供多项选择以导航到卡片申请应用或费用报告网站。
-
在精心策划的主题末尾集成一个问题,以了解答案是否有用。如果不是,链接到 对话增强 主题,让用户请求生成答案以获取更多详细信息。
摘要
在本章中,我们探讨了将生成人工智能集成到副驾驶(以前称为 Power Virtual Agents)的不同方法。您能够通过专门定制的提示向 ChatGPT 发送请求,以获取公司假期的答案,而 RAG 允许您根据您上传到 Dataverse 的组织内容回答问题。
这些想法中的每一个都可以扩展,以创建更多功能性的合作者(copilots)。
在下一章中,我们将使这个合作者(copilot)可供人们使用!
第十四章:发布基于生成式 AI 的机器人
在上一章中,您能够构建一个聊天机器人(或在新术语中称为 copilot),该机器人利用了两个不同的生成式 AI 功能——将数据发送到 ChatGPT 进行评估,以及在 Dataverse 中加载文档以进行生成式答案推理。
在本章的最后,我们将介绍发布聊天机器人的必要步骤,使其可供人们提问。
不再拖延,让我们开始吧!
在 Teams 上发布机器人
发布机器人是经历一系列步骤使其可供用户使用的过程。微软使用“频道”一词来描述机器人将发布的服务的、应用或目的地。
根据您创建的机器人类型,您可能希望将其发布到 Microsoft Teams、公共网站、Facebook 或其他服务。将机器人发布到不同位置的能力将取决于其身份验证设置。
在本例中,我们将使机器人可供 Microsoft Teams 用户使用。默认情况下,您的机器人已配置为 Teams 和 Power Apps 身份验证,因此从这里开始是有意义的。

图 13.1 – 查看机器人的身份验证配置
发布机器人
要将机器人发布到 Teams,您可以简单地遵循以下步骤:
-
导航到 Copilot Studio (
copilotstudio.microsoft.com) 并选择您的机器人。 -
在导航菜单中,展开 设置 并选择 频道。

图 13.2 – 查看频道页面
-
选择 Microsoft Teams。
-
在 Microsoft Teams 快捷菜单中,在页面底部点击 打开 Teams。

图 13.3 – 启用 Teams 的 Copilot
- 确认它已被启用。

图 13.4 – 确认已启用 Teams 集成
如果需要,您可以点击 编辑详情 来更改机器人的显示特性,包括图标、图标颜色、描述以及此机器人是否可以添加到团队(或者它是否只是沿着左侧轨道的机器人)。完成设置更新后,点击 保存。

图 13.5 – 配置额外的机器人设置
-
选择 可用性选项。
-
在 在 Teams 应用商店中显示 下,您可以选择 显示给我的队友和共享用户 以使其对您的同事可用,或者您可以点击 显示给我的组织中的所有人。选择 显示给我的组织中的所有人 选项将在 Teams 管理中心生成一个自定义应用请求(需要管理员批准)。

图 13.6 – 分享机器人
-
点击向我组织中的所有人展示。然后,在下一页上,点击提交给管理员 审批按钮。
-
在导航菜单中选择发布。
-
如果您的机器人没有自动发布,请点击发布。

图 13.7 – 开始发布过程
- 当提示确认时,点击发布。

图 13.8 – 确认发布操作
接下来,我们将查看我们的机器人在团队中的外观。
测试机器人
在本节中,您将了解您的机器人在团队中的工作方式。按照以下步骤操作:
- 从通道 > Microsoft Teams 快捷菜单中选择打开机器人。

图 13.9 – 在团队中打开机器人
-
您可以启动 Microsoft Teams 的桌面版或网页版。
-
一旦团队启动,您应该会看到您的聊天机器人。点击添加。这将把您的应用安装到团队的左侧轨道中。

图 13.10 – 添加您的聊天机器人
- 您可以像之前测试时一样向它提问。

图 13.11 – 向团队机器人提问
现在您已经测试过了,是时候批准它并使其在整个组织中可用!
批准机器人
批准机器人是一个相对简单的练习,尽管您需要 Microsoft Teams 的管理权限。您可以通过以下快速流程批准机器人:
-
导航到 Microsoft Teams 管理中心(
admin.teams.microsoft.com)。 -
在导航菜单中,展开团队应用并选择管理应用。

图 13.12 – 管理团队应用商店
注意,有一个自定义应用正在等待审批。
- 在按名称搜索框中,开始输入您机器人的名称。注意,您的机器人应用的状态为阻止,如图图 13.13 所示。

图 13.13 – 查看机器人应用的状况
-
点击应用的名称。
-
点击发布以使应用在团队应用商店中可用。

图 13.14 – 发布机器人应用
- 当提示确认时,点击发布。
您的 Microsoft 365 组织中的其他用户现在可以前往团队应用商店查找机器人!

图 13.15 – 在团队应用商店中定位机器人
接下来,我们将探讨将机器人发布到其他渠道,例如公共网站。
将机器人发布到网站
大多数情况下,您会创建针对内部或外部用户的机器人——因为这两类用户有不同的需求。
在本节中,我们将切换我们刚刚构建的机器人的身份验证方法,以便它可以在公共频道(如网站或 Facebook)上使用。在现实世界中,您可能会为不同的场景构建不同的机器人。
没有网站?没问题
如果您没有开发网站可以工作——这没问题!您可以去 www.wordpress.com 并注册一个免费托管网站。在这个例子中,我们将使用 WordPress 网站。
要将机器人发布到网站,请按照以下步骤操作:
-
导航到 Copilot Studio (
copilotstudio.microsoft.com) 并选择您的机器人。 -
展开设置并选择 安全。
-
在 安全 页面上,选择 身份验证。

图 13.16 – 更新机器人的安全设置
- 在 身份验证 快捷菜单中,选择 无身份验证 并点击 保存。

图 13.17 – 选择无身份验证
- 查看保存此配置?对话框并点击 保存。

图 13.18 – 查看保存对话框
- 在 设置 下,点击 频道。注意,其他频道现在已解锁。

图 13.19 – 查看可用频道
-
选择 自定义 网站 频道。
-
在 自定义网站 快捷菜单中,您应该看到一个标记为 默认嵌入代码 的部分。我们将在我们的网站上使用此代码。

图 13.20 – 查看自定义网站代码
-
在新浏览器窗口中,导航到您的网站管理界面。
-
创建或编辑一个页面。
-
接下来,您需要进入您网站的 HTML 或文本视图。如果您使用的是 WordPress,可以通过点击编辑窗口的 文本 标签来实现,如图 图 13**.21 所示。

图 13.21 – 切换到文本/HTML 视图
- 切换回包含 Copilot Studio 自定义网站代码的浏览器标签。复制代码并将其粘贴到 HTML 编辑器中。根据您的主题,您可能需要编辑大小参数。例如,删除
"style=width:100%; height: 100%"标签可能有助于您看到原始显示大小。见图。

图 13.22 – 更新网站代码
- 点击 发布 将帖子或页面发布到您的网站上。
就这些了!
将机器人发布到 Facebook
机器人也可以是您在社交媒体网站(如 Facebook)上业务的扩展。在这个例子中,我们将发布一个机器人通过 Facebook Messenger 回答问题。
开始 Facebook 之旅!
为了与 Facebook 集成,您需要一个现有的 Facebook 商业应用。您还需要在 Facebook 开发者 (developers.facebook.com) 上注册。
要开始,请按照以下步骤操作:
-
导航到 Copilot Studio (
copilotstudio.microsoft.com) 并选择您的机器人。 -
从导航面板中展开 设置 并选择 通道。
-
选择 Facebook。
-
注意在 Facebook 飞出窗口中出现的字段,包括 Facebook 应用 ID、Facebook 应用密钥、页面 ID 和 页面访问令牌。

图 13.23 – 查看 Facebook 设置飞出窗口
-
打开一个新的浏览器标签页。导航到
developers.facebook.com并使用管理您组织 Facebook 页面或应用的 ID 登录。 -
从导航菜单中选择 我的应用。

图 13.24 – 登录 Facebook 开发者网站
- 选择您现有的应用或页面。

图 13.25 – 选择您的 Facebook 页面或应用
- 展开应用设置,并选择 基本。

图 13.26 – 获取 Facebook 安全数据
-
将 App ID 和 App secret 值复制到 Copilot Studio Facebook 通道设置中的相应位置。
-
在 Facebook 开发者设置页面,选择 高级。
-
启用 允许 API 访问应用设置 切换,并点击 保存更改。

图 13.27 – 启用 API 访问
- 点击 仪表板,然后选择 设置 的 Messenger 应用。

图 13.28 – 设置 Messenger 应用
- 根据您 Facebook 属性的当前状态,您可能需要设置一个新的页面或连接一个现有的页面。您将需要此信息来生成访问令牌。在这种情况下,我们有一个应用和一个页面,但需要将它们连接到 Messenger,因此我们将点击 连接。

图 13.29 – 将机器人应用连接到 Facebook 页面
- 连接后,确认数据访问。点击 继续。

图 13.30 – 确认数据访问确认
- 确认您的机器人将访问哪些资产。在这种情况下,我们只是允许它访问 HR 机器人 Facebook 应用。

图 13.31 – 授予访问权限
- 页面连接后,您可以生成一个访问令牌,如图 图 13.32* 所示:

图 13.32 – 生成访问令牌
- 点击我理解,然后将令牌复制到剪贴板。

图 13.33 – 获取页面访问令牌
-
将访问令牌粘贴到 Copilot Studio 中的页面访问令牌字段。
-
在 Facebook 开发者页面上,点击页面 ID值并将其粘贴到 Copilot Studio 中的页面 ID字段。
-
在 Copilot Studio 的Facebook飞出中点击添加以保存配置并生成回调 URL和验证令牌值。

图 13.34 – 配置 Facebook 飞出
- 在配置 webhooks下,点击配置。

图 13.35 – 配置 webhook
- 将 Copilot Studio 中Facebook飞出页面的回调 URL和验证令牌参数复制到相应的字段,然后点击验证和保存。

图 13.36 – 更新 webhook 设置
- 在Webhook Fields字段旁边点击管理。

图 13.37 – 管理 webhooks
-
在
messages -
messaging_postbacks -
messaging_optins -
message_deliveries

图 13.38 – 订阅 webhooks
-
点击X关闭对话框。
-
确保已更新Webhooks Fields字段。

图 13.39 – 确认 webhook 字段已更新
- 配置这些项目后,您需要通过展开App Review并点击提交审查来将您的机器人应用程序提交给 Facebook 进行审查。如果您的业务尚未通过 Facebook 验证,您需要通过提供支持性文件来完成此操作。Facebook 这样做是为了确保 API 不被滥用并遵守负责任的数据保护实践。

图 13.40 – 使用 Facebook 提交机器人进行审查
完成这些操作后,您的机器人可以通过 Facebook Messenger 开始回答问题!
将机器人发布到其他端点
除了与流行的社交媒体和通讯应用集成外,您还可以扩展您的对话机器人到其他应用。
有关开发机器人集成和其他专业代码解决方案的更多信息,请参阅learn.microsoft.com/en-us/microsoft-copilot-studio/publication-connect-bot-to-custom-application。
摘要
本章指导您将您的机器人扩展到诸如 Teams、公共网站和 Facebook 等地方。在这些场景中,您学习了如何集成您开发的对话机器人,扩展其覆盖范围和实用性。
这本书就到这里了。我希望您探索生成式 AI、OpenAI 和 Azure 以及 Microsoft Power Platform 中的 AI Builder 解决方案强大功能的过程和我撰写关于它们一样有趣!

浙公网安备 33010602011771号