開發提示流程
提示流程是一種開發工具,可簡化由大型語言模型 (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 %}
使用聊天方塊進行測試
[ 聊天 ] 方塊提供互動式方式,藉由模擬與聊天機器人的交談來測試聊天流程。 若要使用 [聊天 ] 方塊來測試聊天流程:
- 選取 [聊天] 以開啟 [聊天] 提要字段。
- 在畫面底部的聊天方塊中輸入測試問題,以將它們傳送至聊天機器人。
- 檢閱聊天機器人的回應,確保內容適當且準確。
- 選取 撰寫頁面頂端的 [檢視輸出 ],以快速檢視和偵錯聊天輸入、輸出和歷程記錄。
- 在 [ 輸出] 畫面上,選取 [ 追蹤] 索引標籤,然後選取 流程 ,以查看右窗格中的詳細流程概觀資訊。 展開 流程 並選取任何步驟,以查看該步驟的詳細資訊。