共用方式為


在提示流程中整合 LangChain

LangChain Python 連結庫是一種架構,可開發由大型語言模型(LLM)、代理程式和相依性工具提供的應用程式。 本文說明如何使用 Azure 機器學習 提示流程來增加 LangChain 開發功能。

具有 langchain Python 連結庫之流程的螢幕快照。

LangChain 與提示流程整合是一個功能強大的組合,可協助您輕鬆建置及測試自定義語言模型。 您可以使用 LangChain 模組來建置流程,然後使用提示流程程式來調整大量測試、評估和最終部署的實驗。 例如,您可以根據較大的數據集進行大規模的實驗。

如果您已經有以 LangChain 程式代碼為基礎的本機提示流程,您可以輕鬆地將它轉換成 Azure 機器學習 提示流程,以進行進一步的實驗。 或者,如果您想要直接使用 LangChain SDK 類別和函式,您可以使用使用自定義 LangChain 程式代碼的 Python 節點,輕鬆地建置 Azure 機器學習 流程。

必要條件

  • 已正確測試並準備好進行部署的本機 LangChain 流程。
  • 計算會話,可藉由新增requirements.txt檔案中列出的套件,包括 langchain來執行 機器學習 提示流程。 如需詳細資訊,請參閱 管理提示流程計算會話

將 LangChain 程式代碼轉換成提示流程

使用下列程式,將本機 LangChain 程式代碼轉換成可執行的 Azure 機器學習 提示流程。

將認證轉換為提示流程連線

您的 LangChain 程式代碼可能會 定義環境變數 來儲存認證,例如叫用 AzureOpenAI 模型所需的 AzureOpenAI API 密鑰。 例如,下列程式代碼顯示針對 OpenAI API 類型、金鑰、基底和版本所設定的環境變數。

os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
os.environ["OPENAI_API_BASE"] = "https://contosobamiopenai.openai.azure.com/"
os.environ["OPENAI_API_KEY"] = "abc123abc123abc123abc123abc123ab"

當您在雲端中執行 Azure 機器學習 提示流程時,最好不要將認證公開為環境變數。 若要安全地儲存和管理程式碼中的認證,您應該將環境變數轉換成提示流程連線。

若要建立可安全地儲存自定義認證的連線,例如 LLM API 金鑰或其他必要金鑰,請遵循下列指示:

  1. 在 Azure 機器學習 工作區的 [提示流程] 頁面上,選取 [連線] 索引標籤,然後選取 [建立]。

  2. 從下拉式清單中選取連線類型。 在此範例中,選取 [ 自定義]。

    在 [提示流程] 頁面的 [連線] 索引標籤上選取 [建立],然後選取 [自定義] 的螢幕快照。

  3. 在右窗格中,定義您的連線名稱,然後選取 [新增金鑰/值組],以儲存您的認證和密鑰。

    新增自定義連線機碼/值組的螢幕快照。

  4. 若要儲存金鑰的加密值,請選取 一或多個金鑰/值組旁的 [是秘密 ] 複選框。 您必須將至少一個值設定為秘密,才能成功建立自定義連線。

  5. 選取儲存

自定義連線可以取代密鑰和認證,或 LangChain 程式代碼中明確定義的對應環境變數。 若要在流程中使用自定義連線,請參閱 設定連線

將 LangChain 程式代碼轉換為可執行的流程

若要建立流程,請在 Azure Machine Learning 工作室 的 [提示流程] 頁面上選取 [建立],然後選擇流程類型。 在流程撰寫頁面上,在您撰寫流程之前,請先啟動計算會話。 選取頁面頂端的工具類型,以將對應的節點插入流程中。 如需詳細的流程撰寫指示,請參閱 開發提示流程

只要計算會話包含 langchain 套件相依性,所有 LangChain 程式代碼都可以直接在流程中的 Python 節點中執行。

有兩種方式可將 LangChain 程式代碼轉換成 Azure 機器學習 提示流程。 要實作的流程類型取決於您的使用案例。

  • 為了獲得更好的實驗管理,您可以將程式代碼轉換成使用 Azure 機器學習 Python,並在流程中提示工具。 您會將提示範本從程式代碼擷取到提示節點,並將其餘程序代碼放在單一或多個 Python 節點或工具中。 此選項可協助您藉由執行變體輕鬆地微調提示,並可讓您根據評估結果選擇最佳提示。

    下列範例顯示同時使用提示節點和 Python 節點的流程:

    將提示按鈕和系統範本醒目提示之流程的螢幕擷取畫面。

  • 如需更簡單的轉換程式,您可以直接從 Python 節點內呼叫 LangChain LLM 連結庫。 所有程式代碼都會在 Python 節點中執行,包括提示定義。 此選項支持根據較大的數據集或其他組態更快速的批次測試。

    下列範例顯示僅使用 Python 節點的流程:

    顯示 LangChain 程式碼節點和圖表之流程的螢幕擷取畫面。

設定連線

在您建構流程並將程式代碼移至特定工具節點之後,您需要將原始環境變數取代為來自連線的對應密鑰。 若要使用您建立的自定義連線,請遵循下列步驟:

  1. 在 Python 程式代碼中,輸入 來匯入自定義連線連結庫
    from promptflow.connections import CustomConnection.

    注意

    若要匯入 Azure OpenAI 連線,請使用 from promptflow.connections import AzureOpenAIConnection

  2. 在您的工具函式中,定義 類型的 CustomConnection輸入參數。

    醒目提示自訂連線的文件搜尋鏈結節點螢幕擷取畫面。

  3. 將原本定義金鑰或認證的環境變數取代為來自連線的對應密鑰。

  4. 剖析節點 UI 之輸入區段的輸入,然後從 UI 中的 [值 ] 下拉式清單中選取您的自定義連線。

    醒目提示連線的鏈結節點螢幕擷取畫面。

  5. 請務必在任何其他需要它們的節點中設定連線參數,例如 LLM 節點。

設定輸入與輸出

執行流程之前,請先設定節點輸入和輸出,以及整體流程輸入和輸出。 此步驟對於確保所有必要的數據都能正確通過流程併產生所需的結果至關重要。 如需詳細資訊,請參閱 流程輸入和輸出