协调工作流是一项功能,可用于将会话语言理解和自定义问题解答中的不同项目连接到一个项目中。 然后,可以使用此项目在一个终结点下进行预测。 业务流程项目会对应当调用哪个项目进行预测,然后自动将请求路由到该项目,并返回其响应。
本教程介绍如何将自定义问题解答知识库与对话语言理解项目连接起来。 然后使用用于编排的 .NET SDK 示例调用项目。
本教程包括创建 聊天 知识库和 电子邮件命令 项目。 闲聊处理常见的礼节性表达和问候,并产生静态响应。 电子邮件命令在电子邮件助手的几个简单操作中进行预测。 本教程介绍如何使用示例解决方案在 .NET 环境中使用 SDK 调用 Orchestrator。
先决条件
- 创建语言资源,并在 Azure 门户中选择自定义问答功能以获取密钥和终结点。 部署后,选择”转到资源”。
- 您需要从所创建的资源中获取密钥和终结点来将机器人连接到 API。 在本教程的稍后部分,你需要将密钥和终结点粘贴到代码中。 从资源中的“密钥和终结点”选项卡复制它们。
- 启用自定义问题解答时,必须选择要连接到的 Azure 搜索资源。
- 确保你资源的区域支持 对话语言理解。
- 下载 OrchestrationWorkflowSample 示例。
创建自定义问题解答知识库
登录到 Language Studio 并选择语言资源。
在主页中查找并选择 “自定义问答 ”磁贴。
选择“创建新项目”,添加名称 chitchat 以及语言“英语”,然后单击“创建项目”。
当项目加载时,选择“添加源”并选择“聊天”。 为之前的聊天选择“专业”个性
从左窗格中转到 “部署知识库 ”,然后选择“ 部署 ”并确认显示的弹出窗口。
现在,您已完成知识库的部署,用于闲聊。 可以在“编辑知识库”页中浏览预期的问题和答案类型。
创建对话语言理解项目
在 Language Studio 中,转到对话语言理解服务。
在
EmailProject.json下载 EmailProject.json 示例文件。选择“导入”按钮。 浏览到已下载的“EmailProject.json”文件,然后按“完成”。
加载项目后,选择“ 训练作业”。 按“启动训练作业”,提供模型名称 v1,然后按“训练”。
训练完成后,选择左侧 部署模型 。 选择“添加部署”,创建名为 Testing 的新部署,并将模型 v1 分配给该部署。
现在,你已完成为电子邮件命令部署对话语言理解项目。 可以在“数据标记”页中浏览不同的命令。
创建业务流程工作流项目
- 在 Language Studio 中,转到业务流程工作流服务。
- 选择“创建新项目”。 使用名称“Orchestrator”和语言“英语”,然后依次单击“下一步”、“完成”。
- 创建项目后,选择“架构定义”页中的“添加”。
- 选择“是的,我想将其连接到现有项目”。 添加意向名称“EmailIntent”并选择“对话语言理解”作为连接服务。 单击“添加意向”之前,选择最近创建的“EmailProject”项目作为项目名称。
- 添加另一个意向,但现在选择“问题解答”作为服务,然后选择“chitchat”作为项目名称。
- 与对话语言理解类似,请转到“训练作业”,并启动名称为“v1”的新训练作业,然后按“训练”。
- 训练完成后,选择左侧 部署模型 。 选择“添加部署”,创建名为 Testing 的新部署,并将模型 v1 分配给该部署,然后按“下一步”。
- 在下一页上,为“EmailIntent”选择部署名称“Testing”。 此命令告知业务流程协调程序在路由到 EmailProject 时调用测试部署。 默认情况下,自定义问题解答项目只有一个部署。
现在,业务流程项目已准备就绪,可供使用。 任何传入的请求都会在会话语言理解中路由到 EmailIntent 和 EmailProject 或者在闲聊知识库中路由到 ChitChatIntent 和 chitchat。
使用对话 SDK 调用业务流程项目
在下载的示例中,使用 Visual Studio 打开 OrchestrationWorkflowSample.sln。
在 OrchestrationWorkflowSample 解决方案中,确保安装所有必需的包。 在 Visual Studio 中,转到“工具”、“NuGet 包管理器”并选择“包管理器控制台”,然后运行以下命令。
dotnet add package Azure.AI.Language.Conversations
或者,可以在 NuGet 包管理器中搜索“Azure.AI.Language.Conversations”并安装最新版本。
- 在
Program.cs中,替换{api-key}变量和{endpoint}变量。 使用前面创建的语言资源的密钥和终结点。 可以在 Azure 的语言资源中的“密钥和终结点”选项卡中找到它们。
Uri endpoint = new Uri("{endpoint}");
AzureKeyCredential credential = new AzureKeyCredential("{api-key}");
- 如果尚未设置项目和部署参数,请将项目和部署参数替换为 Orchestrator 和 Testing 。
string projectName = "Orchestrator";
string deploymentName = "Testing";
- 在 Visual Studio 中运行该项目或按 F5。
- 输入查询,例如“读取来自 matt 的电子邮件”或“你好,你怎么样”。现在,你观察到不同的响应,第一个查询得到的是来自EmailProject的对话式语言理解响应,而第二个查询得到的是来自闲聊知识库的答案。
对话语言理解:A screenshot showing the sample response from conversational language understanding.
自定义问题解答:A screenshot showing the sample response from custom question answering.
现在可以将其他项目连接到业务流程协调程序,并开始使用各种不同项目构建复杂的体系结构。