你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用提示流和 GitHub 设置 GenAIOps

随着对 LLM 注入应用程序的需求不断飙升,组织需要一个有凝聚力且简化的过程来管理这些应用的端到端生命周期。 生成式人工智能运营 (GenAIOps)(有时称为 LLMOps)是高效提示工程和 LLM 注入的应用程序开发和部署的基石。

本文介绍了如何将 Azure 机器学习与 GitHub 集成,以便通过提示流自动执行 LLM 注入的应用程序开发生命周期。 提示流提供了一种简化且结构化的方法,用于开发 LLM 注入的应用程序。 其定义完善的过程和生命周期将指导你完成生成、测试、优化和部署流的过程,最终创建功能完备的 LLM 注入解决方案。

GenAIOps 提示流功能

带有提示流的 GenAIOps 使用 GenAIOps 模板和指导来帮助你使用提示流生成 LLM 注入的应用。 具有提示流的 GenAIOps 具有简单或复杂的 LLM 注入应用的功能,并且可以根据应用程序的需求进行自定义。

具有提示流平台的 GenAIOps 提供以下功能:

  • 集中式代码托管。 存储库支持为多个提示流托管代码,为所有流提供单个存储库。 此存储库类似于流的库,便于查找、访问和协作处理不同的项目。

  • 生命周期管理。 每个流都有自己的生命周期,提供从本地试验到生产部署的平稳过渡。

  • 变量和超参数试验。 变体和超参数就像食谱中的成分。 通过该平台,可以试验流中多个节点的不同变体组合。 可以试验多个变体和超参数,以便轻松评估流变体。

  • 多个部署目标。 该平台会生成注入流和计算会话的 Docker 映像,以便部署到支持 Docker 的任何目标平台和操作系统。 可以将流部署到 Azure 应用服务、Kubernetes 和 Azure 托管计算,并将其配置为根据需要进行缩放。

  • A/B 部署。 具有提示流的 GenAIOps 可无缝实现 A/B 部署,使你可以轻松比较不同的流版本。 此平台以与传统网站 A/B 测试相同的方式促进快速流 A/B 部署。 可以在实际设置中轻松比较不同版本的流,以确定哪个版本性能最佳。

  • 多对多数据集与流的关系。 具有提示流的 GenAIOps 可容纳每个标准和评估流的多个数据集,从而在流测试和评估中实现多功能性。

  • 条件数据和模型注册。 仅当数据集发生更改时,平台才会为 Azure 机器学习数据资产注册新的数据集版本,并在模型注册表中流动。

  • 综合报告。 具有提示流的 GenAIOps 会为每个变体配置生成详细报告,使你能够做出明智的决策。 该平台为所有运行和试验提供详细的指标集合、试验和变体批量运行,为 CSV 和 HTML 文件启用数据驱动决策。

具有提示流的 GenAIOps 提供以下其他自定义功能:

  • 自带流 (BYOF) 提供了一个完整的平台,用于开发与 LLM 注入应用程序相关的多个用例。
  • 基于配置的开发意味着无需编写大量样板代码。
  • 提示试验和评估在本地和云中执行。
  • 本地快速评估笔记本提供用于本地试验的函数库。
  • 部署后,管道内的终结点测试检查终结点可用性和就绪情况。
  • 可选人工干预在部署前验证提示指标。

GenAIOps 阶段

GenAIOps 生命周期包括四个不同的阶段:

  • 初始化。 明确定义业务目标,收集相关数据示例,建立基本提示结构,并制定增强其功能的流。

  • 试验。 将流应用于示例数据,评估提示的性能,并根据需要优化流。 持续试验,直到对结果满意为止。

  • 评估和优化。 使用较大的数据集对流的性能进行基准测试,评估提示的有效性,并相应地进行优化。 如果结果满足所需标准,则进入下一阶段。

  • 部署。 优化流以提高效率和有效性,将其部署到包括 A/B 部署的生产环境中,监视其性能,收集用户反馈,并使用此信息进一步增强流。

通过遵循这种结构化方法,提示流使你能够自信地开发、严格测试、微调和部署流,从而创建可靠而复杂的 AI 应用程序。

GenAIOps 提示流模板使用代码优先方法正式化此结构化方法,并帮助你使用提示流工具和流程以及 GenAIOps 提示流功能构建 LLM 注入的应用。 此模板可在带有提示流模板的 GenAIOps 中获取。

GenAIOps 进程流

GenAIOps 提示流进程的屏幕截图。

  1. 在初始化阶段,可以开发流、准备和策展数据,以及更新与 GenAIOps 相关的配置文件。
  2. 使用带有提示流扩展的 Visual Studio Code 进行本地开发后,可以从功能分支向开发分支提出拉取请求 (PR),从而执行生成验证管道和试验流。
  3. PR 已手动批准,代码已合并到开发分支。
  4. PR 合并到开发分支后,将执行开发环境的持续集成 (CI) 管道。 CI 管道按顺序执行试验和评估流,并在 Azure 机器学习注册表中注册流,并执行管道中的其他步骤。
  5. CI 管道执行完成后,持续部署 (CD) 触发器将执行 CD 管道,该管道将 Azure 机器学习注册表中的标准流部署为 Azure 机器学习联机终结点。 然后,管道在部署的流上运行集成和冒烟测试。
  6. 从开发分支创建发布分支,或者从开发分支向发布分支提出 PR。
  7. PR 被手动批准,代码合并到发布分支。 将 PR 合并到发布分支后,将执行生产环境的 CI 管道。 该管道按顺序执行试验和评估流,并在 Azure 机器学习注册表中注册流,并执行管道中的其他步骤。
  8. CI 管道执行完成后,CD 触发器将执行 CD 管道,该管道将 Azure 机器学习注册表中的标准流部署为 Azure 机器学习联机终结点。 然后,管道在部署的流上运行集成和冒烟测试。

创建 GenAIOps 提示流

本文的其余部分介绍了如何按照带有提示流模板存储库的 GenAIOps 中的端到端示例将 GenAIOps 与提示流结合使用,从而帮助使用提示流和 GitHub 生成 LLM 注入的应用程序。 主要目标是使用提示流和 GenAIOps 的功能帮助开发这些应用程序。

先决条件

设置提示流连接

提示流使用连接资源连接到 Azure OpenAI、OpenAI 或 Azure AI 搜索终结点。 可以通过提示流门户 UI 或使用 REST API 创建连接。 有关详细信息,请参阅提示流中的连接

若要创建连接,请按照设置快速流连接中的说明进行操作。 示例流使用名为 aoai 的连接,因此请为连接指定该名称。

设置计算会话

提示流使用计算会话来执行流。 在执行提示流之前,创建并启动计算会话

设置 GitHub 存储库

若要在 GitHub 组织中创建分叉存储库,请按照设置 GitHub 存储库中的说明进行操作。 此存储库使用两个分支 maindevelopment 进行代码提升和管道执行。

若要创建新的本地存储库,请按照克隆存储库中的说明进行操作。 此克隆可帮助你从开发分支创建新的功能分支并合并更改。

在 GitHub 和 Azure 之间设置身份验证

此过程配置存储服务主体信息的 GitHub 机密。 若要自动连接到 Azure,存储库中的工作流可以使用机密名称读取连接信息。 有关详细信息,请参阅使用 GitHub Actions 连接到 Azure

  1. 按照创建 Azure 服务主体的说明创建服务主体。
  2. 按照使用 Azure 和 GitHub 设置身份验证的说明,使用服务主体在 GitHub 存储库和 Azure 服务之间设置身份验证。

测试管道

若要测试管道,请按照更新测试数据中的说明进行操作。 完整过程涉及以下步骤:

  1. 从功能分支向开发分支提出 PR。
  2. 由于分支策略配置,PR 管道会自动执行。
  3. PR 合并到开发分支。
  4. 关联的 dev 管道执行,从而完全执行 CI 和 CD,以及预配或更新 Azure 机器学习终结点。

输出应类似于示例提示运行、评估和部署应用场景中的示例。

使用本地执行

若要使用本地执行功能,请执行以下步骤。

  1. 克隆存储库,如下所示:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. 在顶级文件夹级别创建 .env 文件。 为每个连接添加行,更新占位符的值。 示例存储库中的示例使用名为 aoai 的 AzureOpenAI 连接和 API 版本 2024-02-01

    aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"}
    <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
    
  3. 准备本地 conda 或虚拟环境以安装依赖项。

    python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
    
  4. 根据如何加入新流中的说明,将流引入或写入模板中。

  5. local_execution 文件夹中编写与所提供示例类似的 Python 脚本。