Python 聊天专用终结点入门

本文介绍了如何部署和运行可通过专用终结点访问的 Python 的 企业聊天应用示例。

此示例使用 Python、Azure OpenAI 服务和 Azure AI 搜索中的 检索扩充生成(RAG) 实现聊天应用,以获取有关虚构公司员工福利的解答。 该应用采用 PDF 文件种子,其中包括员工手册、福利文档以及公司角色和期望列表。

按照本文中的说明操作,您可以:

  • 将聊天应用部署到 Azure,以便在 Web 浏览器中进行公共访问。
  • 使用专用终结点重新部署聊天应用。

完成此过程后,可以使用自定义代码开始修改新项目并重新部署,知道聊天应用只能通过专用网络访问。

体系结构概述

默认部署方案创建了具有公共终结点的聊天应用程序。

显示基本 RAG 聊天应用的网络体系结构的 关系图。

对于利用私密数据丰富功能的聊天应用程序,确保聊天应用程序的访问安全至关重要。 本文介绍使用虚拟网络的解决方案。

关系图,显示 Azure 虚拟网络中所有服务的网络体系结构。

在虚拟网络中,Azure 应用服务应用与其他后端 Azure 服务都有单独的子网。 通过此结构,可以轻松地将不同的网络安全组规则应用于每个子网。

关系图,其中显示了虚拟网络中的聊天应用子网和后端子网。

在虚拟网络中,服务使用专用终结点相互通信。 每个专用终结点都与专用域名系统(DNS)区域相关联,以将专用终结点的名称解析为虚拟网络中的 IP 地址。

关系图,显示虚拟网络中 Azure OpenAI 的专用终结点和专用 DNS 区域。

部署步骤

建议部署解决方案两次。 使用公共访问权限部署一次,以验证聊天应用是否正常工作。 使用专用访问再次部署,并通过虚拟网络来保护聊天应用。

先决条件

开发容器 环境提供了完成这篇文章所需的所有依赖项。 可以使用 Visual Studio Code 在 GitHub Codespaces(浏览器中)或本地启动开发容器。

若要使用本文,需要满足以下先决条件。

开放开发环境

现在开始使用一个已经安装了所有依赖项的开发环境,以完成这篇文章。

GitHub Codespaces 运行由 GitHub 托管的开发容器,Visual Studio Code for web 作为用户界面。 对于最直接的开发环境,请使用 GitHub Codespaces,以便预先安装正确的开发人员工具和依赖项来完成本文。

重要

所有 GitHub 帐户每月最多可以使用 GitHub Codespaces 60 小时,其中包含两个核心实例。 有关详细信息,请参阅 GitHub Codespaces 每月包含的存储和核心小时数

  1. 开始在 main GitHub 存储库 分支上创建新的 GitHub 代码空间的过程。

  2. 右键单击以下按钮,并选择 在新窗口 中打开链接,让开发环境和文档同时可用。

    GitHub Codespaces 中打开。

  3. “创建 codespace”页上,查看 codespace 配置设置,然后选择 创建 codespace

    这是一个展示创建新代码空间前确认屏幕的截图。

  4. 等待 Codespace 启动。 此启动过程可能需要几分钟时间。

  5. 在屏幕底部的终端中,使用 Azure 开发人员 CLI 登录到 Azure:

    azd auth login
    
  6. 从终端复制代码,然后将其粘贴到浏览器中。 按照说明使用 Azure 帐户进行身份验证。

本文中的剩余任务发生在此开发容器的上下文中。

自定义设置

此解决方案根据使用 Azure Developer CLI 配置的自定义设置来配置和部署基础架构。 下表说明了此解决方案的自定义设置。

设置 描述
AZURE_PUBLIC_NETWORK_ACCESS 控制受支持 Azure 资源的公用网络访问权限的值。 有效值为 EnabledDisabled
AZURE_USE_PRIVATE_ENDPOINT 控制将 Azure 资源连接到虚拟网络的专用终结点的部署。 TRUE 值表示部署了用于连接的专用端点。

部署聊天应用

第一个部署创建资源并提供可公开访问的端点。

  1. 运行以下命令来配置此解决方案以供公共访问:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled
    

    当系统要求提供环境名称时,请记住环境名称用于创建资源组。 输入有意义的名称。 如果属于某一团队或组织,则请在 morgan-chat-private-endpoints 中包括你的姓名。 记下环境名称。 稍后需在 Azure 门户中找到这些资源。

  2. 运行以下命令以包括预配虚拟网络资源。 请记住,在完成第二个部署之前,此部署不会限制访问。

    azd env set AZURE_USE_PRIVATE_ENDPOINT true
    
  3. 使用以下命令部署解决方案:

    azd up
    

    预配资源是部署过程中最耗时的部分。 等待部署完成,然后再继续。

  4. 在部署过程结束时,将显示应用终结点。 将该终结点复制到浏览器中以打开聊天应用。 选择卡片上的一个问题,然后等待答案。

    请记下端点 URL,因为您在后续文章中需要用到它。

使用专用访问权限将聊天应用部署到 Azure

更改部署配置以保护聊天应用,确保专用访问。

  1. 运行以下命令以关闭公共访问:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled
    
  2. 运行以下命令以更改资源配置。 此命令不会重新部署应用程序代码,因为该代码未更改。

    azd provision
    
  3. 预配完成后,再次在浏览器中打开聊天应用。 由于公共终结点已禁用,因此无法再访问聊天应用。

访问聊天应用

若要访问聊天应用,请使用 Azure VPN 网关Azure 虚拟桌面等工具。 请记住,用于访问应用的任何工具都必须安全且符合组织的安全策略。

清理资源

以下步骤将引导你完成清理所用资源的过程。

删除 GitHub Codespaces 环境可确保可以最大程度地提高帐户获得的每核心免费小时数权利。

重要

有关 GitHub 帐户权利的详细信息,请参阅 GitHub Codespaces 每月包含的存储和核心小时数

  1. 登录到 GitHub Codespaces 仪表板

  2. 找到当前运行的代码空间,这些代码空间源自 Azure-Samples/azure-search-openai-demo GitHub 存储库。

    显示所有正在运行的代码空间(包括其状态和模板)的屏幕截图。

  3. 打开代码空间的上下文菜单,然后选择 删除

    屏幕截图,其中显示了单个代码空间的上下文菜单,其中突出显示了“删除”选项。

获取帮助

此示例存储库提供 故障排除信息。

如果未解决问题,请将问题添加到存储库的问题网页。