在本文中,可以将自己的数据与 Azure OpenAI 模型配合使用。 对数据使用 Azure OpenAI 模型可以提供功能强大的对话 AI 平台,从而实现更快、更准确的通信。
关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人
环境准备
- Azure 订阅 - 免费创建订阅。
- 已在所需的 Azure 订阅中授予对 Azure OpenAI 的访问权限。Azure OpenAI 服务需要注册,并且目前仅供经批准的企业客户与合作伙伴使用。
- 已部署聊天模型的 Azure OpenAI 资源(例如 GPT-3 或 GPT-4)。
- 聊天模型可以使用版本
gpt-35-turbo (0301)
、gpt-35-turbo-16k
、gpt-4
和gpt-4-32k
。 - 请确保至少为 Azure OpenAI 资源分配了[认知服务参与者]角色。
使用 Azure OpenAI Studio 添加数据
导航到 Azure OpenAI Studio,然后使用有权访问 Azure OpenAI 资源的凭据登录。 在登录过程中或登录之后,选择适当的目录、Azure 订阅和 Azure OpenAI 资源。
- 选择“Chat Playground”磁贴。
- 在“助手设置”磁贴上,选择“添加数据(预览)”>“**+ 添加数据源**”。
- 在显示的窗格中,选择“选择数据源”下的“上传文件”。 选择“上传文件”。 Azure OpenAI 需要存储资源和搜索资源来访问数据并编制数据索引。
3.1. 要使 Azure OpenAI 访问存储帐户,需要启用跨原点资源共享 (CORS)。 如果尚未为 Azure Blob 存储资源启用 CORS,请选择“启用 CORS”。
3.2. 选择 Azure AI 搜索资源,然后选择确认以表明知晓连接该资源将使用你的帐户。 然后,选择“下一步”。
- 在“上传文件”窗格中,选择“浏览文件”,并选择要上传的文件。 然后选择“上传文件”。 然后,选择“下一步”。
- 在“数据管理”窗格中,可以选择为索引启用[语义搜索还是向量搜索]。
- 查看输入的详细信息,然后选择“保存并关闭”。 现在,你可以与模型聊天,模型将使用数据中的信息来构造响应。
Chat Playground
通过Chat Playground使用开始使用无代码方法浏览 Azure OpenAI 功能。 这是一个简单的文本框,可以在其中提交提示以生成补全内容。 在此页中,可以快速循环访问和试验这些功能。
可以试验温度和预响应文本等配置设置,以提高任务的性能。 可以在 [REST API]中详细了解每个参数。
- 选择“生成”按钮后会将输入的文本发送到补全 API,并将结果流式传输回到文本框中。
- 选择“撤消”按钮可以撤消上一次生成调用。
- 选择“重新生成”按钮可以同时执行撤消和生成调用。
部署模型
对 Azure OpenAI 工作室中的体验感到满意后,可以通过选择“部署到”按钮直接从工作室部署 Web 应用。
这让你可以选择将模型部署为独立的 Web 应用程序,或者如果要在模型上使用[你自己的数据],则可以使用 Power Virtual Agents。
例如,如果选择部署 Web 应用:
首次部署 Web 应用时,应选择“创建新的 Web 应用”。 为应用选择一个名称,该名称将成为应用 URL 的一部分。 例如,
https://<appname>.azurewebsites.net
。
为已发布的应用选择订阅、资源组、位置和定价计划。 要更新现有应用,请选择“发布到现有 Web 应用”,然后从下拉菜单中选择上一个应用的名称。
使用Python调用
要成功地对 Azure OpenAI 进行调用,需要使用以下变量。 本快速入门假定已将数据上传到 Azure Blob 存储帐户,并且已创建 Azure AI 搜索索引。
变量名称值
AOAIEndpoint
在从 Azure 门户检查 Azure OpenAI 资源时,可在“密钥 & 终结点”部分中找到此值。 也可在“Azure AI 工作室”>“聊天操场”>“代码视图”中查找该值。 示例终结点为:
https://my-resoruce.openai.azure.com
。
AOAIKey
在 Azure 门户检查 Azure OpenAI 资源时,可在“资源管理>密钥 & 终结点”部分中找到此值。 可以使用
KEY1
或
KEY2
。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
AOAIDeploymentId
此值将对应于在部署模型时为部署选择的自定义名称。 可在 Azure 门户中的“资源管理”>“部署”下,或者在 Azure AI 工作室中的“管理”>“部署”下查找此值。
SearchEndpoint
在 Azure 门户检查 Azure AI 搜索资源时,可在“概览”部分中找到此值。
SearchKey
在 Azure 门户检查 Azure AI 搜索资源时,可在“设置>密钥”部分中找到此值。 你可以使用主要管理密钥或辅助管理密钥。 始终准备好两个密钥可以安全地轮换和重新生成密钥,而不会导致服务中断。
SearchIndex
此值对应于为存储数据而创建的索引的名称。 在从 Azure 门户检查 Azure AI 搜索资源时,可以在“概述”部分找到它。
环境变量
- [命令行]
setx AOAIEndpoint REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AOAIKey REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AOAIDeploymentId REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx SearchEndpoint REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx SearchKey REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx SearchIndex REPLACE_WITH_YOUR_INDEX_NAME_HERE
创建 Python 环境
- 为项目新建一个名为 openai-pytho 的文件夹,并且新建一个名为 main.py 的 Python 代码文件。 更改到该目录:
mkdir openai-python
cd openai-python
- 安装以下 Python 库:
- [OpenAI Python 1.x]
pip install openai
pip install python-dotenv
创建 Python 应用
- 从项目目录中,打开 main.py 文件并添加以下代码:
- [OpenAI Python 1.x]
import os
import openai
import dotenv
dotenv.load_dotenv()
endpoint = os.environ.get("AOAIEndpoint")
api_key = os.environ.get("AOAIKey")
deployment = os.environ.get("AOAIDeploymentId")
client = openai.AzureOpenAI(
base_url=f"{endpoint}/openai/deployments/{deployment}/extensions",
api_key=api_key,
api_version="2023-08-01-preview",
)
completion = client.chat.completions.create(
model=deployment,
messages=[
{
"role": "user",
"content": "How is Azure machine learning different than Azure OpenAI?",
},
],
extra_body={
"dataSources": [
{
"type": "AzureCognitiveSearch",
"parameters": {
"endpoint": os.environ["SearchEndpoint"],
"key": os.environ["SearchKey"],
"indexName": os.environ["SearchIndex"]
}
}
]
}
)
print(completion.model_dump_json(indent=2))
- 运行以下命令:
python main.py
应用程序以适合在许多场景下使用的 JSON 格式打印响应。 它包含对来自已上传文件的查询和引文的答案。
关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人
版权归原作者 TechLead KrisChang 所有, 如有侵权,请联系我们删除。