具有提示流程和 GitHub 的 GenAIOps
隨著 LLM 注入應用程式的需求飆升,組織需要一個一致且簡化的程式來管理這些應用程式的端對端生命週期。 產生人工智慧作業(GenAIOps),有時稱為 LLMOps,是有效提示工程和 LLM 注入應用程式開發和部署的基石。
本文說明 Azure 機器學習 如何讓您與 GitHub 整合,以使用提示流程將 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 相關組態檔。
- 使用 Visual Studio Code 搭配提示流程延伸模組進行本機開發之後,您會將提取要求 (PR) 從功能分支引發至開發分支,以執行組建驗證管線和實驗流程。
- PR 會手動核准,並將程式代碼合併至開發分支。
- 在PR合併至開發分支之後,開發環境的持續整合 (CI) 管線就會執行。 CI 管線會依序執行實驗和評估流程,並在 Azure 機器學習 登錄中註冊流程,除了管線中的其他步驟之外。
- CI 管線執行完成之後,持續部署 (CD) 觸發程式會執行 CD 管線,其會將標準流程從 Azure 機器學習 Registry 部署為 Azure 機器學習 在線端點。 管線接著會在已部署的流程上執行整合和煙霧測試。
- 發行分支是從開發分支建立,或從開發分支引發PR至發行分支。
- PR 已手動核准,並將程式碼合併至發行分支。 將PR合併至發行分支之後,生產環境的 CI 管線就會執行。 管線會依序執行實驗和評估流程,並在 Azure 機器學習 登錄中註冊流程,除了管線中的其他步驟之外。
- CI 管線執行完成之後,CD 觸發程式會執行CD管線,其會將標準流程從 Azure 機器學習 Registry 部署為 Azure 機器學習 在線端點。 管線接著會在已部署的流程上執行整合和煙霧測試。
建立 GenAIOps 提示流程
本文的其餘部分說明如何遵循 GenAIOps 中的端對端範例 搭配提示流程使用 GenAIOps 與提示流程範本存放庫,以協助您使用提示流程和 GitHub 建置 LLM 注入的應用程式。 主要目標是使用提示流程和 GenAIOps 的功能,協助開發這些應用程式。
必要條件
- Azure 訂用帳戶,具有免費或付費版本的 Azure 機器學習。
- Azure Machine Learning 工作區。
- 在本機計算機上執行的 Git 2.27 版或更新版本 ,能夠建立 GitHub 原始檔控制存放庫。
- 瞭解如何整合 GenAIOps 與提示流程。
設定提示流程連線
提示流程會使用連線資源連線到 Azure OpenAI、OpenAI 或 Azure AI 搜尋端點。 您可以透過提示流程入口網站 UI 或使用 REST API 來建立連線。 如需詳細資訊,請參閱 提示流程中的連線。
若要建立連線,請依照設定提示流程的連線中的指示操作。 範例流程會使用名為 aoai
的連線,因此請為聯機指定該名稱。
設定計算會話
提示流程會使用計算會話來執行流程。 在執行提示流程之前,請先建立並啟動計算會話 。
設定 GitHub 存放庫
若要在 GitHub 組織中建立分支存放庫,請遵循設定 GitHub 存放庫中的指示。 此存放庫使用兩個分支 和 main
development
,進行程式代碼升級和管線執行。
若要建立新的本機存放庫,請遵循複製存放庫中的指示。 此複製可協助您從開發分支建立新的功能分支,並納入變更。
設定 GitHub 與 Azure 之間的驗證
此程式會設定儲存服務主體資訊的 GitHub 秘密。 若要自動連線到 Azure,存放庫中的工作流程可以使用秘密名稱來讀取連線資訊。 如需詳細資訊,請參閱 使用 GitHub Actions 連線到 Azure。
測試管線
若要測試管線,請遵循更新測試數據的指示。 完整程式牽涉到下列步驟:
- 您會將PR從功能分支引發至開發分支。
- PR 管線會因為分支原則設定而自動執行。
- PR 會合併至開發分支。
- 相關聯的
dev
管線會執行,導致 Azure 機器學習 端點的完整 CI 和 CD 執行和布建或更新。
在範例提示字元執行、評估和部署案例中,輸出看起來應該類似範例。
使用本機執行
若要使用 本機執行 功能,請遵循下列步驟。
複製存放庫,如下所示:
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 腳本。