範例 API 要求
本文顯示一些範例 API 要求及相關的回覆。 每個範例都會顯示基本建議案例以及其他回覆修改功能,例如篩選、分頁、選取替代演算法等等。 如果想要在您的智慧建議端點上試用這些範例,請務必根據您的資料,更換端點名稱 (DNS 部分) 並調整參數。
注意
計數參數會控制每個回覆中傳回的項目數目。 為清晰簡潔起見,範例將計數設定為 5。 如需 API 要求建構方式的詳細資訊,請參閱智慧建議 API 和呼叫 API 快速入門手冊。
範例
以下是一些可以使用智慧建議帳戶進行測試的範例:
如果測試回覆時遇到錯誤,請查看錯誤記錄。
取得新項目
新項目 API 會傳回依發行日期排序的產品清單。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/New?modeling=adw&Count=5
成功的回覆看起來像這樣:
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "70000",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70002",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70003",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70004",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70005",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "New",
"longTitle": "New",
"titleId": 3,
"pagingInfo": {
"totalItems": 278
},
"status": "Success"
}
在跳過前 3 名的同時取得新項目
您可以藉由將 "SkipItems" 附加至要求,跳過清單中的項目。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/New?modeling=adw&Count=5&SkipItems=3
成功的回覆看起來像這樣:
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "70004",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70005",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70006",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "66001",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "66002",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "New",
"longTitle": "New",
"titleId": 3,
"pagingInfo": {
"totalItems": 278
},
"status": "Success"
}
取得熱門項目
[取得熱門項目] API 傳回依互動計數 (例如交易、購買、觀看、選取或下載) 排序的項目清單。 不論使用者與項目間互動在您業務中的意義為何,清單中第一個項目都是互動次數最多的項目,其餘項目則依遞減順序排列。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=5
成功的回覆看起來像這樣:
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "65106",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62604",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "70006",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63503",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Popular",
"longTitle": "Popular",
"titleId": 5,
"pagingInfo": {
"totalItems": 278
},
"status": "Success"
}
取得特定類別中的熱門項目
您可以在 ItemCategories 資料實體中定義類別。 如需詳細資訊,請參閱資料合約概觀。
搜尋最流行服裝項目時的 API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=5&Category=Clothing
成功的回覆看起來像這樣:
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "62604",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62502",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62606",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63402",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Popular",
"longTitle": "Popular",
"titleId": 5,
"pagingInfo": {
"totalItems": 95
},
"status": "Success"
}
使用離散篩選,取得特定類別中的熱門項目
您可以在 ItemAndVariantFilters 資料實體中定義篩選。 如需詳細資訊,請參閱資料合約概觀。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=5&Category=Clothing&Size=S
成功的回覆看起來像這樣:
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "61453",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62104",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62100",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62103",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61406",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Popular",
"longTitle": "Popular",
"titleId": 5,
"pagingInfo": {
"totalItems": 32
},
"status": "Success"
}
在篩選一系列值的同時,取得特定類別中的熱門項目
如需依範圍篩選的語法的詳細資訊,請參閱範圍篩選指南。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=10&Category=Clothing&$filter=rating gt 2 and rating lt 5
成功的回覆看起來像這樣:
{
"id": "Lists",
"name": "Lists",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "62604",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62502",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62507",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62106",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Popular",
"longTitle": "Popular",
"titleId": 5,
"pagingInfo": {
"totalItems": 5
},
"status": "Success"
}
取得類似項目
類似項目 API 提供根據特定種子項目的關聯式建議。 種子項目是產品建議依據的樞紐點。 緊隨 Similar/ 之後的是種子項目識別碼指定的 API 要求。 例如,與男士西裝外套相比,條紋毛衣種子項目會有不同的產品建議。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?modeling=adw&Count=5
成功的回覆看起來像這樣:
{
"id": "Related",
"name": "Related",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "63102",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62106",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61511",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63503",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "68100",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "People also like",
"longTitle": "People also like",
"titleId": 1,
"pagingInfo": {
"totalItems": 138
},
"status": "Success"
}
使用隨機順序取得類似項目
為避免使用者一再看到相同建議,智慧建議提供加權隨機變換功能,此功能略微變更項目順序,而不會明顯影響相關性。 結果可以藉由加入細分 enableshuffling 來打亂順序。 您可以在這裡進一步了解微調以及其不同的類型。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?modeling=adw&Count=5&Refinements=EnableShuffling
成功的回覆看起來像這樣:
{
"id": "Related",
"name": "Related",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "62403",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61511",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "71603",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "64201",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "People also like",
"longTitle": "People also like",
"titleId": 1,
"pagingInfo": {
"totalItems": 138
},
"status": "Success"
}
產生外觀
此 API 要求接受複合影像,並傳回建議項目的清單,這些項目在視覺上與複合影像中所列的項目相似。 複合影像及其 itemId 對應可以使用這裡的影像至項目對應資料實體來設定。
指定複合影像 (642) 的 API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/642?AlgoType=BringSimilarItems
成功的回覆看起來像這樣:
{
"id": "Related",
"name": "Related",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "62403",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61511",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "71603",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "64201",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Bring Similar Items",
"longTitle": "Bring Similar Items",
"titleId": 1,
"pagingInfo": {
"totalItems": 138
},
"status": "Success"
}
完成類似樣式
此 API 要求會接受項目識別碼,並傳回包含項目或包含其他類似項目 (其中相似性根據視覺樣式而定) 的複合圖片識別碼清單。
指定項目識別碼 (64702) 的 API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?AlgoType=CompleteSimilarStyles
成功的回覆看起來像這樣:
{
"id": "Related",
"name": "Related",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "403",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "511",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "603",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "201",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Complete Similar Styles",
"longTitle": "Complete Similar Styles",
"titleId": 1,
"pagingInfo": {
"totalItems": 138
},
"status": "Success"
}
完成類似項目
此 API 要求會接受項目識別碼、尋找包含項目或看起來類似之專案的複合圖片,並傳回從這些複合圖片擷取的項目識別碼清單。
指定項目識別碼 (64702) 的 API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?AlgoType=CompleteSimilarItems
成功的回覆看起來像這樣:
{
"id": "Related",
"name": "Related",
"version": "v1.0",
"interactionsVersion": "20220104115104",
"items": [
{
"id": "62403",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61511",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "71603",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "64201",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62452",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Complete Similar Items",
"longTitle": "Complete Similar Items",
"titleId": 1,
"pagingInfo": {
"totalItems": 138
},
"status": "Success"
}
取得使用者精選
精選 API 根據指定使用者的互動歷程記錄,傳回一組個人化建議。
API 要求看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Picks?modeling=adw&UserId=ID1644&Count=5
成功的回覆看起來像這樣:
{
"id": "Picks",
"name": "Picks",
"version": "v1.0",
"items": [
{
"id": "68100",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62500",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61504",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "65103",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61401",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Picks for you",
"longTitle": "Picks for you",
"titleId": 6,
"personalizationConfidence": 1.0,
"pagingInfo": {
"totalItems": 139
},
"status": "Success"
}
使用 sessionId 取得使用者精選
無論使用者是已知 (已登入) 還是未知 (匿名),Picks API 都會根據工作階段中的目前檢視傳回個人化建議。 sessionId 參數可識別使用者在其目前瀏覽工作階段中觀看過的產品,API 會根據已登入使用者或匿名使用者的最近檢視活動傳回建議清單。
修改的 Picks API 要求會將 userId 取代為 sessionId,並使用 AlgoType「最近的檢視表」,如下所示:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/picks?SessionId=123&AlgoType=RecentViews.
注意
呼叫精選 API 之前,必須在特定工作階段的類似 API 要求中使用 SessionId 參數,否則最近的活動建議會傳回空的結果。
使用 Similar API 時:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?SessionId=123
成功的最近活動精選回覆,如下所示:
```json
{
"id": "Picks",
"name": "Picks",
"version": "v1.0",
"items": [
{
"id": "68100",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62500",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61504",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "65103",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61401",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Picks for you",
"longTitle": "Picks for you",
"titleId": 6,
"personalizationConfidence": 1.0,
"pagingInfo": {
"totalItems": 139
},
"status": "Success"
}
注意
SessionId 參數已新增至此範例中的 API 要求。
後續最佳動作
此 API 要求會傳回最常與使用者購物車中種子項目一起購買的項目清單 (不在零售購物車案例時,是搭配在一起購買的)。
單一種子項目/動作的 API 要求如下:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Cart/64702?AlgoType=DAS&modeling=adw&Count=5
多個種子項目/動作的 API 要求如下:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Cart/Items?SeedItemIds=22565300000,41023461-0005-0000-ffff-00ffffffff00,22565300000,22565300001&Count=5
成功的回覆為:
{
"id": "Cart",
"name": "Cart",
"version": "v1.0",
"items": [
{
"id": "63102",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "62106",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61511",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63503",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "68100",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Frequently bought together",
"longTitle": "Frequently bought together",
"titleId": 2,
"pagingInfo": {
"totalItems": 138
},
"status": "Success"
}
中繼資料標記和使用者貯體
實作中繼資料標記和使用者貯體時,需要對資料合約進行一些設定。 請參閱中繼資料標記和使用者貯體指南,以取得資料合約變更和 API 範例的概觀,包括逐步解說兩個受益於中繼資料標記的一般使用案例,每個案例各提供一些使用示範資料的範例。
- 為冷淡使用者取得「最受歡迎的推薦項目」。 若要查看範例,請參閱標題為「為冷淡使用者取得最受歡迎的項目」的章節。
- 建立使用者中繼資料/值的機器學習對應。 若要查看範例,請參閱標題為「建立使用者中繼資料值的 ML 對應」的章節。
如何使用 AlgoType 參數
智慧建議功能提供多個演算法以計算對各種案例的建議。 如果要使用預設以外的特定演算法,您可以使用 AlgoType 參數。
範例 AlgoType
如需目前支援的 AlgoTypes 完整清單,請參閱 AlgoTypes 表格。 AlgoType 的範例包括:
AlgoType | 定義 | 支援 API |
---|---|---|
RecentPurchases | 精選建議是根據使用者最近的購買項目計算而來。 | 僅適用於使用者精選 API。 |
視覺效果 | 項目相似性是根據目錄影像的視覺相似性計算而來。 | 僅適用於類似 API。 |
文字 | 專案相似性是根據文字 (語言理解) 目錄文字描述的相似性來計算。 | 僅適用於類似 API。 |
使用 AlgoType 建構 API 要求
用於將 Algo Type 新增至「取得使用者精選 API 要求」的 API 要求,看起來像這樣:
https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Picks?AlgoType=RecentPurchases&modeling=adw&UserId=ID1644&Count=5
成功的回覆看起來像這樣:
{
"id": "Picks",
"name": "Picks",
"version": "v1.0",
"items": [
{
"id": "61100",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "61406",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "63203",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "73401",
"trackingId": "00000000-0000-0000-0000-000000000003"
},
{
"id": "71801",
"trackingId": "00000000-0000-0000-0000-000000000003"
}
],
"title": "Picks for you",
"longTitle": "Picks for you",
"titleId": 6,
"pagingInfo": {
"totalItems": 327
},
"status": "Success"
}
如何使用 Refinements 參數
智慧建議功能提供各種行為來計算並傳回建議,但為了獲得更好的購買體驗,有時還是必須要求與預設行為不同的行為。 例如,僅在未購買的品項上顯示建議,或防止相同訂單的重複訂購。 在這種情況下,可以使用 Refinements 參數來達成所需的建議行為。
如需目前支援的微調完整清單,請參閱Refinements 資料表。
使用 Refinements 建構 API 要求
只要微調不相互矛盾,您就可以新增多個以逗號分隔的微調。 在這裡可找到示範將微調新增至類似 API 的範例 API 要求。
API 狀態碼
API 狀態碼完整清單、描述以及如何解決錯誤,如下所示:
程式碼 | 執行狀態 | 原因 | 如何解決 |
---|---|---|---|
200 | 成功 | API 要求已成功。 | 無法使用 |
200 | EmptyResults | 對此種子項目 (itemId) 有一些建議,但是全都篩選掉了。 | 篩選的主要原因是資料已與目錄中的項目相關聯。 當您預計特定產品要遭到退回時,請務必驗證其可用日期,並確定這些產品都是使用適當的篩選指派 (例如類別、通路、目錄和可用性) 正確設定。 |
200 | DataDoesNotExist | 結果中沒有種子項目 (itemId)。 輸入資料中可能缺少指定的 itemId,或是資料不足,無法取得計算結果。 | 檢查項目是否: - 有效 - 屬於正確管道 - 有足夠的互動/影像/文字。 如需詳細資訊,請參閱資料合約格式設定指南。 |
200 | WaitingForData | 建立新的模型元件時,計算可能需要一些時間,並且可能尚未準備好傳回結果。 | 檢查記錄或模型狀態報表 ,以了解是否發生錯誤。 如果 24 小時後問題仍然存在,且沒有錯誤記錄,請連絡我們。 |
400 | UnsupportedRequest | 其中一個 API 參數有不支援的值,或是 API 要求發生另一個問題,例如:不支援或已停用的案例。 | 檢查標頭值是否與實際參數不同。 如需工作中 API 要求的範例,請移至本文頂端。 根據模型功能集是設定為標準還是進階,停用不同的 API 要求。 您也可以檢查模型狀態報表 ,以了解是否有任何演算法發生錯誤。 |
400 | UnsupportedFeature | 您正在嘗試根據目前的模型功能集呼叫不支援的 API。 | 啟用設定為 [標準] 或 [進階] 的正確模型功能集。 每個功能集可用的案例清單。 |
401 | 未驗證的要求 | 確定您的租用戶已指派要讓服務運作的權限。 依照下列步驟檢查您的驗證。 | |
408 | RequestTimeout | 您的要求已逾時。 | 嘗試重新呼叫 API 要求。 |
429 | RPS 高於預先配置階層,並且有遭到節流的風險。 | 將預先配置 RPS 容量增加至更高階層,或減少目前的 RPS。 | |
500 | 內部伺服器錯誤 | 智慧建議一方發生錯誤。 | 這可能是暫時性問題,因此請在幾分鐘後再試一次。 檢查記錄或模型狀態報表 ,以了解是否發生錯誤。 如果問題仍然存在,且沒有錯誤記錄,請連絡我們。 |
503 | ServiceUnavailable | 服務無法處理帳戶。 | 檢查記錄或模型狀態報表 ,以了解是否發生錯誤。 如果問題仍然存在,且沒有錯誤記錄,請連絡我們。 |