你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 OpenAI 机器人与聊天集成

本文演示如何将对话 OpenAI 机器人与 Azure 通信服务聊天集成。 OpenAI 聊天机器人使用与语义内核集成的 Microsoft Bot Framework。 OpenAI 机器人从内部知识库检索和汇总响应,以自然语言回答用户问题。

Azure OpenAI 体系结构关系图。

步骤 1:使用 Azure AI Foundry 部署基本模型

  1. 在 Azure AI Foundry 门户中,按照 “创建项目”一 文创建新项目。 出现提示时,创建新的中心并接受所有默认设置。

  2. 打开项目,转到 “包含”功能,选择 Azure OpenAI 服务,并保存 API 密钥和服务终结点 URL。

    显示 Azure AI Foundry 门户概述页的屏幕截图。

  3. 在左侧菜单中,导航到 “我的资产”→模型 + 终结点。 然后单击“ + 部署模型 ”,然后选择“ 部署基本模型”。

    “管理模型和服务部署”页面的屏幕截图,显示已选择“部署基本模型”菜单项。

  4. 选择 gpt-4o ,然后单击“ 确认”。

    “选择模型”对话框的屏幕截图,其中选中了 gpt-4o。

  5. 输入所选的部署名称,然后单击 “连接”并部署

    “部署 gpt-4o”对话框的屏幕截图,其中 gpt-4o 显示为部署名称。

  6. 部署完成后,返回到 Models + 终结点 ,验证模型是否正在运行。 在此示例中,部署的模型为 gpt-4o

    模型和终结点资产的屏幕截图,其中显示部署的模型为 gtp-4o 和相关部署信息。

步骤 2:创建 Web 应用资源

  1. 在 Azure 门户中,选择“创建资源”。 在搜索框中,输入“Web 应用”。 选择“Web 应用”磁贴。

    显示如何在 Azure 门户中创建 Web 应用资源的屏幕截图。

  2. 在“创建 Web 应用”中,选择或输入应用的详细信息,包括要在其中部署该应用的区域。

    “创建 Web 应用”页的屏幕截图,其中显示了已选择“项目详细信息”和“实例详细信息”以创建 Web 应用部署。

  3. 选择“查看 + 创建”以验证部署并查看部署详细信息。 然后选择创建

  4. 创建 Web 应用资源时,复制资源详细信息中显示的主机名 URL。 该 URL 是为 Web 应用创建的终结点的一部分。

    “My-First-Bot-WebApp”页面的屏幕截图,显示了需要复制以供将来使用的 Web 应用的终端 URL。

步骤 3:创建 Azure 机器人服务资源

  1. 在 Azure 门户中,选择“创建资源”。 在搜索框中,输入 机器人。 选择“Azure 机器人”磁贴

    Azure 机器人磁贴的屏幕截图,其中显示了创建 Azure 机器人服务所需的详细信息。

  2. “创建 Azure 机器人”中,选择 “多租户 ”作为应用类型,新建 Microsoft 应用 ID 作为创建类型。

  3. 选择“查看 + 创建”以验证部署并查看部署详细信息。 然后选择创建

  4. 获取机器人应用 ID 并创建密码。 记录这些值以用于以后的配置。

步骤 4:为机器人创建消息终结点

Azure 机器人服务通常要求机器人应用程序 Web 应用控制器以 /api/messages 形式公开一个终结点。 终结点处理发送到机器人的所有消息。 接下来,在机器人资源中创建 Web 应用消息传递终结点:

  1. 在 Azure 门户中,转到您的 Azure Bot 资源。 在资源菜单中,选择“ 配置”。

  2. 在“配置”中,对于消息传送终结点,粘贴在上一部分中复制的 Web 应用的主机名 URL。 使用 /api/messages 附加 URL。

  3. 选择应用

显示如何使用 Web 应用主机名创建机器人消息传递终结点的屏幕截图。

步骤 5:创建 Azure 通信服务资源

  1. 在 Azure 门户中,选择“ 创建资源”。 在搜索框中,输入 通信服务。 选择 “通信服务 ”磁贴。

    “通信服务”磁贴的屏幕截图,其中显示了创建 Azure 通信服务资源所需的详细信息。

  2. “创建 Azure 通信服务”中,可以指定订阅、资源组、通信服务资源的名称以及与资源关联的地理位置。

  3. 选择“查看 + 创建”以验证部署并查看部署详细信息。 然后选择 创建

  4. 转到该资源。 选择 “设置 - 标识和用户访问令牌>聊天”,然后单击“ 生成”。 保存 标识用户访问令牌 以供将来使用。

    显示如何创建通信服务用户 ID 和访问令牌的屏幕截图

步骤 6:启用通信服务聊天通道

获取通信服务资源后,可以在机器人资源中设置通信服务通道。 此过程为机器人生成 Azure 通信服务用户 ID。

  1. 在 Azure 门户中,转到你的 Azure 机器人资源。 在资源菜单中,选择“通道”。 在可用频道列表中,选择 “通信服务 - 聊天”。

    显示打开通信服务聊天通道的屏幕截图。

  2. 选择“连接”,查看订阅中可用的通信服务资源列表。

    显示如何将通信服务资源连接到机器人的屏幕截图。

  3. 在“新建连接”窗格中选择通信服务聊天资源,然后选择“应用”。

    显示如何保存所选通信服务资源以创建新的通信服务用户 ID 的屏幕截图。

  4. 验证资源详细信息后,机器人 Azure 通信服务用户 ID 将显示在 Bot Azure 通信服务 ID 列中。 保存 ID 供以后使用。

    显示分配给机器人的新通信服务用户 ID 的屏幕截图。

步骤 7:部署 Web 应用

  1. 在 Visual Studio Code (VS Code) 中打开 ChatBot示例存储库 文件夹。 请确保使用 VS Code,因为它在代码部署时支持 Microsoft Entra ID。

  2. 将示例存储库中的占位符替换为实际值:

    1. SemanticKernelService.cs 文件中,填充变量 modelId的值, endpoint以及 apiKey
    2. appsettings.json文件中,使用您在MicrosoftAppId记录的MicrosoftAppPasswordbot app id来填充变量bot password的值。
  3. 在 VS Code 中安装 Azure 应用服务扩展。

    显示如何安装应用服务扩展的屏幕截图。

  4. 在 VS Code 中登录到 Azure 帐户。 若要访问登录面板,请单击窗口一侧的活动栏中的 Azure 图标。

  5. 在 VS Code 中安装 Azure 应用服务扩展。

    显示如何在 VS Code 中登录到 Azure 帐户的屏幕截图。

  6. 通过在“ChatBot”项目的根目录中运行以下命令来生成项目。

    dotnet publish -c Release -o ./bin/Publish
    

此命令生成 binobj 文件夹。

  1. 若要部署 Web 应用,请右键单击新 /bin/Publish 文件夹,然后选择“ 部署到 Web 应用”。

    显示如何为部署选择文件夹的屏幕截图。

  2. 选择要将应用程序部署到的 Azure 应用服务 Web 应用。 确认部署。

    显示如何将 Web 应用部署到 Azure 的屏幕截图。

步骤 8:运行演示

  1. 按照 “向应用添加聊天 ”中的“获取聊天线程客户端”之前的步骤创建聊天应用并启动线程。

    重要说明:

    • 已在门户中创建了 Azure 通信服务资源,因此可以直接在代码中使用<Azure Communication Services endpoint><Access_ID><Access_Token>代码。
    • 创建线程时,需要创建另一个ChatParticipant对象,使用在Bot Azure Communication Services User ID中创建的作为<Access_ID>来表示机器人用户。
    • 保存 Thread Id 以供以后使用。
  2. 打开 UI 库复合体:Azure 通信服务聊天线程 UI - 加入现有聊天线程

  3. 提供加入现有聊天线程所需的信息。

    • 显示名称:可以选择首选名称。
    • 用户的用户标识符: <Access_ID> 在步骤 8.1 中保存。
    • 用户的有效令牌:步骤 8.1 中保存的 <Access_Token>
    • Azure 通信服务终结点:步骤 8.1 中保存的 <Azure Communication Services endpoint>
    • 现有线程:步骤 8.1 中保存的 Thread Id
  4. 按顺序提出以下问题:

    • 问题 1: 我的用户 ID 为 110。 几天前我买了一台笔记本电脑。 你能帮助跟踪交付吗?
    • 问题 2: 我请求退回我的 Power Bank。 是否有任何更新?
    • 问题 3: 2天前我买了蓝牙耳机,但他们还没有发货。 为什么?

OpenAI 检索与问题语义相关的数据,并根据可用数据提供答案。

商标

此项目可能包含项目、产品或服务的商标或徽标。 Microsoft 商标或徽标的授权使用必须遵循 Microsoft 的商标和品牌准则

在此项目的修改版本中使用 Microsoft 商标或徽标不得造成混淆或暗示 Microsoft 赞助。

对第三方商标或徽标的任何使用均须遵守这些第三方的政策。