整合提示流程與 LLM 型應用程式 DevOps

在本文中,您會了解如何在 Azure Machine Learning 中整合提示流程與 LLM 型應用程式 DevOps。 提示流程提供適合開發人員且易於使用的程式碼優先體驗,可供進行流程開發,並逐一查看整個 LLM 型應用程式開發工作流程。

其提供提示流程 SDK 和 CLIVS Code 延伸模組,以及流程資料夾總管的新 UI,促進本機流程開發、本機流程執行和評估執行觸發,以及將流程從本機轉換至雲端 (Azure Machine Learning 工作區) 環境。

本文件著重於如何有效地結合提示流程程式碼體驗和 DevOps 的功能,以增強 LLM 型應用程式開發工作流程。

Diagram of the showing the following flow: create flow, develop and test flow, versioning in code repo, submit runs to cloud, and debut and iteration.

提示流程中的程式碼優先體驗簡介

使用 LLM 開發應用程式時,通常會有包含程式碼存放庫和 CI/CD 管線的標準化應用程式工程程序。 此整合可讓您簡化小組成員之間的開發程序、版本控制及共同作業。

對於有程式碼開發經驗並且尋求更有效率 LLMOps 反覆運算程序的開發人員,可以透過提示流程程式碼體驗獲得下列重要功能和優點:

  • 程式碼存放庫中的流程版本設定。 您可以使用 YAML 格式定義您的流程,可與資料夾結構中參考的來源檔案保持一致。
  • 整合流程執行與 CI/CD 管線。 您可以使用提示流程 CLI 或 SDK 來觸發流程執行,可以順暢地整合到 CI/CD 管線和傳遞程序。
  • 從本機到雲端的平順轉換。 您可以輕鬆地將流程資料夾匯出至本機或程式碼存放庫,以進行版本控制、本機開發和共用。 同樣地,流程資料夾可以毫不費力地匯入回雲端,以進一步在雲端資源中撰寫、測試、部署。

存取提示流程程式碼定義

每個提示流程都會與流程資料夾結構相關聯,其中包含在程式碼資料夾結構中定義流程的基本檔案。 此資料夾結構會組織您的流程,促進更順暢的轉換。

Azure Machine Learning 為所有工作區使用者提供共用檔案系統。 建立流程時,會自動產生對應的流程資料夾,位於 Users/<username>/promptflow 目錄中。

Screenshot of standard flow creation showing the create a new flow.

流程資料夾結構

流程資料夾結構及其所包含金鑰檔案的概觀:

  • flow.dag.yaml:此主要流程定義檔案 (YAML 格式) 包含流程中使用的輸入、輸出、節點、工具和變體的相關資訊。 這是撰寫和定義提示流程不可或缺的一部分。
  • 原始程式碼檔案 (.py, .jinja2):流程資料夾也包含使用者管理的原始程式碼檔案,這些檔案是由流程中的工具/節點所參考。
    • Python (.py) 格式的檔案可由 Python 工具參考,以定義自訂 Python 邏輯。
    • Jinja 2 (.jinja2) 格式的檔案可由提示工具或 LLM 工具參考,以定義提示內容。
  • 非來源檔案:流程資料夾也可以包含非來源檔案,例如可包含在來源檔案中的公用程式檔案和資料檔案。

建立流程之後,您可以瀏覽至流程撰寫頁面,以在正確的檔案總管中檢視及操作流程檔案。 這可讓您檢視、編輯和管理檔案。 對檔案所做的任何修改都會直接反映在檔案共用儲存體中。

Screenshot of standard flow highlighting the files explorer.

開啟「原始檔案模式」後,您可以在檔案編輯器中檢視和編輯檔案的原始內容,包括流程定義檔案 flow.dag.yaml 和來源檔案。

Screenshot of raw file mode on a standard flow.

Screenshot of flow source file in a standard flow.

或者,您也可以直接存取 Azure Machine Learning 筆記本內的所有流程資料夾。

Screenshot of notebooks in Azure Machine Learning in the prompt flow folder showing the files.

程式碼存放庫中的版本設定提示流程

將流程簽入您的程式碼存放庫,您可以輕鬆地將流程資料夾從流程撰寫頁面匯出至本機系統。 這會下載套件,其中包含從總管到本機電腦的所有檔案,然後您可以將其簽入您的程式碼存放庫。

Screenshot of showing the download button in the file explorer.

如需 DevOps 與 Azure Machine Learning 整合的詳細資訊,請參閱 Azure Machine Learning 中的 Git 整合

從本機存放庫將執行提交至雲端

必要條件

  • 如果您還沒有 Azure Machine Learning 工作區,請完成建立資源以開始使用

  • 您已在其中安裝 Azure Machine Learning Python SDK v2 的 Python 環境 - 安裝指示。 此環境用於定義和控制您的 Azure Machine Learning 資源,與執行階段上使用的環境不同。 若要深入了解,請參閱針對提示流程工程如何管理執行階段

安裝提示流程 SDK

pip install -r ../../examples/requirements.txt

連線至 Azure Machine Learning 工作區

az login

準備 run.yml,以定義此流程執行在雲端中的設定。

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

column_mapping:
  url: ${data.url}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specify automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

您可以指定流程中每個工具的連線和部署名稱。 如果您未指定連線和部署名稱,則會在 flow.dag.yaml 檔案上使用一個連線和部署。 若要格式化連線:

...
connections:
  <node_name>:
    connection: <connection_name>
      deployment_name: <deployment_name>
...

pfazure run create --file run.yml

準備 run_evaluation.yml,以定義此評估流程執行在雲端中的設定。

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
run: <id of web-classification flow run>
column_mapping:
  groundtruth: ${data.answer}
  prediction: ${run.outputs.category}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specif automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

pfazure run create --file run_evaluation.yml

在 Azure Machine Learning 工作區中檢視執行結果

將流程執行提交至雲端會傳回執行的入口網站 URL。 您可以在入口網站中開啟 URI 檢視執行結果。

您也可以使用下列命令來檢視執行的結果。

串流記錄

pfazure run stream --name <run_name>

檢視執行輸出

pfazure run show-details --name <run_name>

檢視評估執行的計量

pfazure run show-metrics --name <evaluation_run_name>

重要

如需詳細資訊,請參閱適用於 Azure 的提示流程 CLI 文件

微調的反覆式開發

本機開發和測試

在反覆式開發期間,當您精簡並微調流程或提示時,在程式碼存放庫中本機執行多個反覆運算可能會很有幫助。 提供社群版本,提示流程 VS Code 延伸模組提示流程本機 SDK 和 CLI,促進在沒有 Azure 繫結的情況下進行純本機開發和測試。

提示流程 VS Code 延伸模組

安裝提示流程 VS Code 延伸模組之後,您可以輕鬆地從 VS Code 編輯器本機撰寫流程,該編輯器提供與雲端類似的 UI 體驗。

若要使用延伸模組:

  1. 在 VS Code Desktop 中開啟提示流程資料夾。
  2. 在筆記本檢視中開啟「flow.dag.yaml」檔案。
  3. 使用視覺效果編輯器對您的流程進行任何必要的變更,例如微調變體中的提示,或新增更多工具。
  4. 若要測試您的流程,請選取視覺效果編輯器頂端的 [執行流程] 按鈕。 這會觸發流程測試。

Screenshot of VS Code showing running the flow in the visual editor.

提示流程本機 SDK 和 CLI

如果您偏好使用 Jupyter、PyCharm、Visual Studio 或其他 IDE,您可以直接修改 flow.dag.yaml 檔案中的 YAML 定義。

Screenshot of a yaml file in VS Code highlighting the default input and flow directory.

接著,您可以使用提示流程 CLI 或 SDK 來觸發流程單一執行以進行測試。

假設您位於工作目錄 <path-to-the-sample-repo>/examples/flows/standard/

pf flow test --flow web-classification  # "web-classification" is the directory name

Screenshot of the flow test output in PowerShell.

這可讓您快速進行變更和測試變更,而不需要每次更新主要程式碼存放庫。 一旦您滿意本機測試的結果,您就可以轉換為從本機存放庫將執行提交至雲端,以在雲端中執行實驗執行。

如需使用本機版本的詳細資訊和指導,請參閱提示流程 GitHub 社群

返回工作室 UI 以持續開發

或者,您可以選擇返回工作室 UI,使用雲端資源和體驗,在流程撰寫頁面中變更您的流程。

若要繼續開發和使用最新版本的流程檔案,您可以在筆記本中存取終端機,並從存放庫提取流程檔案的最新變更。

此外,如果您偏好繼續在工作室 UI 中工作,您可以直接將本機流程資料夾匯入為新的草稿流程。 這可讓您順暢地在本機和雲端開發之間轉換。

Screenshot of the create a new flow panel with upload to local highlighted.

CI/CD 整合

CI:在 CI 管線中觸發流程執行

在您成功開發及測試流程,並將其簽入為初始版本之後,即可進行下一個微調和測試反覆項目。 在這個階段,您可以使用提示流程 CLI 來觸發流程執行,包括批次測試和評估執行。 這可作為持續整合 (CI) 管線中的自動化工作流程。

在整個流程反覆運算的生命週期中,可以自動化數個作業:

  • 在提取要求之後執行提示流程
  • 執行提示流程評估以確保結果是高品質
  • 註冊提示流程模型
  • 部署提示流程模型

如需執行 Web 分類流程的端對端 MLOps 管線完整指南,請參閱使用提示流程和 GitHub 設定端對端 LLMOpsGitHub 示範專案

CD:持續部署

移至生產環境的最後一個步驟是將您的流程部署為 Azure Machine Learning 中的線上端點。 這可讓您將流程整合到您的應用程式中,並使其可供使用。

如需如何部署流程的詳細資訊,請參閱使用 CLI 和 SDK 將流程部署至 Azure Machine Learning 受控線上端點以進行即時推斷

在生產環境中的流程開發上共同作業

在開發具有提示流程的 LLM 型應用程式內容中,小組成員之間的共同作業通常很重要。 小組成員可能會參與相同的流程撰寫和測試、處理流程的各種 Facet,或同時進行反覆式變更和增強功能。

這類共同作業需要有效率且簡化的方法,以共用程式碼、追蹤修改、管理版本,以及將這些變更整合到最終專案中。

引進提示流程 SDK/CLIVisual Studio Code 延伸模組,作為提示流程程式碼體驗的一部分,協助您在程式碼存放庫內的流程開發上輕鬆共同作業。 建議您利用雲端式程式碼存放庫,例如 GitHub 或 Azure DevOps,來追蹤變更、管理版本,以及將這些修改整合到最終專案中。

共同開發的最佳做法

  1. 在本機撰寫和單一測試您的流程 - 程式碼存放庫和 VSC 延伸模組

    • 此共同作業程序的第一個步驟涉及使用程式碼存放庫作為專案程式碼的基底,其中包含提示流程程式碼。
      • 此集中式存放庫可讓您有效率的組織、追蹤所有程式碼變更,以及在小組成員之間共同作業。
    • 設定存放庫之後,小組成員就可以使用 VSC 延伸模組進行流程的本機撰寫和單一輸入測試。
      • 這種標準化整合式開發環境可促進在流程不同層面工作的多個成員之間的共同作業。 Screenshot of local development.
  2. 雲端式實驗批次測試和評估 - 提示流程 CLI/SDK 和工作區入口網站 UI

    • 在本機開發和測試階段之後,流程開發人員可以使用 Azure CLI 或 SDK,將批次執行和評估執行從本機流程檔案提交至雲端。
      • 此動作可讓您使用 Azure Machine Learning 工作區中的入口網站 UI,持續且有效率地儲存及管理雲端資源耗用結果。 此步驟允許雲端資源耗用量,包括計算和儲存體,以及部署的進一步端點。 Screenshot of pfazure command to submit run to cloud.
    • 在提交至雲端之後,小組成員可以存取雲端入口網站 UI,以有效率地檢視結果及管理實驗。
      • 此雲端工作區提供集中式位置,用於收集和管理所有執行歷程記錄、記錄、快照集、完整結果,包括執行個體層級輸入和輸出。 Screenshot of cloud run snapshot.
      • 在記錄開發期間所有執行歷程記錄的執行清單中,小組成員可以輕易比較不同執行的結果,協助進行品質分析和必要調整。 Screenshot of run list in workspace. Screenshot of run comparison in workspace.
  3. 生產環境的本機反覆式開發或單步驟 UI 部署

    • 在分析實驗之後,小組成員可以返回程式碼存放庫,以進行另一個開發和微調。 後續執行接著可以反覆方式提交至雲端。
      • 此反覆方法可確保持續增強,直到小組滿意品質可供生產環境使用為止。
    • 一旦小組完全確信流程的品質,就可以透過 UI 精靈順暢地部署為 Azure Machine Learning 中的線上端點。 一旦小組對流程的品質完全有信心,就可以透過 UI 部署精靈順暢地轉換為生產環境,成為強固雲端環境中的線上端點。
      • 在線上端點上的此部署可以根據執行快照集,提供穩定且安全的服務、進一步的資源配置和使用量追蹤,以及雲端中的記錄監視。 Screenshot of deploying flow from a run snapshot. Screenshot of deploy wizard.

為什麼我們會建議使用程式碼存放庫進行共同開發

針對反覆式開發,本機開發環境和版本控制系統的組合 (例如 Git) 通常更有效率。 您可以在本機進行修改並測試程式碼,然後將變更認可至 Git。 這會建立您變更的持續記錄,並且可在必要時還原為舊版。

需要跨不同環境共用流程時,建議使用 GitHub 或 Azure Repos 等雲端式程式碼存放庫。 這可讓您從任何位置存取最新版本的程式碼,並提供共同作業和程式碼管理的工具。

遵循此最佳做法,小組可以建立順暢、有效率且有生產力的共同作業環境,以進行提示流程開發。

下一步