This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
常见问题解答在这里
大型语言模型操作(LLMOps)已成为高效提示工程和 LLM 诱导的应用程序开发和部署的基石。随着对 LLM 引发的申请的需求持续飙升,组织发现自己需要一个有凝聚力且简化的流程来管理其端到端生命周期。
人工智能和大型语言模型 (LLM) 的兴起已经改变了各个行业,使得具有类人文本理解和生成能力的创新应用程序的开发成为可能。这场革命为客户服务、内容创建和数据分析等领域开辟了新的可能性。
随着法学硕士的迅速发展,即时工程的重要性变得越来越明显。提示工程通过创建适合特定业务场景的有效提示,在充分发挥法学硕士潜力方面发挥着至关重要的作用。这一过程使开发人员能够创建量身定制的人工智能解决方案,使人工智能对更广泛的受众来说更容易访问和有用。
它是 Prompt Flow 的实验和评估框架。它只是不是用于 Prompt Flow 的 CI/CD 管道,尽管它支持它。它具有丰富的功能集,用于 Prompt Flow 的实验、评估、部署和监控。它是 Prompt Flow 运营的完整端到端解决方案。
该模板支持 Azure AI Studio 和 Azure 机器学习。根据配置,该模板可用于 Azure AI Studio 和 Azure 机器学习。它为跨服务的 Prompt Flow 实验、评估和部署提供无缝迁移体验。
该模板支持不同类型的流程,允许您根据您的特定要求定义和执行工作流程。支持的两种主要流程类型是:
灵活的流程
有向无环图 (DAG) 流
该项目的强大功能之一是它能够自动检测流类型并相应地执行流。这使您可以尝试不同的流量类型并选择最适合您需求的一种。
该模板支持:
管理基于大型语言的流程(从本地实验到生产部署)远非简单,也不是一项一刀切的任务。
每个流程都有其独特的生命周期,从最初的实验到部署,每个阶段都有自己的挑战。
组织经常同时处理多个流程,每个流程都有其目标、要求和复杂性。如果没有适当的管理工具,这很快就会变得难以承受。
它涉及处理多个流、其独特的生命周期、各种配置的实验以及确保顺利部署。
这就是LLMOps with Prompt flow的用武之地。LLMOps with Prompt flow 是一个“LLMOps 模板和指南”,可帮助您使用 Prompt flow 构建注入 LLM 的应用程序。它提供以下功能:
集中代码托管:此存储库支持基于提示流托管多个流的代码,为所有流提供单个存储库。将此平台视为所有提示流代码所在的单个存储库。它就像一个流程库,可以轻松查找、访问和协作不同的项目。
生命周期管理:每个流程都有自己的生命周期,可以从本地实验顺利过渡到生产部署。
变体和超参数实验:使用多个变体和超参数进行实验,轻松评估流变体。变体和超参数就像菜谱中的成分。该平台允许您在流程中的多个节点上尝试不同的变体组合。
A/B 部署:无缝实施 A/B 部署,使您能够轻松比较不同的流程版本。正如传统的网站 A/B 测试一样,该平台有助于快速流程的 A/B 部署。这意味着您可以轻松地在现实环境中比较流程的不同版本,以确定哪个版本性能最佳。
多对多数据集/流程关系:为每个标准和评估流程容纳多个数据集,确保流程测试和评估的多功能性。该平台旨在为每个流程容纳多个数据集。
多个部署目标:存储库支持通过配置将流部署到 Kubernetes 和 Azure 托管计算,确保您的流可以根据需要进行扩展。
综合报告:为每个变体配置生成详细报告,使您能够做出明智的决策。为所有变体批量运行和实验提供详细的指标收集,从而在 csv 和 HTML 文件中实现数据驱动的决策。
提供 BYOF(自带流程)。用于开发与法学硕士应用程序相关的多个用例的完整平台。
提供基于配置的开发。无需编写大量的样板代码。
提供在本地以及云端执行即时实验和评估的能力。
提供用于本地评估提示的笔记本。提供用于本地实验的函数库。
部署后在管道内进行端点测试,以检查其可用性和准备情况。
提供可选的人机交互以在部署前验证提示指标。
具有提示流程的 LLMOps 为简单和复杂的 LLM 注入应用程序提供了功能。它完全可以根据应用程序的需求进行定制。
每个用例(提示流标准和评估流集)应遵循如下所示的文件夹结构:
此外,还有一个用于配置用例的experiment.yaml
文件(有关更多详细信息,请参阅文件描述和规格)。还有一个 Sample-request.json 文件,其中包含用于在部署后测试端点的测试数据。
“.azure-pipelines”文件夹包含该平台的常见 Azure DevOps 管道,对它们的任何更改都将影响所有流程的执行。
“.github”文件夹包含该平台的 Github 工作流程以及用例。这与 Azure DevOps 略有不同,因为所有 Github 工作流都应在这个文件夹中执行。
“.jenkins”文件夹包含平台的 Jenkins 声明性管道以及用例和单个作业。
“docs”文件夹包含 Azure DevOps、Github 工作流和 Jenkins 相关配置的分步指南文档。
“llmops”文件夹包含与流程执行、评估和部署相关的所有代码。
“dataops”文件夹包含与数据管道部署相关的所有代码。
“local_execution”文件夹包含用于在本地执行标准流程和评估流程的 python 脚本。
该项目包括 6 个示例,展示不同的场景:
位置:./web_classification 重要性:演示具有多个变体的网站内容摘要,展示模板中可用的灵活性和自定义选项。
位置:./named_entity_recognition 重要性:展示从文本中提取命名实体,这对于各种自然语言处理任务和信息提取很有价值。
位置:./math_coding 重要性:展示执行数学计算和生成代码片段的能力,突出模板在处理计算任务方面的多功能性。
位置:./chat_with_pdf 重要性:演示用于与 PDF 文档交互的对话界面,利用检索增强生成 (RAG) 的功能提供准确且相关的响应。
位置:./function_flows 重要性:演示根据用户提示生成代码片段,展示自动化代码生成任务的潜力。
位置:./class_flows 重要性:展示使用基于类的流构建的聊天应用程序,说明更复杂的对话界面的结构和组织。
该存储库有助于部署到Kubernetes、Kubernetes ARC、Azure Web Apps 和 AzureML 托管计算以及 AzureML 托管计算的A/B 部署。
管道执行由多个阶段和每个阶段中的作业组成:
该存储库生成多个报告(显示实验运行和指标示例):
要利用本地执行的功能,请按照以下安装步骤操作:
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
的 AzureOpenAI 连接。添加一行aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
其中包含 api_key 和 api_base 的更新值。如果您的流中使用了具有不同名称的其他连接,则应相应地添加它们。目前,使用 AzureOpenAI 作为支持的提供者进行流程。 experiment_name=
connection_name_1={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
connection_name_2={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
根据此处的文档将您的流程引入或写入模板中。
编写类似于 local_execution 文件夹中提供的示例的 python 脚本。
DataOps 结合了 DevOps、敏捷方法和数据管理实践的各个方面,以简化收集、处理和分析数据的过程。 DataOps 可以帮助规范构建 LLM 应用程序开发所需的数据集(培训、实验、评估等)。
数据管道与即时工程流程分开。数据管道创建数据集,并将数据集注册为 Azure ML 中的数据资产以供流使用。这种方法有助于独立扩展系统的不同部分并进行故障排除。
有关如何开始使用 DataOps 的详细信息,请参阅本文档 - 如何配置 DataOps。
该项目欢迎贡献和建议。大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。
该项目可能包含项目、产品或服务的商标或徽标。 Microsoft 商标或徽标的授权使用须遵守且必须遵循 Microsoft 的商标和品牌指南。在此项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。对第三方商标或徽标的任何使用均须遵守这些第三方的政策。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。
版权所有 (c) Microsoft Corporation。版权所有。
根据 MIT 许可证获得许可。