有效向外擴充自訂技能
自訂技能是實作特定介面的 Web API。 自訂技能可以在任何可公開定址的資源上實作。 自訂技能最常見的實作如下:
- 用於自訂邏輯技能的 Azure Function
- 用於簡單容器化 AI 技能的 Azure Web 應用程式
- 用於更複雜或更大技能的 Azure Kubernetes 服務。
技能集設定
下列自訂技能屬性用於調整。 檢閱自訂技能介面,以了解自訂技能應實作之輸入和輸出的簡介。
設定自訂技能的
batchSize
,以設定傳送到單一技能叫用作業中的技能的記錄數。設定
degreeOfParallelism
,以校正索引子對您的技能發出的並行要求數。將
timeout
設為足以讓技能可以使用有效的回應來回應的值。在
indexer
定義中,將batchSize
設為應從資料來源讀取並同時擴充的文件數。
考量
沒有「全體適用」的建議集合。 您應該規劃測試不同的組態,以達到最佳結果。 擴大策略是以較少大型要求或許多小型要求為基礎。
技能較用基數:確定您知道自訂技能會針對每個文件執行一次 (
/document/content
),還是針對每個文件執行多次 (/document/reviews_text/pages/*
)。 如果針對每個文件執行多次,請停留在batchSize
和degreeOfParallelism
的下側以減少變換,並嘗試將索引子批次大小設定為遞增較高的值,以取得更大的規模。協調自訂技能
batchSize
和索引子batchSize
,並確定您不會造成瓶頸。 例如,如果索引子批次大小為 5,且技能批次大小為 50,則需要 10 個索引子批次來填入自訂技能要求。 在理想情況下,技能批次大小應該小於或等於索引子批次大小。針對
degreeOfParallelism
,使用索引子批次可產生的平均要求數目,引導您決定如何設定此值。 如果裝載此技能的基礎結構 (例如 Azure 函式) 不支援高層級的並行存取,請考慮降低平行處理的程度。 您可使用一些文件來測試設定,以驗證您對平均要求數目的瞭解。雖然您的物件支援大量規模,但使用較小的文件樣本進行測試有助於量化不同的執行階段。 例如,您可以評估技能的執行時間 (相對於處理文件子集的整體時間)。 這有助於您回答問題:索引子是否花更多時間建置批次,或等候您的技能的回應?
考慮平行處理原則的上游含意。 如果自訂技能的輸入是先前技能的輸出,技能集中的所有技能是否會有效地向外擴充,以將延遲降到最低?
自訂技能中的錯誤處理
當技能順利完成時,自訂技能應該會傳回一個成功狀態碼 HTTP 200。 如果批次中的一或多筆記錄導致錯誤,請考慮傳回多重狀態碼 207。 記錄的錯誤或警告清單應該包含適當的訊息。
批次中發生錯誤的任何項目都會導致相對應的文件失敗。 如果您需要文件成功,請傳回警告。
任何超過 299 的狀態碼都會評估為錯誤,而且所有擴充都會失敗,進而導致文件失敗。
常見的錯誤訊息
Could not execute skill because it did not execute within the time limit '00:00:30'. This is likely transient. Please try again later. For custom skills, consider increasing the 'timeout' parameter on your skill in the skillset.
在技能上設定逾時參數,以允許較長的執行持續時間。Could not execute skill because Web Api skill response is invalid.
指出技能未以自訂技能回應格式傳回訊息。 這可能是技能中未攔截到例外狀況的結果。Could not execute skill because the Web Api request failed.
最有可能是因為授權錯誤或例外狀況所造成。Could not execute skill.
通常是將技能回應對應到文件階層中的現有屬性的結果。
測試自訂技能
首先,使用 REST API 用戶端來測試您的自訂技能,以驗證:
技能會實作要求和回應的自訂技能介面
技能會傳回具有
application/JSON
MIME 類型的有效 JSON會傳回有效的 HTTP 狀態碼
建立一個偵錯工作階段,以將您的技能新增至技能集,並確定它會產生有效的擴充。 雖然偵錯工作階段不允許您調整技能的效能,但它可以讓您確保該技能已設定了有效值,並傳回預期的擴充物件。
最佳作法
雖然技能可以接受並傳回較大的承載資料,但請考慮在傳回 JSON 時將回應限制為 150 MB 或更少。
請考慮在索引子和技能上設定批次大小,以確保每個資料來源批次都會為您的技能產生完整的承載資料。
對於長時間執行的工作,請將逾時設定為足夠的值,以確保索引子不會在同時處理文件時出錯。
將索引子批次大小、技能批次大小和平行處理原則的技能程度最佳化,以產生技能所預期的負載模式、較少的大型要求或許多小型要求。
透過詳細的失敗記錄檔來監視自訂技能,因為您可能會遇到特定要求因資料可變性而持續失敗的情況。