该解决方案使用 RAG(检索增强生成)在您自己的文档上创建类似 ChatGPT 的前端体验。它使用 Azure OpenAI 服务访问 GPT 模型,并使用 Azure AI 搜索进行数据索引和检索。
该解决方案的后端是用 Python 编写的。还有基于此的JavaScript 、 .NET和Java示例。详细了解如何使用 Azure AI 服务开发 AI 应用。
观看该应用程序的视频概述。
此示例演示了使用检索增强生成模式在您自己的数据上创建类似 ChatGPT 的体验的几种方法。它使用 Azure OpenAI 服务访问 GPT 模型 (gpt-35-turbo),并使用 Azure AI 搜索进行数据索引和检索。
该存储库包含示例数据,因此可以进行端到端的尝试。在此示例应用程序中,我们使用一家名为 Contoso Electronics 的虚构公司,该体验允许其员工询问有关福利、内部政策以及职位描述和角色的问题。
重要提示:为了部署和运行此示例,您需要:
Microsoft.Authorization/roleAssignments/write
权限,例如基于角色的访问控制管理员、用户访问管理员或所有者。如果您没有订阅级别权限,则必须授予您现有资源组的 RBAC 权限并部署到该现有组。Microsoft.Resources/deployments/write
权限。定价因地区和使用情况而异,因此无法预测您的使用的确切费用。不过,您可以尝试使用 Azure 定价计算器获取以下资源。
为了降低成本,您可以切换到各种服务的免费 SKU,但这些 SKU 有限制。有关更多详细信息,请参阅本关于以最低成本进行部署的指南。
azd down
。
您有几个选项来设置此项目。最简单的入门方法是 GitHub Codespaces,因为它会为您设置所有工具,但如果需要,您也可以在本地进行设置。
您可以使用 GitHub Codespaces 虚拟运行此存储库,这将在您的浏览器中打开基于 Web 的 VS Code:
代码空间打开后(这可能需要几分钟),打开终端窗口。
一个相关选项是 VS Code Dev Containers,它将使用 Dev Containers 扩展在本地 VS Code 中打开项目:
启动 Docker Desktop(如果尚未安装,请安装)
打开项目:
在打开的 VS Code 窗口中,项目文件显示后(这可能需要几分钟),打开终端窗口。
安装所需的工具:
python --version
。在 Ubuntu 上,您可能需要运行sudo apt install python-is-python3
将python
链接到python3
。pwsh.exe
。如果失败,您可能需要升级 PowerShell。创建一个新文件夹并在终端中切换到它。
运行以下命令下载项目代码:
azd init -t azure-search-openai-demo
请注意,此命令将初始化 git 存储库,因此您不需要克隆此存储库。
以下步骤将预配 Azure 资源并将应用程序代码部署到 Azure 容器应用程序。若要部署到 Azure 应用服务,请遵循应用服务部署指南。
登录您的 Azure 帐户:
azd auth login
对于 GitHub Codespaces 用户,如果上一个命令失败,请尝试:
azd auth login --use-device-code
创建一个新的azd环境:
azd env new
输入将用于资源组的名称。这将在.azure
文件夹中创建一个新文件夹,并将其设置为今后对azd
的任何调用的活动环境。
(可选)您可以在此处通过设置环境变量来自定义部署,以便使用现有资源、启用可选功能(例如身份验证或视觉)或部署到免费套餐。
运行azd up
- 这将预配 Azure 资源并将此示例部署到这些资源,包括基于./data
文件夹中找到的文件构建搜索索引。
azd down
或删除资源,以避免不必要的支出。成功部署应用程序后,您将看到控制台打印出一个 URL。单击该 URL 可与浏览器中的应用程序交互。它将如下所示:
注意:在您看到“成功”后,可能需要 5-10 分钟才能完全部署应用程序。如果您看到“Python Developer”欢迎屏幕或错误页面,请稍等片刻并刷新页面。
如果您仅更改了app
文件夹中的后端/前端代码,则无需重新预配 Azure 资源。你可以运行:
azd deploy
如果更改了基础结构文件( infra
文件夹或azure.yaml
),则需要重新预配 Azure 资源。您可以通过运行以下命令来做到这一点:
azd up
要让其他人访问完全部署的现有环境,您或他们可以按照以下步骤操作:
azd init -t azure-search-openai-demo
或克隆此存储库。azd env refresh -e {environment name}
他们将需要 azd 环境名称、订阅 ID 和位置来运行此命令。您可以在.azure/{env name}/.env
文件中找到这些值。这将使用本地运行应用程序所需的所有设置填充其 azd 环境的.env
文件。.env
文件或活动 shell 中将环境变量AZURE_PRINCIPAL_ID
设置为其 Azure ID,他们可以通过az ad signed-in-user show
获取该 ID。./scripts/roles.ps1
或.scripts/roles.sh
将所有必要的角色分配给用户。如果他们没有在订阅中创建角色所需的权限,那么您可能需要为他们运行此脚本。脚本运行后,他们应该能够在本地运行应用程序。 您只能在成功运行azd up
命令后才能在本地运行。如果还没有,请按照上面的部署步骤进行操作。
azd auth login
app
./start.ps1
或./start.sh
或运行“VS Code 任务:启动应用程序”在本地启动项目。请参阅本地开发指南中的更多提示。
进入网络应用程序后:
要清理此示例创建的所有资源:
azd down
y
y
资源组和所有资源将被删除。
除了下面的提示之外,您还可以在 docs 文件夹中找到大量文档。
成功部署应用程序后,您可以开始根据需要对其进行自定义:更改文本、调整提示和替换数据。有关更多详细信息,请参阅应用程序自定义指南以及数据摄取指南。
默认情况下,已部署的应用程序使用 Application Insights 跟踪每个请求以及记录错误。
要查看性能数据,请转到资源组中的 Application Insights 资源,单击“调查 -> 性能”边栏选项卡,然后导航到任何 HTTP 请求以查看计时数据。要检查聊天请求的性能,请使用“钻取样本”按钮查看对任何聊天请求进行的所有 API 调用的端到端跟踪:
要查看任何异常和服务器错误,请导航至“调查 -> 故障”边栏选项卡并使用过滤工具来查找特定异常。您可以在右侧看到 Python 堆栈跟踪。
您还可以通过运行以下命令在仪表板上查看图表摘要:
azd monitor
此示例旨在作为您自己的生产应用程序的起点,但您应该在部署到生产之前对安全性和性能进行彻底的审查。阅读我们的生产指南以了解更多详细信息。
以下是最常见的故障场景和解决方案:
订阅 ( AZURE_SUBSCRIPTION_ID
) 无权访问 Azure OpenAI 服务。请确保AZURE_SUBSCRIPTION_ID
OpenAI 访问请求过程中指定的 ID 匹配。
您尝试在未启用 Azure OpenAI 的区域(例如 East US 2 而不是 East US)或未启用您尝试使用的模型的区域中创建资源。请参阅此模型可用性矩阵。
您已超出配额,通常是每个区域的资源数量。请参阅这篇有关配额和限制的文章。
您遇到“不允许使用相同的资源名称”冲突。这可能是因为您多次运行该示例并删除了每次创建的资源,但忘记清除它们。 Azure 会将资源保留 48 小时,除非您通过软删除进行清除。请参阅这篇有关清除资源的文章。
当prepdocs.py
脚本运行时,您会看到CERTIFICATE_VERIFY_FAILED
。这通常是由于您计算机上的 SSL 证书设置不正确造成的。尝试此 StackOverflow 答案中的建议。
运行azd up
并访问网站后,您会在浏览器中看到“404 Not Found”。等待 10 分钟,然后重试,因为它可能仍在启动。然后尝试运行azd deploy
并再次等待。如果已部署的应用程序在部署到应用服务时仍然遇到错误,请参阅有关调试应用服务部署的指南。如果日志不能帮助您解决错误,请提出问题。
这是一个示例,旨在演示现代生成式 AI 应用程序的功能以及如何在 Azure 中构建它们。如需部署此示例的帮助,请在 GitHub 问题中发帖。如果您是 Microsoft 员工,您还可以在我们的 Teams 频道中发帖。
该存储库由维护者提供支持,而不是由 Microsoft 支持人员提供支持,因此请使用上述支持机制,我们将尽力为您提供帮助。
注意:此演示中使用的 PDF 文档包含使用语言模型(Azure OpenAI 服务)生成的信息。这些文档中包含的信息仅用于演示目的,并不反映 Microsoft 的意见或信念。 Microsoft 不对本文档中包含的信息的完整性、准确性、可靠性、适用性或可用性做出任何形式的明示或暗示的陈述或保证。微软保留所有权利。