共用方式為


具有提示流程和 Azure DevOps 的 GenAIOps

隨著 LLM 注入應用程式的需求飆升,組織需要一個一致且簡化的程式來管理這些應用程式的端對端生命週期。 產生人工智慧作業(GenAIOps),有時稱為 LLMOps,是有效提示工程和 LLM 注入應用程式開發和部署的基石。

本文說明 Azure 機器學習 如何讓您與 Azure DevOps 整合,以使用提示流程將 LLM 注入的應用程式開發生命周期自動化。 提示流程提供簡化且結構化的方法,以開發 LLM 注入的應用程式。 其定義完善的程式與生命週期會引導您完成建置、測試、優化和部署流程的程式,最終建立功能完整的 LLM 注入解決方案。

GenAIOps 提示流程功能

具有提示流程 的 GenAIOps 會使用 GenAIOps 範本和指引,協助您使用提示流程建置 LLM 內嵌的應用程式。 具有提示流程的 GenAIOps 具有簡單或複雜的 LLM 注入應用程式的功能,並可自定義為應用程式的需求。

具有提示流程平臺的 GenAIOps 提供下列功能:

  • 集中式程式代碼裝載。 存放庫支援裝載多個提示流程的程序代碼,為您的所有流程提供單一存放庫。 此存放庫就像是流程的連結庫,可讓您輕鬆地在不同的項目上尋找、存取及共同作業。

  • 生命週期管理。 每個流程都有自己的生命週期,提供從本機實驗到生產部署的順暢轉換。

  • Variant 和超參數實驗。 變體和超參數就像食譜中的成分。 平臺可讓您實驗流程中多個節點的不同變體組合。 您可以實驗多個變體和超參數,以輕鬆評估流程變異。

  • 多個部署目標。 平臺會產生您的流程和計算會話所注入的 Docker 映射,以部署到任何支援 Docker 的目標平臺和作業系統。 您可以將流程部署至 Azure App 服務、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 機器學習 Registry 部署為 Azure 機器學習 在線端點。 管線接著會在已部署的流程上執行整合和煙霧測試。
  6. 發行分支是從開發分支建立,或從開發分支引發PR至發行分支。
  7. PR 已手動核准,並將程式碼合併至發行分支。 將PR合併至發行分支之後,生產環境的 CI 管線就會執行。 管線會依序執行實驗和評估流程,並在 Azure 機器學習 登錄中註冊流程,除了管線中的其他步驟之外。
  8. CI 管線執行完成之後,CD 觸發程式會執行CD管線,其會將標準流程從 Azure 機器學習 Registry 部署為 Azure 機器學習 在線端點。 管線接著會在已部署的流程上執行整合和煙霧測試。

建立 GenAIOps 提示流程

本文的其餘部分會示範如何使用 GenAIOps 搭配提示流程,方法是遵循 GenAIOps 中的端對端範例 搭配提示流程範本存放庫,以協助您使用提示流程和 Azure DevOps 建置 LLM 注入的應用程式。 主要目標是使用提示流程和 GenAIOps 的功能,協助開發這些應用程式。

必要條件

注意

如果您使用 Azure DevOps 和 Terraform 來啟動基礎結構,則需要安裝適用於 Azure DevOpsTerraform 擴充功能。

設定提示流程連線

提示流程會使用連線資源連線到 Azure OpenAI、OpenAI 或 Azure AI 搜尋端點。 您可以透過提示流程入口網站 UI 或使用 REST API 來建立連線。 如需詳細資訊,請參閱 提示流程中的連線。

若要建立連線,請依照設定提示流程的連線中的指示操作。 範例流程會使用名為 aoai的連線,因此請為聯機指定該名稱。

設定計算會話

提示流程會使用計算會話來執行流程。 在執行提示流程之前,請先建立並啟動計算會話

設定 Azure Repos 存放庫

若要在 Azure DevOps 組織中建立分支存放庫,請遵循設定 GitHub 存放庫中的指示。 此存放庫使用兩個分支 和 main development,進行程式代碼升級和管線執行。

若要建立新的本機存放庫,請遵循複製存放庫中的指示。 此複製可協助您從開發分支建立新的功能分支,並納入變更。

設定 Azure 服務主體

Azure 服務主體是應用程式、服務和自動化工具用來存取 Azure 資源的安全性身分識別。 應用程式或服務會向 Azure 進行驗證,以代表您存取資源。

依照建立 Azure 服務主體的 指示建立服務主體。 您可以使用此服務主體來設定 Azure DevOps Services 連線,並允許 Azure DevOps Services 驗證並連線到 Azure 服務。 提示流程實驗和評估作業都會在服務主體的身分識別下執行。

安裝程式為服務主體提供擁有者許可權,讓 CD 管線可以自動提供新布建的 Azure 機器學習 端點,以存取 Azure 機器學習 工作區來讀取連線資訊。 管線也會將端點新增至與具有 getlist 秘密許可權的 Azure 機器學習 工作區相關聯的密鑰保存庫原則。 您可以變更管線 YAML 程式代碼,以移除與許可權相關的步驟,將擁有者許可權變更參與者層級許可權。

建立新的 Azure DevOps 專案

若要在 Azure DevOps UI 中建立新專案,請遵循建立新的 Azure DevOps 專案中的指示。

設定 Azure DevOps 與 Azure 之間的驗證

此步驟會設定新的 Azure DevOps 服務連線,以儲存服務主體資訊。 專案管線可以使用聯機名稱自動連線到 Azure 來讀取連線資訊。 若要使用您建立的服務主體來設定 Azure DevOps 與 Azure 服務之間的驗證,請遵循使用 Azure 和 Azure DevOps 設定驗證中的指示。

建立 Azure DevOps 變數群組

若要建立新的變數群組,並新增與 Azure DevOps 服務連線相關的變數,請遵循建立 Azure DevOps 變數群組中的指示。 然後,管線會自動以環境變數的形式使用服務主體名稱。

設定 Azure Repos 和 Azure Pipelines

範例存放庫使用兩個分支 maindevelopment,進行程式代碼升級和管線執行。 若要設定您自己的本機和遠端存放庫以使用範例存放庫的程式代碼,請遵循設定 Azure DevOps 本機和遠端存放庫中的指示。

您可以從範例存放庫複製 maindevelopment 分支,並將程式代碼關聯至新的 Azure Repos 存放庫。 PR 和開發管線都會設定為根據PR建立和合併觸發程式自動執行。

分支的 development 分支原則已設定為針對從功能分支在開發分支上引發的任何 PR 執行 PR 管線。 當 PR 合併至開發分支時,管 dev 線會執行,並同時包含 CI 和 CD 階段。

迴圈 中的人類也會在管線內實作。 在管線中的 dev CI 階段執行之後,CD 階段會在 Azure Pipelines 組建執行 UI 中提供手動核准之後進行。

等候核准的默認時間為 60 分鐘,之後管線會遭到拒絕,且 CD 階段不會執行。 手動核准執行會執行管線的CD步驟。

範例管線中的手動核准已設定為將通知傳送至 replace@youremail.com。 將佔位元取代為適當的電子郵件位址。

測試管線

若要測試管線,請遵循測試管線中的指示。 完整程式牽涉到下列步驟:

  1. 您會將PR從功能分支引發至開發分支。
  2. PR 管線會因為分支原則設定而自動執行。
  3. PR 會合併至開發分支。
  4. 相關聯的dev管線會執行,導致 Azure 機器學習 端點的完整 CI 和 CD 執行和布建或更新。

在範例提示字元執行、評估和部署案例,輸出看起來應該類似範例。

使用本機執行

若要使用 本機執行 功能,請遵循下列步驟。

  1. 複製存放庫,如下所示:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. 在最上層資料夾層級建立 .env 檔案。 為每個連接新增行,並更新佔位元的值。 範例存放庫中的範例會使用名為 aoai 和 API 版本的 2024-02-01AzureOpenAI 連線。

    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 腳本。