你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在本文中,你将部署一个企业聊天 Web 应用,该应用将你的数据与 Azure AI Foundry 门户中的大型语言模型配合使用。
数据源使用特定数据为模型提供依据。 标定意味着模型使用你的数据来了解问题上下文。 不会更改已部署的模型本身。 数据会保留在原始数据源中,保持独立且安全。
本教程中的步骤包括:
- 配置资源。
- 添加数据。
- 使用数据测试模型。
- 部署 Web 应用。
先决条件
注释
必须对此功能使用 基于中心的项目 。 不支持 Azure AI Foundry 项目 。 请参阅 如何知道我拥有哪种类型的项目? 并 创建基于中心的项目。
- 拥有有效订阅的 Azure 帐户。 如果没有帐户,请创建一个 免费的 Azure 帐户,其中包括免费试用订阅。
- 如果没有项目, 请创建一个基于中心的项目。
已部署的 Azure OpenAI 聊天模型。 完成 Azure AI Foundry 操场快速入门,以创建此资源(如果尚未拥有)。
产品数据的本地副本。 GitHub 上的 Azure-Samples/rag-data-openai-python-promptflow 存储库包含用于本教程场景的零售产品信息示例。
product_info_11.md文件包含有关本教程示例的 TrailWalker 徒步旅行鞋的产品信息。 将 ZIP 文件中的 Contoso Trek 零售产品数据示例下载到本地计算机。在所选订阅中注册的 Microsoft.Web 资源提供程序,以便你可以部署到 Web 应用程序。 有关注册资源提供程序的信息,请参阅注册资源提供程序。
在 Azure 订阅中添加角色分配所需的权限。 只有特定 Azure 资源的所有者才能通过角色分配授予权限。
Azure AI Foundry 门户和 Azure 门户
在本教程中,你将在 Azure AI Foundry 门户中执行一些任务,并在 Azure 门户中执行一些任务。
Azure AI Foundry 门户是基于 Web 的环境,用于生成、训练和部署 AI 模型。 作为开发人员,你将在其中生成和部署聊天 Web 应用程序。
Azure 门户允许管理员管理和监视 Azure 资源。 管理员可以使用门户来设置从 Web 应用访问所需的不同 Azure 服务的设置。
配置资源
重要
你必须具有在 Azure 订阅中添加角色分配所需的权限。 仅允许由特定 Azure 资源的所有者授予权限(通过角色分配)。 你可能需要让你的 Azure 订阅所有者(可能是你的 IT 管理员)完成本部分。
若要使资源在 Web 应用中正常工作,请在 Azure 门户中设置正确的权限。
首先,确定需要在 Azure AI Foundry 门户中设置的资源。
打开 Azure AI Foundry 门户,然后选择用于部署 Azure OpenAI 聊天模型的基于中心的项目。
在左侧窗格中选择“管理中心”。
在项目下选择“已连接的资源”。
确定需要配置的三个资源:Azure OpenAI、Azure AI 搜索,以及对应于 workspaceblobstore 的 Azure Blob 存储。
小窍门
如果未在表中看到 “类型” ,请选择右上角的 “列 ”,然后添加或重新排序 所选列。 如果有多个 Azure OpenAI 资源,请使用包含已部署聊天模型的资源。
在 Azure 门户中搜索其中每个名称。 在新的浏览器标签页中打开每一个,以便在其中来回切换。
完成后,将打开三个新的浏览器选项卡:搜索服务、Azure AI Foundry 和 blobstore 容器。 使所有三个选项卡保持打开状态,因为你需要在其中切换以设置资源。
启用托管标识
在 Azure 门户的“搜索服务”资源的浏览器选项卡上,启用托管标识:
- 在左侧的窗格中,选择“资源管理”下的“标识”。
- 将“状态”切换为“打开”。
- 选择“保存”。
在 Azure 门户的“Azure AI Foundry”资源的浏览器选项卡上,启用托管标识:
- 在左侧的窗格中,选择“资源管理”下的“标识”。
- 将“状态”切换为“打开”。
- 选择“保存”。
设置搜索的访问控制
在 Azure 门户中“搜索服务”资源的浏览器选项卡上,设置 API 访问策略:
- 在左侧窗格的“设置”下选择“密钥”。
- 在“API 访问控制”下,选择两项。
- 出现提示时,请选择“是”进行确认。
分配角色
对以下步骤中的每个资源重复此模式。
为任何资源分配基于角色的访问控制 (RBAC) 的一般模式是:
- 导航到给定资源的 Azure 门户。
- 在 Azure 门户的左侧页面中,选择“访问控制 (IAM)”。
- 选择+ 添加>添加角色分配。
- 搜索需要分配的角色并选择它。 然后选择下一步。
- 向自己分配角色时:
- 选择“用户、组或服务主体”。
- 选择“选择成员”。
- 搜索名称并选择它。
- 将角色分配给另一个资源时:
- 选择“托管标识”。
- 选择“选择成员”。
- 使用下拉列表查找要分配的资源类型。 例如,Azure AI 服务或搜索服务。
- 从显示的列表中选择资源。 可能只有一个,但仍需要选择它。
- 继续执行向导,然后选择“查看 + 分配”以添加角色分配。
使用以下步骤为在本教程中设置的资源分配角色:
在 Azure 门户中“搜索服务”的浏览器选项卡上分配这些角色:
- 向 Azure AI Foundry 托管标识分配“搜索索引数据读取者”
- 向 Azure AI Foundry 托管标识分配“搜索服务参与者”
- 向自己分配“参与者”(若要查找“参与者”,请切换到顶部“特权管理员角色”选项卡。所有其他角色都位于“工作职能角色”选项卡中。)
在 Azure 门户中“Azure AI Foundry”的浏览器选项卡上分配这些角色:
- 向搜索服务托管标识分配“认知服务 OpenAI 参与者”
- 向自己分配“参与者”。
在 Azure 门户中“Azure Blob 存储”的浏览器选项卡上分配以下角色:
- 向 Azure AI Foundry 托管标识分配“存储 Blob 数据参与者”
- 向搜索服务托管标识分配“存储 Blob 数据读取器”
- 向自己分配“参与者”
已完成资源设置。 现在可以按需关闭 Azure 门户浏览器选项卡。
添加数据并再次尝试聊天模型
在 Azure AI Foundry 操场快速入门(这是本教程的先决条件)中,你了解了模型在没有数据的情况下如何响应。 将数据添加到模型中,以便模型回答有关产品的问题。
要完成本部分,需要产品数据的本地副本。
GitHub 上的 Azure-Samples/rag-data-openai-python-promptflow 存储库包含与本教程场景相关的零售产品信息示例。 具体而言,product_info_11.md 文件包含与本教程示例相关的 TrailWalker 徒步鞋的产品信息。
将 ZIP 文件中的 Contoso Trek 零售产品数据示例下载到本地计算机。
按照以下步骤将数据添加到聊天操场,以帮助助手回答有关产品的问题。 你不会更改已部署的模型本身。 数据单独安全地存储在 Azure 订阅中。
转到 Azure AI Foundry 中的项目。
从左窗格中选择游乐场。
选择“试用聊天操场”。
从“部署”下拉列表中选择部署的聊天模型。
在聊天操场左侧,选择“添加数据”“+ 添加新数据源”>。
在“数据源”下拉列表中,选择“上传文件”。
选择“上传”“上传文件”以浏览本地文件>。
选择要上传的文件。 选择之前下载或创建的产品信息文件。 现在添加所有文件。 稍后将无法在同一操场会话中添加更多文件。
选择“上传”将文件上传到 Azure Blob 存储帐户。 然后选择下一步。
选择“Azure AI 搜索”服务。
对于“矢量索引名称”,请输入“product-info”,然后选择“下一步”。
在“矢量设置”下的“搜索设置”页上,取消选中“将矢量搜索添加到此搜索资源”复选框。 此设置有助于确定模型如何响应请求。 然后选择下一步。
注释
如果添加矢量搜索,可在此处使用更多选项,但需要支付额外费用。
检查设置,然后选择“创建矢量索引”。
在操场中,可以看到数据引入正在进行中。 此过程可能需要几分钟时间。 在继续操作之前,请等到看到数据源和索引名称代替状态。
现在,你可以与模型聊天,询问与之前相同的问题(“TrailWalker 徒步鞋有多少”),这一次,它使用数据中的信息来构造响应。 可以展开“引用”按钮以查看使用的数据。
部署 Web 应用
对 Azure AI Foundry 门户中的体验感到满意后,可以将模型部署为独立的 Web 应用程序。
在 Azure 门户中查找资源组
在本教程中,将你的 Web 应用部署到与你的 Azure AI Foundry 中心相同的资源组。 在 Azure 门户中为 Web 应用设置身份验证。
按照以下步骤在 Azure 门户中前往资源组:
转到 Azure AI Foundry 中的项目。 在左侧窗格中选择“管理中心”。
在“项目”标题下,选择“概述”。
选择资源组名称以在 Azure 门户中打开资源组。 在此示例中,资源组命名为
rg-sdg-ai。现在你位于 Azure 门户中,查看在其中部署了中心的资源组的内容。 记下资源组名称和位置。 在下一部分需要用到这些信息。
在浏览器选项卡中保持此页打开状态。稍后返回。
部署 Web 应用
发布会在订阅中创建 Azure 应用服务。 可能会产生成本,具体取决于你选择的定价计划。 完成应用后,从 Azure 门户中删除。
若要部署 Web 应用:
重要
先将 Microsoft.Web 注册为资源提供程序,然后才能部署到 Web 应用。
完成上一部分中的步骤,将数据添加到操场。 (可以使用或不使用你自己的数据部署 Web 应用,但需要一个已部署的模型,如 Azure AI Foundry 操场快速入门中所述)。
选择“部署 > ...作为 Web 应用”。
在“部署 Web 应用”页,输入以下详细信息:
- 名称:Web 应用的唯一名称。
- 订阅:您的 Azure 订阅。 如果没有看到可用的订阅,请先 将 Microsoft.Web 注册为资源提供程序。
- 资源组:选择要在其中部署 Web 应用的资源组。 使用与中心相同的资源组。
- 位置:选择要在其中部署 Web 应用的位置。 使用与中心相同的位置。
- 定价计划:选择 Web 应用的定价计划。
- 在 Web 应用中启用聊天历史记录:对于本教程,未选中聊天历史记录框。 如果启用该功能,用户有权访问之前的各个查询和响应。 有关详细信息,请参阅聊天历史记录备注。
选择“部署”。
等待应用部署。 该过程可能需要花费几分钟时间。
准备就绪后,工具栏上将启用“启动”按钮。 不要启动该应用,并且不要关闭“聊天操场”页面 - 稍后将返回该页面。
配置 Web 应用身份验证
默认情况下,只能访问 Web 应用。 在本教程中,添加身份验证以限制 Azure 租户成员的访问。 用户使用其 Microsoft Entra 帐户登录以访问应用。 如果愿意,可以按照类似的过程添加另一个标识提供者。 应用仅使用用户的登录信息来验证他们是租户的成员。
使用 Azure 门户返回到浏览器选项卡,或在新的浏览器选项卡中打开 Azure 门户。查看部署了 Web 应用的资源组的内容。 可能需要刷新视图才能查看 Web 应用。
从资源组中的资源列表中选择“应用服务”资源。
在“设置”下的可折叠左侧菜单中,选择“身份验证”。
如果在此页上看到 Microsoft 列出了标识提供程序,则无需进一步操作。 可以跳过下一步。
使用以下设置添加标识提供者:
- 标识提供者:选择 Microsoft 作为标识提供者。 此页上的默认设置将应用限制为仅租户,因此无需在此处更改任何其他内容。
- 租户类型:员工
- 应用注册:创建新的应用注册
- 名称:Web 应用服务的名称
- 支持的帐户类型:当前租户 - 单租户
- 限制访问:需要身份验证
- 未经身份验证的请求:HTTP 302 发现重定向 - 建议用于网站
使用 Web 应用
即将完成。 现在可以测试 Web 应用。
如果更改了设置,请等待 10 分钟左右,以便身份验证设置生效。
返回到包含 Azure AI Foundry 门户中“聊天操场”页的浏览器选项卡。
选择“启动”以打开已部署的 Web 应用。 如果出现提示,请接受权限请求。
如果未在操场中看到“启动”,请从左窗格中选择“Web 应用”,然后从列表中选择所需应用以打开它。
如果身份验证设置尚未生效,请关闭 Web 应用的浏览器选项卡,并返回到 Azure AI Foundry 门户中的聊天操场。 稍等片刻,然后重试。
在 Web 应用中,提出与之前相同的问题(“TrailWalker 徒步鞋多少钱”)。 这一次,应用使用数据中的信息来构造响应。 展开“引用”按钮以查看使用的数据。
了解聊天历史记录
使用历史聊天记录功能,用户可以查看其以前的查询和响应。
部署 Web 应用时,可以启用历史聊天记录。 选中“在 Web 应用中启用聊天历史记录”复选框。
重要
启用历史聊天记录会在资源组中创建 Cosmos DB 实例,并会因所使用的存储而产生额外费用。 删除 Web 应用不会自动删除 Cosmos DB 实例。 若要删除 Cosmos DB 实例及所有存储的聊天,需要前往 Azure 门户中的关联资源并将其删除。
启用历史聊天记录后,用户可以在应用的右上角显示或隐藏它。 显示历史记录时,他们可以重命名或删除对话。 登录应用后,对话将从最新到最早排序,并根据对话中的第一个查询进行命名。
如果删除 Cosmos DB 资源但保留 Studio 中启用的聊天历史记录选项,则用户会看到连接错误,但仍然可以继续使用 Web 应用,只是没有历史聊天记录。
更新 Web 应用
使用操场添加更多数据或使用不同的方案测试模型。 准备好使用新模型更新 Web 应用时,请再次选择“将>...部署为 Web 应用”。 选择“更新现有 Web 应用”,并从列表中选择现有的 Web 应用。 新模型部署到现有的 Web 应用。
清理资源
若要避免不必要的 Azure 成本,请删除本快速入门中创建的资源(如果不需要这些资源)。 管理 Azure 门户中的资源。