共用方式為


開發流程

提示流程是一種開發工具,旨在簡化由大型語言模型 (LLM) 提供之 AI 應用程式的整個開發週期。 隨著 LLM 型 AI 應用程式的浪潮持續席捲全球,提示流程提供了全方位的解決方案,可簡化原型設計、實驗、反覆執行和部署 AI 應用程式的流程。

擁有提示流程,您將能夠:

  • 透過視覺化圖表,使用 LLM、提示和 Python 工具協調可執行流程。
  • 輕鬆完成流程的測試、偵錯和反覆執行。
  • 建立提示變數並比較其效能。

在本文中,您將瞭解如何在 Azure Machine Learning Studio 中建立及開發您的第一個提示流程。

建立及開發您的提示流程

在 [工作室] 中,選取左側導覽列中的 [提示流程] 索引標籤。 選取 [建立] 以建立您的第一個提示流程。 建立流程時,您可以複製資源庫中可用的範例,或從頭開始建立。 如果在本機或檔案共用中已經有流程檔案,您也可以匯入檔案來建立流程。

從頭開始建立提示流程或資源庫的螢幕擷取畫面。

撰寫流程

左側為扁平化檢視,是供您撰寫流程的主要工作區,例如可在流程中新增工具、編輯提示、設定流程輸入資料、執行流程、檢視輸出等等。

提示流程主要工作區的螢幕擷取畫面。

右上方是流程檔案檢視。 每個流都可以由一個包含了「flow.dag.yaml」檔案、原始程式碼檔案和系統資料夾的資料夾來表示。 您可以新增檔案、編輯現有的檔案,以及刪除檔案。 您也可以將檔案匯出至本機,或從本機匯入檔案。

除了在扁平化檢視中直接編輯節點之外,您還可以開啟 [原始檔案模式] 切換,然後選取檔名以在 [開啟的檔案] 索引標籤中編輯檔案。

右下角是只有視覺效果的圖表檢視。 其中會顯示您正在開發的流程結構。 您可以進行放大、縮小、自動配置等。

注意

您無法直接編輯圖表檢視,但可以選取節點以在扁平化檢視中找出對應的節點卡片,然後執行直接編輯。

計算工作階段

開始撰寫之前,您應該先啟動計算工作階段。 計算工作階段可作為執行提示流程所需的計算資源,其中有內含所有必要相依性套件的 Docker 映像。 這是流程執行的必備項目。

在工作室中啟動計算工作階段的螢幕擷取畫面。

流程輸入和輸出

流程輸入是指傳遞至流程中的整體資料。 藉由指定名稱和類型來定義輸入結構描述。 設定各項輸入的輸入值,以測試流程。 您稍後可以使用 ${input.[input name]} 語法,在流程節點中引用流程輸入。

流程輸出是流程所產生的整體資料,會摘述流程執行的結果。 您可以在完成流程執行或批次執行後,檢視和匯出輸出資料表。 藉由使用語法 ${[node name].output}${[node name].output.[field name]} 來引用流程單一節點輸出,定義流程輸出值。

 流程輸入和輸出的螢幕擷取畫面。

使用不同的工具來開發流程

在流程中,您可以取用不同類型的工具,例如 LLM、Python、Serp API、內容安全等。

藉由選取工具,新增節點至流程。 您應該指定節點名稱,並設定節點的必要組態。

例如,對於 LLM 節點,您必須選取連線、部署、設定提示等等。連線有助於安全地儲存和管理與 Azure OpenAI 互動所需的祕密金鑰或其他敏感性認證。 如果還沒有連線,您應該先加以建立,並確定您的 Azure OpenAI 資源具有聊天或完成部署。 LLM 和提示工具可讓您使用 Jinja 作為範本化語言,以動態產生提示。 例如,您可以使用 {{}} 而非固定文字來括住輸入名稱,以便可以即時替換。

若要使用 Python 工具,您必須設定 Python 指令碼、設定輸入值等。您應該定義具有如下輸入和輸出的 Python 函式。

 撰寫 Python 節點的 Python 指令碼的螢幕擷取畫面。

完成提示或 Python 指令碼的編寫後,您可以選取 [驗證並剖析輸入],讓系統根據提示範本和 Python 函式輸入自動剖析節點輸入。 節點輸入值可用下列方式設定:

  • 直接在輸入方塊中設定該值
  • 使用 ${input.[input name]} 語法來引用流程輸入
  • 使用 ${[node name].output}${[node name].output.[field name]} 語法來引用節點輸出

藉由引用節點輸出,您可以將節點連結在一起。 例如,您可以在 Python 節點輸入中引用 LLM 節點輸出,讓 Python 節點可以取用 LLM 節點輸出,而且您會在圖形檢視中看到這兩個節點連結在一起。

啟用流程的條件式控制

提示流程不僅提供執行流程的簡化方式,也為開發人員帶來了強大的功能 - 條件式控制,讓使用者為流程中的任何節點設定執行條件。

條件式控制的核心提供將流程中每個節點與啟動組態產生關聯的功能。此組態基本上是判斷節點何時應該執行的 "when" 陳述式。 有複雜的流程,而其中某些任務的執行取決於先前任務的結果時,就會體認到此功能的強大。 藉由善用條件式控制件,您可以設定特定節點只在符合指定條件時才會執行。

具體來說,您可以選取節點卡片中的 [啟動組態] 按鈕,來為節點設定啟動組態。 您可以新增 "when" 陳述式並設定條件。 您可以引用流程輸入或節點輸出來設定條件。 例如,您可以將條件 ${input.[input name]} 設為特定值,或將條件 ${[node name].output} 設為特定值。

如果不符合條件,就會略過節點。 節點狀態會顯示為「已略過」。

將啟動組態設定爲啟用條件式控制項的螢幕擷取畫面。

測試流程

您可以透過兩種方式測試流程:

  • 執行單一節點
    • 若要執行單一節點,請在扁平化檢視的節點上選取 [執行] 圖示。 執行完成之後,您可以在節點輸出區段中快速檢查結果。
  • 執行整個流程
    • 若要執行整個流程,請選取右上方的 [執行] 按鈕。

檢視測試結果和追蹤 (預覽)

針對整個流程執行,在執行流程之後,您可以在執行橫幅中看到執行狀態。 然後,您可以選取 [檢視追蹤],以檢視檢查結果的追蹤並觀察流程執行,您可以在其中查看整個流程和每個節點的輸入和輸出,以及偵錯的詳細資訊。 在執行期間以及執行完成後即可使用。

 在兩個位置檢視輸出按鈕的螢幕擷取畫面。

了解追蹤檢視

提示流程的追蹤種類會指定為流程。 在追蹤檢視中,可以觀察到用於流程協調流程的工具清楚順序。

流程根下的每個層級 2 範圍都代表流程中的節點,以函數呼叫的形式執行,因此範圍種類會識別為函式。 您可以在範圍樹狀結構中看到每個節點執行的持續時間。

在範圍樹狀結構中,LLM 呼叫很容易識別為 LLM 範圍。 這會提供 LLM 呼叫的持續時間,和相關聯權杖成本的相關資訊。

按一下範圍,即可在右側看到詳細資訊。 這包括輸入與輸出、原始 Json 和例外狀況,這些對觀察和偵錯都很有用。  追蹤詳細資料的螢幕擷取畫面。

注意

在提示流程 SDK 中,我們定義了幾個範圍類型,包括 LLM函式內嵌擷取流程。 系統會自動在指定的屬性和事件中使用執行資訊來建立範圍。

若要深入了解範圍類型,請參閱 追蹤範圍

流程執行完成後,若要檢查結果,您可以在 [檢視測試結果] 按鈕上選取,以檢查清單中的所有執行歷程記錄。 根據預設,會顯示過去七天內建立的執行記錄。 您可以選取 [篩選] 來變更條件。

流程測試結果的螢幕擷取畫面。

您也可以選取執行記錄的 [名稱] 以檢視追蹤檢視中的詳細資訊。

開發聊天流程

聊天流程是專為對話式應用程式開發所設計,以標準流程的功能為基礎,來強化對聊天輸入/輸出和聊天歷程記錄管理的支援。 透過聊天流程,您可以輕鬆地建立聊天機器人來處理聊天輸入和輸出。

在聊天流程撰寫頁面中,聊天流程會標上「聊天」標籤,以與標準流程和評估流程區分。 若要測試聊天流程,請選取 [聊天] 按鈕以觸發進行交談的聊天方塊。

聊天流程撰寫頁面的螢幕擷取畫面。

聊天輸入/輸出和聊天歷程記錄

區分聊天流程與標準流程的最重要元素是聊天輸入聊天歷程記錄聊天輸出

  • 聊天輸入:聊天輸入是指使用者向聊天機器人提交的訊息或查詢。 有效地處理聊天輸入對於成功的交談至關重要,因為其間涉及瞭解使用者意圖、擷取相關資訊和觸發適當的回應。
  • 聊天歷程記錄:聊天歷程記錄是使用者與聊天機器人之間所有互動的記錄,包括使用者輸入和 AI 產生的輸出。 維護聊天歷程記錄對於追蹤交談內容並確保 AI 能夠產生內容相關的回應至關重要。
  • 聊天輸出:聊天輸出是指為回應使用者的輸入而由 AI 產生並傳送給使用者的訊息。 產生內容適當且吸引人的聊天輸出對於正面的使用者體驗至關重要。

聊天流程可以有多個輸入,聊天歷程記錄和聊天輸入是聊天流程中的必要項目。

  • 在聊天流程輸入區段中,可以將流程輸入標示為聊天輸入。 然後,您可以在聊天方塊中輸入內容 ,以填入聊天輸入值。

  • 提示流程可協助使用者管理聊天歷程記錄。 輸入區段中的 chat_history 是保留用於表示聊天歷程記錄。 聊天方塊中的所有互動,包括使用者聊天輸入、產生的聊天輸出和其他流程輸入與輸出,都會自動儲存在聊天歷程記錄中。 使用者無法在輸入區段中手動設定 chat_history 的值。 其結構就如輸入和輸出的清單:

    [
    {
        "inputs": {
        "<flow input 1>": "xxxxxxxxxxxxxxx",
        "<flow input 2>": "xxxxxxxxxxxxxxx",
        "<flow input N>""xxxxxxxxxxxxxxx"
        },
        "outputs": {
        "<flow output 1>": "xxxxxxxxxxxx",
        "<flow output 2>": "xxxxxxxxxxxxx",
        "<flow output M>": "xxxxxxxxxxxxx"
        }
    },
    {
        "inputs": {
        "<flow input 1>": "xxxxxxxxxxxxxxx",
        "<flow input 2>": "xxxxxxxxxxxxxxx",
        "<flow input N>""xxxxxxxxxxxxxxx"
        },
        "outputs": {
        "<flow output 1>": "xxxxxxxxxxxx",
        "<flow output 2>": "xxxxxxxxxxxxx",
        "<flow output M>": "xxxxxxxxxxxxx"
        }
    }
    ]
    

注意

自動儲存或管理聊天歷程記錄的功能,是在聊天方塊中進行測試時位於撰寫頁面上的一項功能。 對於批次執行,使用者必須在批次執行資料集中包含聊天歷程記錄。 如果沒有可供測試的聊天歷程記錄,只需將 chat_history 設為批次執行資料集內的空白清單 [] 即可。

使用聊天歷程記錄撰寫提示

將聊天歷程記錄併入您的提示,對建立內容感知和引人的聊天機器人回應至關重要。 在提示中,您可以引用 chat_history 來擷取過去的互動。 這可讓您引用先前的輸入和輸出,據以建立與內容相關的回應。

使用 Jinja 語言的 for-loop 文法顯示來自 chat_history 的輸入和輸出清單。

{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}

使用聊天方塊進行測試

聊天方塊提供互動式方式,藉由模擬與聊天機器人的交談來測試聊天流程。 若要使用聊天方塊測試聊天流程,請遵循下列步驟:

  1. 選取 [聊天] 按鈕以開啟聊天方塊。
  2. 在聊天方塊中輸入您的測試輸入,然後選取 Enter 將其傳送給聊天機器人。
  3. 檢閱聊天機器人的回應,確保內容適當且準確。
  4. 就地檢視追蹤,以便快速觀察和偵錯。

 聊天流程聊天方塊體驗的螢幕擷取畫面。

下一步