使用 Azure 启用 ChatGpt
使用 Azure 启用 ChatGpt - 企业级 GPT Web 应用
本指南将作为分步说明,帮助您完成以下操作:
基于您自己的数据创建类似 GPT 的体验
使用 Azure OpenAI 服务访问和部署 GPT 模型
使用 Azure 搜索服务进行数据索引和检索
启用集成矢量化功能,实现基于云的数据摄取
通过 Microsoft 身份验证保护 Web 应用程序
启用用户文档上传和管理文件附件
先决条件:Azure 帐户和订阅 - 立即创建
Azure 帐户权限 -
您的 Azure 帐户必须具有 Microsoft.Authorization/roleAssignments/write 权限,例如基于角色的访问控制管理员、用户访问管理员或所有者。如果您没有订阅级别权限,则必须为现有资源组授予 RBAC 权限,并部署到该现有组中。
您的 Azure 帐户还需要在订阅级别拥有 Microsoft.Resources/deployments/write 权限
安装所需工具
Azure Developer CLI
Python 3.9、3.10 或 3.11
重要提示:在 Windows 中,Python 和 pip 包管理器必须在路径中,设置脚本才能正常工作。
重要提示:确保您可以在控制台中运行 python --version。在 Ubuntu 上,您可能需要运行 sudo apt install python-is-python3 将 python 链接到 python3。
Node.js 18+
Git
Powershell 7+ (pwsh) - 仅适用于 Windows 用户。
重要提示:确保您可以在 PowerShell 终端中运行 pwsh.exe。如果失败,您可能需要升级 PowerShell。
成本估算:定价因地区和使用情况而异。如需个性化报价,请参考以下资源的 Azure 定价计算器:
Azure App Service:基本层,1 个 CPU 核心,1.75 GB RAM。按小时计费。定价
Azure OpenAI:标准层,GPT 和 Ada 模型。定价
Azure AI 文档智能:SO(标准)层,使用预构建布局。定价
Azure AI 搜索:基本层,1 个副本,免费语义搜索。按小时计费。定价
Azure Blob 存储:标准层,ZRS(区域冗余存储)。按存储和读取操作计费。定价
Azure Monitor:即用即付层。成本基于摄取的数据。定价
入门:本指南将使用以下开源存储库:Azure GPT - RAG
设置本地环境:导航到 Azure GPT - RAG 存储库并运行以下命令以下载代码库:azd init -t azure-search-openai-demo
在继续之前,请将存储库与当前远程源解除链接:git remote remove origin
将代码库链接到您自己的 Github 组织中的私有存储库:将本地托管代码添加到 GitHub
步骤 (3) 和 (4) 确保您将来所做的任何更改都可以推送到私有存储库中
部署到 Azure App Service:本小节将帮助您通过几个命令启动并运行聊天应用程序
导航到根目录中的 azure.yaml 文件
注释掉 host: containerapp 并取消注释 host: appservice
打开终端并登录到您的 Azure 帐户:azd auth login
创建一个新的 azd 环境来存储部署参数:azd env new Example-RG
输入一个将用于资源组的名称(替换“Example-RG”)。这将在 .azure 文件夹中创建一个新文件夹,并将其设置为今后所有 azd 调用的活动环境。
将部署目标设置为 appservice:azd env set DEPLOYMENT_TARGET appservice
导航到根目录中的数据文件夹,并将现有文件替换为您自己的自定义数据(如果有)。
此文件夹中包含的文件和文件夹将被摄取、计算为嵌入并存储在搜索索引中。为避免计算任何不必要的文档,请删除这些文件或替换为您自己的文件。
启用集成矢量化。有关此内容的更多详细信息,请参阅下面的“数据摄取”部分
azd env set USE_FEATURE_INT_VECTORIZATION true 预配资源并部署代码:azd up
这将预配 Azure 资源并将此示例部署到这些资源。
打开 Untitled Project.jpg 一旦开始预配,系统将提示您选择要创建的几个资源的位置。
您可以根据自己的喜好选择任何区域
重要提示:对于 openAiResourceGroupLocation,请参阅以下链接。由于某些模型部署可能在您首选的区域中不可用,因此请根据您计划使用的模型进行选择 - https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure%2Cglobal-standard%2Cstandard-chat-completions#global-standard-model-availability
预配完成后,它将自动运行 azd deploy 命令,服务部署将开始。请耐心等待,直到看到成功消息。
打开 Screenshot 2024-11-26 at 1.17.33 PM.png 运行本地开发服务器 在成功执行 azd up 命令后,您现在可以在本地运行应用程序并根据您的需要开始自定义。
如果需要,请再次验证并运行 azd auth login
启动服务器
Windows: ./app/start.ps1
Linux/Mac: ./app/start.sh 当您运行 ./start.ps1 或 ./start.sh 时,后端文件将被监视并自动重新加载。但是,此行为不适用于前端文件——它们不会被自动监视或重新加载。
要启用前端文件的热重载,首先,等待后端初始化。当您在终端中看到以下消息时,您就会知道它已准备就绪:Running on http://127.0.0.1:50505
现在打开一个新终端并导航到前端目录:cd app/frontend 然后运行:npm run dev
您应该会看到
frontend@0.0.0 dev vite VITE v4.5.1 ready in 957 ms ➜ Local: https://:5173/ ➜ Network: use --host to expose ➜ press h to show help 导航到终端中显示的 URL(在本例中为 https://:5173/)。此本地服务器将监视并重新加载前端文件。所有后端请求都将根据 vite.config.ts 路由到 Python 服务器。
然后,无论何时您对前端文件进行更改,更改都会自动重新加载,无需任何浏览器刷新。
这是您当前聊天应用程序在本地和部署后的样子
打开 Screenshot 2024-11-26 at 2.14.29 PM.png 6. 在下一节中,我们将重点介绍自定义此体验并重新部署您的更改。
应用程序自定义:应用程序自定义更改是完全可选的,但我们建议根据您的需求定制前端和后端。
您可以在原始存储库中找到有关自定义的所有相关信息:应用程序自定义
数据摄取:数据摄取是指添加您自己的自定义数据,这些数据可能特定于您的内部组织或领域特定知识
数据摄取可以通过两种技术完成
手动索引
集成矢量化
手动索引:手动索引过程通过在数据文件夹中添加数据文件来工作,然后将其上传到您的 Azure 存储
然后将此数据摄取到管道中,在那里将其分解为块,计算嵌入并准备搜索索引。
有关手动索引的更深入指南:手动索引过程
集成矢量化:通过手动索引进行数据摄取可能很麻烦,需要您在本地上传新数据文件并重新运行特定脚本——这是一个耗时且低效的过程。这就是集成矢量化作为游戏规则改变者的地方。
Azure AI 搜索最近推出了集成矢量化,这是一种基于云的解决方案,可简化整个数据摄取管道。此功能可自动化关键任务,例如文档格式破解、数据提取、分块、矢量化和索引——所有这些都由 Azure 技术提供支持,提供无缝高效的数据管理方法。
如果您在部署到应用服务部分中跳过了启用此功能,请按照以下指南进行操作
如果您以前部署过,请删除现有的搜索索引。🗑️
要启用集成矢量化功能,请运行
azd env set USE_FEATURE_INT_VECTORIZATION true 如果您已经部署了应用程序,那么您可以只运行预配步骤:azd provision
这将设置必要的 RBAC 角色并在您的搜索服务上配置集成矢量化功能。
如果您尚未部署应用程序,那么在配置所有可选功能后,您应该运行完整的 azd up。
管理文档(仅限集成矢量化方法):要添加或从索引中删除其他文档,请导航到您的数据源(默认情况下为 Blob 存储)。
导航到资源组
找到列为“存储帐户”的资源
在您的存储帐户中,导航到“存储浏览器”,然后导航到“Blob 容器”
根据需要在内容文件夹中上传或删除数据文件
打开 Screenshot 2024-11-26 at 4.51.03 PM.png 现在导航到“搜索服务”资源并从侧面板展开“搜索管理”
打开索引器并重新运行它。刷新并等待“成功”状态
打开 Screenshot 2024-11-26 at 5.04.37 PM.png 成功后,您就可以使用更新的 blob 内容了。但是,如果您希望测试您的搜索索引
从侧面板导航到“索引”并查询最近更新的数据中的任何内容
打开 Screenshot 2024-11-26 at 5.05.48 PM.png 附加功能:本节将向您介绍一些默认情况下不可用/未部署的附加功能。我们的指南将帮助您启用以下功能,以带给您更接近实际 Chat-GPT 的体验
启用 GPT 4 / GPT-4o / GPT-4o mini 等模型
启用身份验证以实现受控访问
启用文档级访问控制和用户文档上传
启用 GPT 4 / GPT-4o / GPT-4o mini
默认情况下,您当前的部署将使用 GPT 3.5 Turbo。但是,您可以使用您选择的模型进行更新。在终端中执行以下命令
要设置部署名称,请在您的 Azure OpenAI 帐户中运行此命令并使用唯一名称。您可以使用任何部署名称,只要它在您的 Azure OpenAI 帐户中是唯一的。
azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT chat4
要将 GPT 模型名称设置为可用模型中的 gpt-4、gpt-4o 或 gpt-4o mini 版本,请使用相应的 GPT 模型名称运行此命令。
对于 GPT-4:azd env set AZURE_OPENAI_CHATGPT_MODEL gpt-4
对于 GPT-4o:azd env set AZURE_OPENAI_CHATGPT_MODEL gpt-4o
对于 GPT-4o mini:azd env set AZURE_OPENAI_CHATGPT_MODEL gpt-4o-mini
要设置 Azure OpenAI 部署 SKU 名称,请使用所需的 SKU 名称运行此命令。azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT_SKU GlobalStandard
要设置 Azure OpenAI 部署容量,请使用所需容量运行此命令。azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT_CAPACITY 10
要设置 Azure OpenAI 部署版本(从可用版本中选择),请使用适当的版本运行此命令。对于 GPT-4:azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT_VERSION turbo-2024-04-09
对于 GPT-4o:azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT_VERSION 2024-05-13
对于 GPT-4o mini:azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT_VERSION 2024-07-18
要使用新参数更新部署,请运行此命令。azd up
注意:您也可以通过 https://oai.azure.com/ 手动管理模型部署
启用身份验证:为了启用可选登录,必须注册两个 Microsoft Entra 应用程序。这些应用程序注册也是启用文档级访问控制的强制性条件,文档级访问控制是用户文档上传所必需的。
一个应用程序用于客户端 UI。客户端 UI 实现为单页应用程序
另一个应用程序用于 API 服务器。API 服务器使用机密客户端调用 Microsoft Graph API
请按照以下指南设置和配置这两个应用程序
运行 azd env set AZURE_USE_AUTHENTICATION true 以启用登录 UI 并默认使用应用服务身份验证。
运行 .venv/bin/python ./scripts/manageacl.py --acl-action enable_acls(从根目录)以在搜索索引上启用访问控制。
运行 azd env set AZURE_AUTH_TENANT_ID 以设置与身份验证关联的租户 ID。
您可以通过导航到 Microsoft Entra ID 找到租户 ID
在“概述”选项卡的“基本信息”下查找“租户 ID”字段
运行 ./scripts/auth_init.sh 并等待身份验证设置完成。
您可以通过导航到 Microsoft Entra ID → 应用注册来验证脚本是否成功
确保您有两个新的应用注册,分别为 Azure Search OpenAI Chat Client App 和 Azure Search OpenAI Chat Server App。
您可以启动 azd up 命令完成身份验证设置,或者先按照下一节启用用户文档上传,然后使用 azd up 预配资源。
管理支持的帐户类型:默认情况下,应用程序配置将支持的帐户类型设置为“单租户”。
单租户支持仅允许访问主租户组织目录中的帐户。
您可以选择保留此默认配置并仅允许您的组织中的人员访问,或者您可以选择支持多租户帐户(任何 Microsoft Entra ID 租户)。
要将支持的帐户类型更改为多租户,请针对客户端和服务器应用程序注册执行以下步骤
导航到相应的应用程序注册
在侧面板的“管理选项”下选择“身份验证设置”
滚动到“支持的帐户类型”部分,然后选择“任何组织目录中的帐户”
打开 Screenshot 2024-11-27 at 3.46.20 PM.png 启用用户文档上传:本节介绍用户文档上传系统,以允许用户上传自己的文档并与它们聊天。
重要提示:此功能要求您首先启用身份验证。
您可以通过设置 azd 环境变量来启用用户文档上传功能:azd env set USE_USER_UPLOAD true
如果您要在现有索引上启用此功能,您还应该更新您的索引以包含新的 storageUrl 字段
.venv/bin/python ./scripts/manageacl.py -v --acl-action enable_acls 最后,运行 azd up 命令。
本指南将引导您完成使用 Azure 构建和部署完整端到端企业级 GPT 应用程序的过程。