你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
随着对大型语言模型(LLM)注入应用程序的需求飙升,组织需要一个凝聚力和简化的过程来管理这些应用的端到端生命周期。 生成式人工智能运营 (GenAIOps),有时也称为 LLMOps,是高效提示工程和注入 LLM 的应用程序开发与部署的基石。
本文介绍如何使用 Azure 机器学习与 GitHub 集成,以使用 提示流自动完成 LLM 注入的应用程序开发生命周期。 提示流提供了一种简化且结构化的方法来开发注入 LLM 的应用程序。 其定义明确的流程和生命周期指导你完成流的构建、测试、优化和部署,最终创建功能完善的注入 LLM 的解决方案。
Prerequisites
- 具有 Azure 机器学习免费版或付费版的 Azure 订阅。
- Azure 机器学习工作区。
- 本地机器上运行的 Git 2.27 或更高版本,能够创建 GitHub 源代码控制存储库。
- 了解如何将 GenAIOps 与提示流集成。
创建 GenAIOps 提示流
本文演示如何按照带有提示流的 GenAIOps 模板存储库中的端到端示例使用带有提示流的 GenAIOps。 主要目标是通过利用提示流和 GenAIOps 的功能,为这些应用程序的开发提供帮助。
设置提示流连接
提示流使用连接资源连接到 Azure OpenAI、OpenAI 或 Azure AI Search 终结点。 你可以通过提示流门户 UI 或 REST API 创建连接。 有关详细信息,请参阅提示流中的连接。
要创建连接,请按照提示流的连接设置中的说明操作。 示例流使用名为 aoai 的连接,因此请将你的连接命名为该名称。
设置计算会话
提示流使用计算会话来运行流。 在运行提示流之前创建和管理提示流计算会话 。
设置 GitHub 存储库
若要在 GitHub 组织中创建分叉存储库,请按照说明 设置 GitHub 存储库。 该存储库使用两个分支(main 和 development)进行代码推广和管道执行。
若要创建新的本地存储库,请按照说明 克隆存储库。 此克隆帮助你从开发分支创建新的功能分支并整合更改。
在 GitHub 和 Azure 之间设置身份验证
此过程会配置一个存储服务主体信息的 GitHub 密钥。 要自动连接到 Azure,存储库中的工作流可以通过密钥名称读取连接信息。 有关详细信息,请参阅使用 GitHub Actions 连接到 Azure。
- 按照创建 Azure 服务主体中的说明创建服务主体。
- 按照 Azure 和 GitHub 的身份验证设置中的说明,使用服务主体设置 GitHub 存储库与 Azure 服务之间的身份验证。
测试管道
要测试管道,请按照更新测试数据中的说明操作。 完整流程包括以下步骤:
将功能分支中的拉取请求提交到开发分支。
分支策略配置会自动运行拉取请求管道。
将拉取请求合并到开发分支。
关联的
dev管道运行,从而实现完整执行持续集成(CI)和持续部署(CD),并配置或更新 Azure 机器学习终结点。
输出应与示例提示运行、评估和部署场景中的示例类似。
使用本地执行
要使用本地执行功能,请按照以下步骤操作。
克隆存储库。
git clone https://github.com/microsoft/genaiops-promptflow-template.git在顶层文件夹创建 .env 文件。 为每个连接添加行,并更新占位符的值。 示例存储库中的示例使用名为
aoai且 API 版本为2024-02-01的 AzureOpenAI 连接。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>"}准备本地 conda 或虚拟环境以安装依赖项。
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv根据新流的接入方法中的说明,将你的流引入或写入模板。
在 local_execution 文件夹中编写与提供的示例类似的 Python 脚本。
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 相关的配置文件。
- 使用 Visual Studio Code 和 Prompt Flow 扩展进行本地开发后,会将功能分支中的拉取请求提交到开发分支。 拉取请求运行构建验证管道和实验流。
- 手动批准拉取请求并将代码合并到开发分支。
- 拉取请求合并到开发分支后,开发环境的持续集成 (CI) 管道就会运行。 CI 管道按顺序运行试验和评估流,并将流注册到 Azure 机器学习注册表中,这与管道中的其他步骤分开。
- CI 管道执行完成后,持续部署(CD)触发器将运行 CD 管道,该管道将 Azure 机器学习注册表中的标准流部署为 Azure 机器学习联机终结点。 然后,管道在部署的流上运行集成测试和冒烟测试。
- 从开发分支创建发布分支,或从开发分支向发布分支提出拉取请求。
- 你可以手动批准拉取请求并将代码合并到发布分支。 当拉取请求合并到发布分支后,生产环境的 CI 管道就会运行。 管道按顺序运行试验和评估流,并将流注册到 Azure 机器学习注册表中,这与管道中的其他步骤分开。
- CI 管道执行完成后,CD 触发器会运行 CD 管道,该管道将 Azure 机器学习注册表中的标准流部署为 Azure 机器学习联机终结点。 然后,管道在部署的流上运行集成测试和冒烟测试。