共用方式為


開發提示流程

提示流程是一種開發工具,可簡化由大型語言模型 (LLM) 提供之 AI 應用程式的開發週期。 在本文中,您將瞭解如何在 Azure Machine Learning 工作室 中建立及開發提示流程和聊天流程。

隨著 LLM 型 AI 應用程式的勢頭成長,提示流程提供完整的解決方案,可簡化原型設計、實驗、反覆運算和部署 AI 應用程式的程式。 藉由使用提示流程,您可以:

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

建立及開發您的提示流程

若要建立提示流程,請在左側導覽 Azure Machine Learning 工作室 中選取 [提示流程],然後選取 [提示流程] 頁面上的 [建立]。

在 [ 建立新的流程 ] 畫面上,您可以透過下列方式建立流程:

  • 從範本建立 標準聊天評估 流程。
  • 探索資源庫複製可用的範例。
  • 從本機檔案或檔案共享匯入現有的流程。

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

若要建立流程,請在您想要的流程卡上選取 [建立 ] 或 [複製 ]。 在下一個畫面窗格中,您可以視需要變更新的流程名稱,然後選取 [建立] 或 [複製]。 新的流程會在撰寫UI中開啟。

計算工作階段

開始撰寫之前,請先選取 流程撰寫頁面頂端的 [啟動計算會話] 來啟動計算會話 。 需要計算會話才能執行流程。 計算會話會管理應用程式執行所需的計算資源,包括包含所有必要的相依性套件的 Docker 映像。

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

撰寫頁面

計算會話可能需要幾分鐘的時間才能啟動。 當計算會話開始時,請檢查流程撰寫頁面的部分。

  • 頁面左側的 Flow扁平化檢視是您撰寫流程的主要工作區。 在扁平化檢視中,您可以編輯節點、工具、提示和輸入;執行節點或整個流程;和定義和檢視輸出。

  • 右上方的檔案 會顯示流程的資料夾和檔案結構。 每個流程都有一個 資料夾,其中包含 flow.dag.yaml 檔案、原始碼檔案和系統資料夾。 您可以新增、編輯、刪除、上傳或下載檔,以進行測試、部署或共同作業。

  • 右下角的 [圖形] 檢視會將流程結構可視化。 您可以放大或縮小或使用自動版面配置。 您無法直接編輯此檢視,但您可以選取節點,以在扁平化檢視中尋找和編輯它。

流程輸入和輸出

在 [輸入和輸出] 區段中,您可以檢視、新增或移除,以及編輯輸入和輸出。

  • 流程輸入是指傳遞至流程中的整體資料。 您可以藉由指定名稱和類型來定義輸入架構,並設定每個輸入的值來測試流程。 您可以使用 來參考流程節點 ${input.<input name>}中的流程輸入。

  • 流程輸出是整個流程所產生的數據,其摘要說明流程執行的結果。 您可以使用 語法 ${<node name>.output}${<node name>.output.<field name>}來參考單一節點輸出來定義流程輸出值。 您可以在流程執行或批次執行完成之後檢視和匯出輸出結果數據表。

流程工具

在流程中,您可以使用不同類型的工具,例如 LLM、Python、Prompt、Serp API 和內容安全性。 選取工具會將此工具的新節點新增至流程結尾。 您必須指定節點名稱並設定必要的組態。 您可以使用節點控制項來變更節點在流程中的位置。

節點輸入和輸出

LLM 和提示工具會使用 Jinja 作為範本化語言,以動態產生提示。 例如,您可以使用 {{}} 來括住輸入名稱,而不是使用固定文字,因此可以在即時取代它。

您可以透過下列方式設定節點輸入和輸出

  • 直接設定輸入
  • 使用 ${input.<input name>}參考流程輸入。
  • 使用 ${<node name>.output}${<node name>.output.<field name>}參考節點輸出。

完成撰寫提示或 Python 腳本之後,請選取 [ 驗證並剖析系統的輸入 ],以根據提示範本和 Python 函式輸入自動剖析節點輸入。

您可以參考節點輸出來連結節點。 例如,您可以在 Python 節點輸入中參考 LLM 節點輸出,讓 Python 節點取用 LLM 節點輸出。 在 [ 圖形 ] 檢視中,您可以看到兩個節點連結在一起。

LLM 節點

針對 Azure OpenAI LLM 節點,您必須選取 [連線]、[Api] 和 [deployment_name],然後設定 [提示]。 您可以使用連線安全地儲存和管理與 Azure OpenAI 互動所需的秘密金鑰或其他敏感性認證。

如果您還沒有連線,請先建立它,再新增 LLM 節點,並確定 Azure OpenAI 資源有 聊天完成 部署。 如需詳細資訊,請參閱 設定連線 和使用 Azure OpenAI 建立資源及部署模型。

Python 節點

若要使用 Python 工具,您必須設定 Python 腳本、輸入值和其他組態。 新的 Python 節點提供下列可定義輸入和輸出的未定案 Python 函式。

from promptflow import tool

# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
    return 'hello ' + input1

條件式控制件

提示流程提供條件式控制,可讓您設定流程中任何節點執行的條件。

條件式控制提供將流程中每個節點與 啟動設定產生關聯的功能。此組態是一個 when 語句,可決定何時應該執行節點。 這項功能的強大功能會在複雜的流程中實現,其中執行某些工作取決於先前工作的結果。 藉由使用條件式控制,您可以設定特定節點,只有在符合指定條件時才會執行。

選取節點卡片中的 [啟用設定] 按鈕,以設定節點 的啟動設定新增 When 語句並設定條件。 您可以參考流程輸入或節點輸出來設定條件。 例如,您可以將條件 ${input.<input name>}${<node name>.output} 設定為特定值。 如果不符合條件,則會略過節點,且節點狀態會顯示為 [略過]。

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

測試流程

您可以執行單一節點或執行整個流程來測試流程。

  • 若要執行單一節點,請選取 節點卡片上的 [執行 ] 圖示。 當節點執行完成時,您可以在 [輸出] 區段中快速檢查結果。
  • 若要執行整個流程,請選取頁面頂端的 [ 執行 ]。

流程輸出

選取 [ 執行 ] 以執行流程之後,您可以在頁面頂端的橫幅中看到執行狀態。 選取 頂端橫幅或頂端功能表欄中的 [檢視輸出 ],以檢視詳細的輸入、輸出、流程執行和協調流程資訊。

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

流程執行完成之後,您可以選取 [檢視輸出] 來檢查 [輸出] 畫面上的所有歷程記錄輸出。

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

選取 [輸出] 畫面上的 [追蹤] 索引標籤,以查看提供流程持續時間和相關聯令牌成本相關信息的圖表。 選取節點名稱下的流程,以查看右窗格中的詳細流程概觀資訊。

展開 流程 並選取任何步驟,以查看該步驟的詳細資訊。 您可以在範圍樹狀結構中看到每個節點執行的持續時間。 如需詳細資訊,請參閱 追蹤範圍規格

 追蹤詳細資料的螢幕擷取畫面。

開發聊天流程

聊天流程是專為對話式應用程式開發而設計的特定提示流程類型。 聊天流程是以標準流程功能為基礎,為聊天輸入/輸出和聊天記錄提供增強的支援。 藉由使用聊天流程,您可以輕鬆地建立聊天機器人來處理聊天輸入和輸出。

若要建立聊天流程,請在 [建立新的流程] 畫面上,選取 [聊天流程] 卡片上的 [建立],或在 [探索資源庫] 中選取 [聊天],然後複製其中一個可用的流程。

在聊天流程撰寫頁面中,聊天流程會以 聊天 標籤,以區別於標準和評估流程。 若要測試聊天流程,您可以選取 頁面頂端的 [聊天 ] 來開啟 交談的聊天 方塊。

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

聊天輸入、聊天輸出和聊天記錄

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

  • 聊天輸入 是指使用者提交給聊天機器人的訊息或查詢。 有效地處理聊天輸入對於成功的交談至關重要,因為其間涉及瞭解使用者意圖、擷取相關資訊和觸發適當的回應。

  • 聊天記錄 是使用者與聊天機器人之間所有互動的記錄,包括使用者輸入和 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. 在畫面底部的聊天方塊中輸入測試問題,以將它們傳送至聊天機器人。
  3. 檢閱聊天機器人的回應,確保內容適當且準確。
  4. 選取 撰寫頁面頂端的 [檢視輸出 ],以快速檢視和偵錯聊天輸入、輸出和歷程記錄。
  5. 在 [ 輸出] 畫面上,選取 [ 追蹤] 索引標籤,然後選取 流程 ,以查看右窗格中的詳細流程概觀資訊。 展開 流程 並選取任何步驟,以查看該步驟的詳細資訊。

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