您的组织需要一个多渠道智能聊天机器人和一个能够理解分散在不同位置的不同类型数据的搜索引擎。此外,对话式聊天机器人应该能够提供询问的答案,以及来源以及如何以及在何处获得答案的解释。换句话说,您希望您的组织拥有私有且安全的 ChatGPT,它可以解释、理解并回答有关您的业务数据的问题。
POC 的目标是展示/证明使用 Azure 服务构建的 GPT 虚拟助手的价值,并在您自己的环境中使用您自己的数据。可交付成果是:
使用 Bot Framework 构建的后端 Bot API 并暴露给多个渠道(网络聊天、MS Teams、短信、电子邮件、Slack 等)
具有搜索和机器人 UI 的前端 Web 应用程序。
该存储库旨在逐步教您如何构建基于 OpenAI 的智能搜索引擎。每个笔记本都构建在彼此之上,并最终构建两个应用程序。
对于 Microsoft FTE:这是客户资助的 VBD,低于交付的资产。
物品 | 描述 | 关联 |
---|---|---|
VBD SKU 信息和数据表 | CSAM 必须根据统一支持合同的积分/小时数将其作为“客户投资”进行发送。客户决定是 3 天还是 5 天。 | ESXP SKU 页面 |
CSA 的 VBD 认证 | CSA 获得举办研讨会所需认证的链接 | 链接 1 , 链接 2 |
VBD 3-5天POC资产(IP) | 要交付的 MVP(此 GitHub 存储库) | Azure-认知-搜索-Azure-OpenAI-加速器 |
VBD 研讨会平台 | 介绍和解释工作坊的甲板 | AOAI GPT Azure 智能搜索引擎加速器简介.pptx |
CSA 培训视频 | 针对 Microsoft CSA 的 2 小时培训 | POC VBD 培训录制(新视频即将推出!) |
先决条件 客户 3-5 天 POC
Azure 订阅
已接受 Azure Open AI 的应用程序,包括 GPT-4o。如果客户没有获得 GPT-4o 批准,Microsoft CSA 可以在研讨会期间借出他们的 GPT-4o
Microsoft 成员最好在客户端 Azure AD 中添加为来宾。如果不可能,客户可以向 Microsoft 会员颁发公司 ID
需要在客户 Azure 租户中为此 Workshop POC 设置资源组 (RG)
客户团队和 Microsoft 团队必须拥有此资源组的贡献者权限,以便他们可以在研讨会前 2 周设置所有内容
必须在 RG 中设置存储帐户。
客户数据/文档必须在研讨会日期前至少两周上传到 Blob 存储帐户
多租户应用程序注册(服务主体)必须由客户创建(保存客户端 ID 和秘密值)。
客户必须向 Microsoft 团队提供他们希望机器人正确响应的 10-20 个问题(从易到难)。
对于研讨会期间的 IDE 协作和标准化,将使用 Jupyper Lab 的 AML 计算实例,为此,必须在 RG 中部署 Azure 机器学习工作区
注意:请确保 Azure 机器学习工作区中有足够的核心计算配额
用户提出问题。
在应用程序中,OpenAI LLM 使用巧妙的提示来根据用户输入确定要使用的来源
有五种类型的来源可用:
电视节目《老友记》所有剧集的对话文字记录
90,000 份 Covid 出版物摘要
4 本冗长的 PDF 书籍
3a. Azure SQL 数据库 - 包含美国与新冠肺炎相关的统计数据。
3b. API 端点 - RESTful OpenAPI 3.0 API 包含有关 Covid 的最新统计信息。
3c. Azure Bing 搜索 API - 提供对互联网的访问,允许诸如以下场景:公共网站上的 QnA。
3d. Azure AI 搜索 - 包含来自 Blob 存储的 AI 丰富文档:
3f. CSV 表格文件 - 包含美国与新冠肺炎相关的统计数据。
该应用程序从源中检索结果并给出答案。
元组(问题和答案)作为持久内存保存到 CosmosDB 中,以供进一步分析。
答案被传递给用户。
https://gptsmartsearchapp.azurewebsites.net/
100% Python。
使用 Azure 认知服务来索引和丰富非结构化文档:图像 OCR、分块和自动矢量化。
使用 Azure AI 搜索的混合搜索功能提供最佳语义答案(文本和矢量搜索相结合)。
使用 LangChain 作为与 Azure OpenAI、向量存储交互、构建提示和创建代理的包装器。
多语言(摄取、索引并理解任何语言)
多索引 -> 多个搜索索引
使用 CSV 文件和 SQL 风格数据库的表格数据问答
使用 Azure AI 文档智能 SDK(以前的表单识别器)解析复杂/大型 PDF 文档
使用 Bing 搜索 API 为公共网站提供互联网搜索和问答。
通过将自然语言问题转换为 API 调用来连接到 API 数据源。
使用 CosmosDB 作为持久内存来保存用户的对话。
使用 Streamlit 在 python 中构建前端 Web 应用程序。
使用 Bot 框架和 Bot 服务托管 Bot API 后端并将其公开给包括 MS Teams 在内的多个渠道。
还使用 LangServe/FastAPI 部署具有流媒体功能的替代后端 API
注意:(前提条件)您需要已创建 Azure OpenAI 服务
将此存储库分叉到您的 Github 帐户。
在 Azure OpenAI studio 中,部署这些模型(低于下面所述的模型将无法工作):
“gpt-4o”
“gpt-4o-迷你”
“text-embedding-ada-002(或更新版本)”
创建一个资源组,该加速器的所有资产都将位于其中。 Azure OpenAI 可以位于不同的 RG 或不同的订阅中。
单击下面创建运行笔记本所需的所有 Azure 基础结构(Azure AI 搜索、认知服务等):
注意:如果您之前从未创建过Azure AI Services Multi-Service account
,请在 Azure 门户中手动创建一个帐户以阅读并接受 Responsible AI 条款。部署后,删除它,然后使用上面的部署按钮。
将您的 Forked 存储库克隆到 AML 计算实例。如果您的存储库是私有的,请参阅下面的故障排除部分如何克隆私有存储库。
确保在Python 3.10 conda 环境或更新版本上运行笔记本
在您的计算机上安装依赖项(确保在要运行笔记本的同一 conda 环境中执行以下 pip 命令。例如,在 AZML 计算实例中运行:
conda activate azureml_py310_sdkv2 pip install -r ./common/requirements.txt
您可能会遇到一些 pip 依赖项错误,但这没关系,无论错误如何,库都已正确安装。
使用您自己在步骤 4 中创建的服务中的值编辑文件credentials.env
。
对于 BLOB_SAS_TOKEN 和 BLOB_CONNECTION_STRING。转至存储帐户>安全 + 网络>共享访问签名>生成 SAS
按顺序运行笔记本。它们相互叠加。
为什么使用 Azure AI 搜索引擎为 LLM 提供上下文而不是微调 LLM?
答:引用 OpenAI 文档:“GPT-3 已针对来自开放互联网的大量文本进行了预训练。当仅给出几个示例的提示时,它通常可以凭直觉知道您正在尝试执行并生成什么任务这通常被称为“小样本学习”。微调通过训练超出提示范围的更多示例来改进小样本学习,让您在大量任务上取得更好的结果。一旦模型经过微调,您将不再需要在提示中提供示例。这可以节省成本并实现更低延迟的请求”
然而,微调模型需要提供数百或数千个提示和完成元组,它们本质上是查询响应样本。微调的目的不是让法学硕士了解公司的数据,而是为其提供示例,以便其能够很好地执行任务,而无需在每次提示时都提供示例。
在某些情况下,需要进行微调,例如当示例包含不应在提示中公开的专有数据时,或者当使用的语言高度专业化时,如在医疗保健、制药或其他行业或使用语言的用例中在互联网上并不常见。
克隆私有仓库的步骤:
在您的终端上,粘贴下面的文本,并替换为您的 GitHub 电子邮件地址。生成新的 SSH 密钥。
ssh-keygen -t ed25519 -C“[email protected]”
将 SSH 公钥复制到剪贴板。添加新的 SSH 密钥。
cat ~/.ssh/id_ed25519.pub# 然后选择终端中显示的 id_ed25519.pub 文件# 的内容并将其复制到剪贴板
在 GitHub 上,转到“设置”->“SSH 和 GPG 密钥”->“新 SSH 密钥”
在“标题”字段中,为新密钥添加描述性标签。 “AML 计算”。在“密钥”字段中,粘贴您的公钥。
克隆您的私人仓库
git clone [email protected]:您的用户名/您的存储库.git
该项目欢迎贡献和建议。 大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。
该项目可能包含项目、产品或服务的商标或徽标。 Microsoft 商标或徽标的授权使用须遵守且必须遵循 Microsoft 的商标和品牌指南。在此项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。对第三方商标或徽标的任何使用均须遵守这些第三方的政策。