僅適用於:Foundry(經典)入口。 本文尚未在新的 Foundry 入口網站提供。
了解更多關於新入口網站的資訊。
備註
本文中的連結可能會開啟新版 Microsoft Foundry 文件的內容,而非您目前正在瀏覽的 Foundry(經典版)文件。
這很重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 欲了解更多資訊,請參閱Microsoft Azure預覽補充使用條款。
評估流程是特殊的流程類型,可評估執行輸出是否符合特定準則和目標。
在提示流程中,您可以針對工作和目標自定義或建立自己的評估流程,然後使用它來評估其他流程。 在本檔中,您將瞭解:
- 如何開發評估方法。
- 了解提示流程評估的輸入、輸出與記錄指標。
先決條件
這很重要
本文為集線器專案提供舊版支援。 這方法無法用於 Foundry 專案。 看我如何知道我有哪種類型的專案?
SDK 相容性說明:程式碼範例需要特定版本的 Microsoft Foundry SDK 版本。 如果你遇到相容性問題,可以考慮從中樞專案遷移到 Foundry 專案。
- 一個有有效訂閱的 Azure 帳號。 如果你還沒有,請建立一個free Azure帳號,其中包含免費試用訂閱。
- 如果你沒有,建立一個集線器為基礎的專案。
開始開發評估方法
有兩種方式可以開發您自己的評估方法:
自定義內建評估流程: 修改內建評估流程。
- 在 [建置並自定義 ] 下,選取 [提示流程]。
- 選取 [建立] 以開啟流程建立精靈。
- 在流程庫的 [ 探索資源庫] 下,選取 [評估流程 ] 以依該類型進行篩選。 選擇一個樣本,然後選擇Clone進行自訂。
從頭開始建立新的評估流程: 從頭開始開發全新的評估方法。
- 在 [建置並自定義 ] 下,選取 [提示流程]。
- 選取 [建立] 以開啟流程建立精靈。
- 在資源庫的依類型建立下,於「評估流程」方塊中選取建立,然後您即可看到評估流程的範本。
了解提示流程中的評估
在提示流程中,流程是由一系列節點組成,用來處理輸入並產生輸出。 評估流程也會接受必要的輸入,併產生對應的輸出。
評估方法的一些特殊功能包括:
- 它們通常會在測試的執行之後執行,並接收該測試執行的輸出。
- 除了要測試的執行輸出之外,也可以選擇性地接收另一個可能包含對應基礎事實的數據集。
- 其可能會有匯總節點,其會根據個別分數來計算所測試流程的整體效能。
- 他們可以使用函
log_metric()式來記錄計量。
我們介紹如何在開發評估方法中定義輸入和輸出。
輸入
評估會在另一次執行之後執行,以評估該回合的輸出是否符合特定準則和目標。 因此,評估會接收該次執行所產生的輸出。
可能也需要其他輸入,例如來自數據集的準確性資料。 根據預設,評估會使用與提供給測試回合的測試數據集相同的數據集。 不過,如果對應的標籤或目標地面真值位於不同的數據集,您可以輕鬆地切換至該數據集。
因此,若要執行評估,您必須指出這些必要輸入的來源。 若要這樣做,提交評估時你會看到「輸入映射」區塊。
- 如果數據源來自您的執行輸出,則會將來源表示為
${run.output.[OutputName]} - 如果數據源來自您的測試數據集,則會將來源表示為
${data.[ColumnName]}
備註
如果您的評估不需要來自數據集的數據,則不需要參考輸入對應區段中的任何數據集數據行,表示數據集選取是選擇性的組態。 數據集選取不會影響評估結果。
輸入描述
為了提醒計算指標所需的輸入,您可以為每個必要輸入新增說明。 這些說明會在批次執行提交中對應來源時顯示。
若要新增每個輸入的描述,請在開發評估方法時,選取 [在輸入區段中 顯示描述 ]。 您可以選擇 [隱藏描述] 來隱藏描述。
接著,當在批次執行提交中使用此評估方法時,系統也會顯示此說明。
輸出和計量
評估的輸出是測量所測試流程效能的結果。 輸出通常包含分數等計量,也可能包含推理和建議的文字。
執行個體層級分數輸出
在提示流程中,流程會一次處理一筆範例資料集,並產生一筆輸出記錄。 同樣地,在大多數評估情境中,每個輸出都會對應一項指標,讓您檢查流程在每筆個別資料上的表現。
若要記錄每個數據範例的分數,請計算每個輸出的分數,並在輸出區段中設定分數,將分數記錄 為流程輸出 。 此撰寫體驗與定義標準流程輸出相同。
我們會在 line_process 節點中計算此分數,您可以在建立節點類型時從頭開始進行建立和編輯。 您也可以將此 Python 節點取代為 LLM 節點,以使用 LLM 來計算分數。
當這個評估方法用來評估另一個流程時,可以在 [概觀輸出] 索引標籤中>檢視實例層級分數。
計量記錄和匯總節點
此外,務必提供運行的整體評分。 你可以在評估流程中勾選Python節點的 “set as aggregation”,將其轉為「reduce」節點,讓該節點能接收輸入作為清單並批次處理。
如此一來,您就可以計算及處理每個流程輸出的所有分數,並計算每個變體的整體結果。
您可以使用 Prompt flow_sdk.log_metrics()在匯總節點中記錄計量。 計量應該是數值(float/int)。 不支援字串類型計量記錄。
我們會在 aggregate 節點中計算此分數,您可以在依類型建立時從頭開始建立和編輯。 你也可以用 Python 節點取代這個 LLM 節點,用 LLM 來計算分數。 請參閱下列範例,以在評估流程中使用 log_metric API:
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
aggregate_grades = {}
for index in range(len(grades)):
grade = grades[index]
variant_id = variant_ids[index]
if variant_id not in aggregate_grades.keys():
aggregate_grades[variant_id] = []
aggregate_grades[variant_id].append(grade)
# calculate accuracy for each variant
for name, values in aggregate_grades.items():
accuracy = round((values.count("Correct") / len(values)), 2)
log_metric("accuracy", accuracy, variant_id=name)
return aggregate_grades
你在 Python 節點中提到這個函式,不需要把它指派到其他地方,之後可以查看指標。 在批次執行中使用這個評估方法時,可以在 [概觀 ->計量 ] 索引標籤中檢視實例層級分數。