Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话
作者:mmseoamin日期:2023-12-13

在本文中,可以将自己的数据与 Azure OpenAI 模型配合使用。 对数据使用 Azure OpenAI 模型可以提供功能强大的对话 AI 平台,从而实现更快、更准确的通信。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人

Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第1张

环境准备

  • 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 Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第2张

    导航到 Azure OpenAI Studio,然后使用有权访问 Azure OpenAI 资源的凭据登录。 在登录过程中或登录之后,选择适当的目录、Azure 订阅和 Azure OpenAI 资源。

    1. 选择“Chat Playground”磁贴。

    Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第3张

    1. 在“助手设置”磁贴上,选择“添加数据(预览)”>“+ 添加数据源”。

      Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第4张

    2. 在显示的窗格中,选择“选择数据源”下的“上传文件”。 选择“上传文件”。 Azure OpenAI 需要存储资源和搜索资源来访问数据并编制数据索引。

    3.1. 要使 Azure OpenAI 访问存储帐户,需要启用跨原点资源共享 (CORS)。 如果尚未为 Azure Blob 存储资源启用 CORS,请选择“启用 CORS”。

    3.2. 选择 Azure AI 搜索资源,然后选择确认以表明知晓连接该资源将使用你的帐户。 然后,选择“下一步”。

    Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第5张

    1. 在“上传文件”窗格中,选择“浏览文件”,并选择要上传的文件。 然后选择“上传文件”。 然后,选择“下一步”。

    2. 在“数据管理”窗格中,可以选择为索引启用[语义搜索还是向量搜索]。

    3. 查看输入的详细信息,然后选择“保存并关闭”。 现在,你可以与模型聊天,模型将使用数据中的信息来构造响应。

    Chat Playground

    Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第6张

    通过Chat Playground使用开始使用无代码方法浏览 Azure OpenAI 功能。 这是一个简单的文本框,可以在其中提交提示以生成补全内容。 在此页中,可以快速循环访问和试验这些功能。

    Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第7张

    可以试验温度和预响应文本等配置设置,以提高任务的性能。 可以在 [REST API]中详细了解每个参数。

    • 选择“生成”按钮后会将输入的文本发送到补全 API,并将结果流式传输回到文本框中。
    • 选择“撤消”按钮可以撤消上一次生成调用。
    • 选择“重新生成”按钮可以同时执行撤消和生成调用。

      部署模型

      对 Azure OpenAI 工作室中的体验感到满意后,可以通过选择“部署到”按钮直接从工作室部署 Web 应用。

      Azure Machine Learning - 使用自己的数据与 Azure OpenAI 模型对话,file,第8张

      这让你可以选择将模型部署为独立的 Web 应用程序,或者如果要在模型上使用[你自己的数据],则可以使用 Power Virtual Agents。

      例如,如果选择部署 Web 应用:

      首次部署 Web 应用时,应选择“创建新的 Web 应用”。 为应用选择一个名称,该名称将成为应用 URL 的一部分。 例如,https://.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 环境

        1. 为项目新建一个名为 openai-pytho 的文件夹,并且新建一个名为 main.py 的 Python 代码文件。 更改到该目录:
        mkdir openai-python
        cd openai-python
        
        1. 安装以下 Python 库:
        • [OpenAI Python 1.x]
          pip install openai
          pip install python-dotenv
          

          创建 Python 应用

          1. 从项目目录中,打开 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))
            
            1. 运行以下命令:
            python main.py
            

            应用程序以适合在许多场景下使用的 JSON 格式打印响应。 它包含对来自已上传文件的查询和引文的答案。

            关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人