共用方式為


快速入門:使用單變量異常偵測器用戶端程式庫

重要

從 2023 年 9 月 20 日起,您將無法建立新的異常偵測器資源。 異常偵測器服務將於 2026 年 10 月 1 日淘汰。

程式庫參考文件 |程式庫原始程式碼 | 套件 (NuGet) |在 GitHub 上尋找範例程式碼

開始使用適用於 C# 的異常偵測器用戶端程式庫。 請依照下列步驟,開始使用服務提供的演算法安裝套件。 Anomaly Detector 服務可藉由自動對時間序列資料使用最適合的模型,而讓您找出其中的異常狀況,不論是什麼產業、情境或資料量都沒問題。

使用適用於 C# 的異常偵測器用戶端程式庫來:

  • 以批次要求方式偵測整個時間序列資料集的異常狀況
  • 偵測您的時間序列中最新資料點的異常狀態
  • 偵測您資料集內的趨勢變更點。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 最新版 .NET Core
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立異常偵測程式資源,以取得您的金鑰和端點。 等待部署完成後,再選取 [移至資源] 按鈕。 您可以使用免費定價層 (F0) 來試用服務,之後可升級至付費層以用於實際執行環境。

設定

建立新的 .NET Core 應用程式

在主控台視窗中 (例如 cmd、PowerShell 或 Bash),使用 dotnet new 命令建立名為 anomaly-detector-quickstart 的新主控台應用程式。 此命令會建立簡單的 "Hello World" 專案,內含單一 C# 來源檔案:Program.cs

dotnet new console -n anomaly-detector-quickstart

將目錄變更為新建立的應用程式資料夾。 您可以使用下列命令來建置應用程式:

dotnet build

建置輸出應該不會有警告或錯誤。

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

安裝用戶端程式庫

在應用程式目錄中,使用下列命令安裝適用於 .NET 的 Anomaly Detector 用戶端程式庫:

dotnet add package Azure.AI.AnomalyDetector --prerelease

擷取金鑰和端點

若要成功對異常偵測器服務發出呼叫,您將需要下列值:

變數名稱
ANOMALY_DETECTOR_ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 範例端點:https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY 當您透過 Azure 入口網站查看資源時,可以在 [金鑰和端點] 區段中找到 API 金鑰值。 您可以使用 KEY1KEY2
DATA_PATH 本快速入門會使用 request-data.csv 檔案,您可以從 GitHub 範例資料下載。 範例路徑: c:\\test\\request-data.csv

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

建立環境變數

為您的金鑰和端點建立及指派永續性環境變數。

重要

我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。

請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請安全地將它們儲存在 Azure 金鑰保存庫、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure 金鑰保存庫 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱搭配 Azure 的 API 金鑰 金鑰保存庫

如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

下載範例資料

本快速入門會使用 request-data.csv 檔案,您可以從 GitHub 範例資料下載

您也可以執行下列項目來下載範例資料:

curl "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/anomalydetector/azure-ai-anomalydetector/samples/sample_data/request-data.csv" --output request-data.csv

偵測異常

從專案目錄中開啟 program.cs 檔案,並取代為下列程式碼:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Azure;
using Azure.AI.AnomalyDetector;
using static System.Environment;

namespace anomaly_detector_quickstart
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string endpoint = GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
            string apiKey = GetEnvironmentVariable("ANOMALY_DETECTOR_API_KEY");

            var endpointUri = new Uri(endpoint);
            var credential = new AzureKeyCredential(apiKey);

            //create client
            AnomalyDetectorClient client = new AnomalyDetectorClient(endpointUri, credential);

            //read data
            //example: string datapath = @"c:\test\request-data.csv";
            string datapath = @"REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH";

            List<TimeSeriesPoint> list = File.ReadAllLines(datapath, Encoding.UTF8)
                .Where(e => e.Trim().Length != 0)
                .Select(e => e.Split(','))
                .Where(e => e.Length == 2)
                .Select(e => new TimeSeriesPoint(float.Parse(e[1])) { Timestamp = DateTime.Parse(e[0]) }).ToList();

              //create request
            UnivariateDetectionOptions request = new UnivariateDetectionOptions(list)
            {
                Granularity = TimeGranularity.Daily
            };

            UnivariateEntireDetectionResult result = client.DetectUnivariateEntireSeries(request);

            bool hasAnomaly = false;
            for (int i = 0; i < request.Series.Count; ++i)
            {
                if (result.IsAnomaly[i])
                {
                    Console.WriteLine("Anomaly detected at index: {0}.", i);
                    hasAnomaly = true;
                }
            }
            if (!hasAnomaly)
            {
                Console.WriteLine("No anomalies detected in the series.");
            }
        }
    }
}


使用下列命令執行您的應用程式:

dotnet run program.cs

輸出

Anomaly detected at index:      3
Anomaly detected at index:      18
Anomaly detected at index:      21
Anomaly detected at index:      22
Anomaly detected at index:      23
Anomaly detected at index:      24
Anomaly detected at index:      25
Anomaly detected at index:      28
Anomaly detected at index:      29
Anomaly detected at index:      30
Anomaly detected at index:      31
Anomaly detected at index:      32
Anomaly detected at index:      35
Anomaly detected at index:      44

程式碼詳細資料

瞭解您的結果

在上述程式碼中,會讀取範例資料並將其轉換成 DetectRequest 物件。 我們使用檔案路徑呼叫 File.ReadAllLines,並建立 TimeSeriesPoint 物件清單,然後移除任何新行字元。 擷取這些值,並將時間戳記與其數字值分開,然後將其新增至新的 TimeSeriesPoint 物件。 DetectRequest 物件是由一系列的資料點所組成,並包含資料點細微性 (或週期性) 的 TimeGranularity.Daily。 接著我們使用 DetectEntireSeriesAsync 物件來呼叫用戶端的 DetectRequest 方法,並等候 EntireDetectResponse 物件形式的回應。 然後逐一查看回應的 IsAnomaly 值,並列印任何為 true 的值。 如果有找到,這些值會對應到異常資料點的索引。

清除資源

如果您想要清除和移除異常偵測器資源,可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。 如果您不想再使用您所建立的環境變數,建議您也考慮刪除環境變數

程式庫參考文件 |程式庫原始程式碼 | 套件 (npm) |在 GitHub 上尋找範例程式碼

開始使用適用於 JavaScript 的 Anomaly Detector 用戶端程式庫。 請遵循下列步驟安裝套件,並開始使用服務提供的演算法。 異常偵測器服務可藉由自動對時間序列資料使用最適合的模型,而讓您找出其中的異常狀況,不論是什麼產業、情境或資料量都沒問題。

使用適用於 JavaScript 的 Anomaly Detector 用戶端程式庫來:

  • 以批次要求方式偵測整個時間序列資料集的異常狀況
  • 偵測您的時間序列中最新資料點的異常狀態
  • 偵測您資料集內的趨勢變更點。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 最新版的 Node.js
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立異常偵測程式資源,以取得您的金鑰和端點。 部署完成後,選取 移至資源 按鈕。 您可以使用免費定價層 (F0) 來試用服務,之後可升級至付費層以用於實際執行環境。

設定

建立新的 Node.js 應用程式

在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。

mkdir myapp && cd myapp

建立含有下列內容的檔案 package.json

{
  "dependencies": {
    "@azure/ai-anomaly-detector": "next",
    "@azure-rest/ai-anomaly-detector": "next",
    "@azure/core-auth": "^1.3.0",
    "csv-parse": "^5.3.0"
  }
}

安裝用戶端程式庫

從與 package.json 檔案相同的目錄中執行下列命令,以安裝必要的 npm 套件:

npm install

擷取金鑰和端點

若要成功對異常偵測器服務發出呼叫,您將需要下列值:

變數名稱 價值
ANOMALY_DETECTOR_ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 範例端點:https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY 當您透過 Azure 入口網站查看資源時,可以在 [金鑰和端點] 區段中找到 API 金鑰值。 您可以使用 KEY1KEY2
datapath 本快速入門會使用 request-data.csv 檔案,您可以從 GitHub 範例資料下載。

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

建立環境變數

為您的金鑰和端點建立及指派永續性環境變數。

重要

我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。

請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請安全地將它們儲存在 Azure 金鑰保存庫、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure 金鑰保存庫 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱搭配 Azure 的 API 金鑰 金鑰保存庫

如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

下載範例資料

本快速入門會使用 request-data.csv 檔案,您可以從 GitHub 範例資料下載

您也可以執行下列項目來下載範例資料:

curl "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/anomalydetector/azure-ai-anomalydetector/samples/sample_data/request-data.csv" --output request-data.csv

偵測異常

建立名為 index.js 的檔案,並以下列程式碼取代:

const AnomalyDetector = require("@azure-rest/ai-anomaly-detector").default,
  { isUnexpected } = require("@azure-rest/ai-anomaly-detector");
const { AzureKeyCredential } = require("@azure/core-auth");

const { parse } = require("csv-parse/sync");
const fs = require("fs");

// Retrieve the endpoint and key from the environment variables.
const apiKey = process.env["ANOMALY_DETECTOR_API_KEY"] || "";
const endpoint = process.env["ANOMALY_DETECTOR_ENDPOINT"] || "";
const timeSeriesDataPath = "./request-data.csv";

function read_series_from_file(path) {
  let result = Array();
  let input = fs.readFileSync(path).toString();
  let parsed = parse(input, { skip_empty_lines: true });
  parsed.forEach(function (e) {
    result.push({ timestamp: new Date(e[0]), value: Number(e[1]) });
  });
  return result;
}

async function main() {
  // create client
  const credential = new AzureKeyCredential(apiKey);
  const client = AnomalyDetector(endpoint, credential);

  // construct request
  const options = {
    body: {
      granularity: "daily",
      imputeMode: "auto",
      maxAnomalyRatio: 0.25,
      sensitivity: 95,
      series: read_series_from_file(timeSeriesDataPath),
    },
    headers: { "Content-Type": "application/json" },
  };

  // get last detect result
  const result = await client.path("/timeseries/entire/detect").post(options);
  if (isUnexpected(result)) {
    throw result;
  }

  if (result.body.isAnomaly) {
    result.body.isAnomaly.forEach(function (anomaly, index) {
      if (anomaly === true) {
        console.log(index);
      }
    });
  } else {
    console.log("There is no anomaly detected from the series.");
  }

}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

module.exports = { main };

執行應用程式

在快速入門檔案上使用 node 命令來執行應用程式。

node index.js

輸出

Anomalies were detected from the series at index:
3
18
21
22
23
24
25
28
29
30
31
32
35
44

瞭解您的結果

在上述程式碼中,我們會呼叫異常偵測器 API,以使用用戶端 detectEntireSeries() 方法批次偵測整個時間序列的異常情形。 我們會儲存傳回的 AnomalyDetectorDetectEntireSeriesResponse 物件。 接著逐一查看回應的 isAnomaly 清單,然後列印任何 true 值的索引。 這些值會對應到已發現的異常資料點的索引(若有的話)。

清除資源

如果您想要清除和移除異常偵測器資源,可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。 如果您不想再使用您所建立的環境變數,建議您也考慮刪除環境變數

程式庫參考文件 |程式庫原始程式碼 | 套件 (PyPi) |在 GitHub 上尋找範例程式碼

開始使用適用於 Python 的 Anomaly Detector 用戶端程式庫。 請遵循下列步驟安裝套件,並開始使用服務提供的演算法。 Anomaly Detector 服務可藉由自動對時間序列資料使用最適合的模型,而讓您找出其中的異常狀況,不論是什麼產業、情境或資料量都沒問題。

使用適用於 Python 的 Anomaly Detector 用戶端程式庫來:

  • 以批次要求方式偵測整個時間序列資料集的異常狀況
  • 偵測您的時間序列中最新資料點的異常狀態
  • 偵測您資料集內的趨勢變更點。

必要條件

設定

安裝用戶端程式庫。 您可以使用下列命令來安裝用戶端程式庫:

pip install --upgrade azure.ai.anomalydetector

擷取金鑰和端點

若要成功對異常偵測器服務發出呼叫,您將需要下列值:

變數名稱 價值
ANOMALY_DETECTOR_ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 範例端點:https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY 當您透過 Azure 入口網站查看資源時,可以在 [金鑰和端點] 區段中找到 API 金鑰值。 您可以使用 KEY1KEY2
DATA_PATH 本快速入門會使用 request-data.csv 檔案,您可以從 GitHub 範例資料下載。 範例路徑: c:\\test\\request-data.csv

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

建立環境變數

為您的金鑰和端點建立及指派永續性環境變數。

重要

我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。

請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請安全地將它們儲存在 Azure 金鑰保存庫、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure 金鑰保存庫 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱搭配 Azure 的 API 金鑰 金鑰保存庫

如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

下載範例資料

本快速入門會使用 request-data.csv 檔案,您可以從 GitHub 範例資料下載

您也可以執行下列項目來下載範例資料:

curl "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/anomalydetector/azure-ai-anomalydetector/samples/sample_data/request-data.csv" --output request-data.csv

偵測異常

  1. 建立命名為 quickstart.py 的新 Python 檔案。 然後,以您慣用的編輯器或 IDE 加以開啟。

  2. 將 quickstart.py 的內容取代為下列程式碼。 修改程式碼以新增金鑰、端點及時間序列資料路徑的環境變數名稱:

    from azure.ai.anomalydetector import AnomalyDetectorClient
    from azure.ai.anomalydetector.models import *
    from azure.core.credentials import AzureKeyCredential
    import pandas as pd
    import os
    
    API_KEY = os.environ['ANOMALY_DETECTOR_API_KEY']
    ENDPOINT = os.environ['ANOMALY_DETECTOR_ENDPOINT']
    DATA_PATH = "REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH" #example: c:\\test\\request-data.csv
    
    client = AnomalyDetectorClient(ENDPOINT, AzureKeyCredential(API_KEY))
    
    series = []
    data_file = pd.read_csv(DATA_PATH, header=None, encoding='utf-8', date_parser=[0])
    for index, row in data_file.iterrows():
        series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))
    
    request = UnivariateDetectionOptions(series=series, granularity=TimeGranularity.DAILY)
    
    change_point_response = client.detect_univariate_change_point(request)
    anomaly_response = client.detect_univariate_entire_series(request)
    
    for i in range(len(data_file.values)):
        if (change_point_response.is_change_point[i]):
            print("Change point detected at index: "+ str(i))
        elif (anomaly_response.is_anomaly[i]):
            print("Anomaly detected at index:      "+ str(i))
    

    重要

    在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 使用快速入門檔案上的 python 命令執行應用程式

    python quickstart.py
    

輸出

Anomaly detected at index:      3
Anomaly detected at index:      18
Change point detected at index: 20
Anomaly detected at index:      21
Anomaly detected at index:      22
Anomaly detected at index:      23
Anomaly detected at index:      24
Anomaly detected at index:      25
Change point detected at index: 27
Anomaly detected at index:      28
Anomaly detected at index:      29
Anomaly detected at index:      30
Anomaly detected at index:      31
Anomaly detected at index:      32
Anomaly detected at index:      35
Anomaly detected at index:      44

瞭解您的結果

在上述程式碼中,我們會呼叫異常偵測器 API 兩次。 第一次呼叫會使用 detect_change_point 方法,檢查範例資料數列的趨勢變更點。 此呼叫會傳回儲存在名為 change_point_request 之變數中的 ChangePointDetectResponse。 接著逐一查看回應的 is_change_point 清單,然後使用 true 布林值列印任何值的索引。

第二個呼叫會使用 detect_entire_series 方法檢查整個範例資料數列是否有異常。 此呼叫會傳回儲存在名為 anomaly_response 之變數中的 EntireDetectResponse。 逐一查看回應的 is_anomaly 清單,然後使用 true 布林值列印任何值的索引。 我們也可以使用 detect_last_point 方法;此方法更適合用來偵測即時資料中的異常情形。 若要深入了解,請參閱最佳做法指南

將結果視覺化

為了視覺化與範例資料數列相關的異常和變更點,我們將使用熱門的開放原始碼程式庫 matplotlib

  1. 安裝 程式庫。

    pip install matplotlib
    
  2. 使用下列程式碼修改您的 quickstart.py 檔案:

    from azure.ai.anomalydetector import AnomalyDetectorClient
    from azure.ai.anomalydetector.models import *
    from azure.core.credentials import AzureKeyCredential
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import os
    
    API_KEY = os.environ['ANOMALY_DETECTOR_API_KEY']
    ENDPOINT = os.environ['ANOMALY_DETECTOR_ENDPOINT']
    DATA_PATH = "REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH" #example: c:\\test\\request-data.csv
    
    client = AnomalyDetectorClient(ENDPOINT, AzureKeyCredential(API_KEY))
    
    series = []
    data_file = pd.read_csv(DATA_PATH, header=None, encoding='utf-8', date_parser=[0])
    for index, row in data_file.iterrows():
        series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))
    
    request = UnivariateDetectionOptions(series=series, granularity=TimeGranularity.DAILY)
    
    change_point_response = client.detect_univariate_change_point(request)
    anomaly_response = client.detect_univariate_entire_series(request)
    
    for i in range(len(data_file.values)):
        temp_date_to_num = mdates.date2num(data_file.values[i])
        date= temp_date_to_num[0]
        if (change_point_response.is_change_point[i]):
            plt.plot(date,data_file.values[i][1], 's', color ='blue')
            print("Change point detected at index: "+ str(i))
        elif (anomaly_response.is_anomaly[i]):
            plt.plot(date,data_file.values[i][1], '^', color="red")
            print("Anomaly detected at index:      "+ str(i))
        else:
            plt.plot(date,data_file.values[i][1], 'o', color ='green')
    plt.show()
    

    重要

    在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 使用快速入門檔案上的 python 命令執行應用程式

    python quickstart.py
    

輸出

在此程式碼範例中,我們已新增 matplotlib 程式庫,讓我們能夠視覺化並輕鬆區分一般資料點與變更點以及異常情形。 變更點以藍色方塊表示,異常情形是紅色三角形,而一般資料點則是綠色圓形。 日期會使用 matplotlibdate2num 方法轉換為數字,以提供適合於圖表 Y 軸的值。

螢幕擷取畫面:散佈圖上包含異常索引和變更點的結果。不同的圖形和色彩會用於不同的資料類型。

清除資源

如果您想要清除和移除異常偵測器資源,可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。 如果您不想再使用您所建立的環境變數,建議您也考慮刪除環境變數

在本快速入門中,您將了解如何使用異常偵測器服務和 cURL,偵測時間序列資料批次中的異常狀況。

如需有關異常偵測器概念的高階探討,請參閱概觀文章。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立異常偵測程式資源,以取得您的金鑰和端點。 等到部署完成後,選取 移至資源 按鈕。 您可以使用免費定價層 (F0) 來試用服務,之後可升級至付費層以用於實際執行環境。
  • 時間序列資料的有效 JSON 檔案,用來測試異常狀況。 如果您沒有自己的檔案,可以從要求本文範例建立 sample.json 檔案

擷取金鑰和端點

若要成功對異常偵測器服務發出呼叫,您將需要下列值:

變數名稱
ANOMALY_DETECTOR_ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 範例端點:https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY 當您透過 Azure 入口網站查看資源時,可以在 [金鑰和端點] 區段中找到 API 金鑰值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

建立環境變數

為您的金鑰和端點建立及指派永續性環境變數。

重要

我們建議使用適用於 Azure 資源的受控識別搭配 Microsoft Entra ID 驗證,以避免使用在雲端執行的應用程式儲存認證。

請謹慎使用 API 金鑰。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。 如果使用 API 金鑰,請安全地將它們儲存在 Azure 金鑰保存庫、定期輪替金鑰,並使用角色型存取控制和網路存取限制來限制對 Azure 金鑰保存庫 的存取。 如需在應用程式中安全地使用 API 金鑰的詳細資訊,請參閱搭配 Azure 的 API 金鑰 金鑰保存庫

如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

偵測異常

在命令提示字元中,執行下列命令。 您必須將下列值插入命令中。

  • 您的異常偵測器服務訂用帳戶金鑰。
  • 您的異常偵測器端點位址。
  • 時間序列資料的有效 JSON 檔案,用來測試異常狀況。 如果您沒有自己的檔案,可以從要求本文範例建立 sample.json 檔案。
curl -v POST "%ANOMALY_DETECTOR_ENDPOINT%/anomalydetector/v1.0/timeseries/entire/detect"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: %ANOMALY_DETECTOR_API_KEY%"
-d "@path_to_sample_file.json" 

完整命令的單行範例如下:

curl -v POST "%ANOMALY_DETECTOR_ENDPOINT%/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: %ANOMALY_DETECTOR_API_KEY%" -d "@c:\test\rest.json"

或者,如果您是從 Bash 殼層執行 cURL 命令,則命令會稍有不同:

curl -v POST "$ANOMALY_DETECTOR_ENDPOINT/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: $ANOMALY_DETECTOR_API_KEY" -d "@c:\test\rest.json"

如果使用了必要條件中的範例資料,您應該會收到回應 200,並顯示下列結果:

{
  "expectedValues": [
    827.7940908243968,
    798.9133774671927,
    888.6058431807189,
    900.5606407986661,
    962.8389426378304,
    933.2591606306954,
    891.0784104799666,
    856.1781601363697,
    809.8987227908941,
    807.375129007505,
    764.3196682448518,
    803.933498594564,
    823.5900620883058,
    794.0905641334288,
    883.164245249282,
    894.8419000690953,
    956.8430591101258,
    927.6285055190114,
    885.812983784303,
    851.6424797402517,
    806.0927886943216,
    804.6826815312029,
    762.74070738882,
    804.0251702513732,
    825.3523662579559,
    798.0404188724976,
    889.3016505577698,
    902.4226124345937,
    965.867078532635,
    937.3200495736695,
    896.1720524711102,
    862.0087368413656,
    816.4662342097423,
    814.4297745524709,
    771.8614479159354,
    811.859271346729,
    831.8998279215521,
    802.947544797165,
    892.5684407435083,
    904.5488214533809,
    966.8527063844707,
    937.3168391003043,
    895.180003672544,
    860.3649596356635,
    814.1707285969043,
    811.9054862686213,
    769.1083769610742,
    809.2328084659704
  ],
  "upperMargins": [
    41.389704541219835,
    39.94566887335964,
    44.43029215903594,
    45.02803203993331,
    48.14194713189152,
    46.66295803153477,
    44.55392052399833,
    42.808908006818484,
    40.494936139544706,
    40.36875645037525,
    38.215983412242586,
    40.196674929728196,
    41.17950310441529,
    39.70452820667144,
    44.1582122624641,
    44.74209500345477,
    47.84215295550629,
    46.38142527595057,
    44.290649189215145,
    42.58212398701258,
    40.30463943471608,
    40.234134076560146,
    38.137035369441,
    40.201258512568664,
    41.267618312897795,
    39.90202094362488,
    44.46508252788849,
    45.121130621729684,
    48.29335392663175,
    46.86600247868348,
    44.80860262355551,
    43.100436842068284,
    40.82331171048711,
    40.721488727623544,
    38.593072395796774,
    40.59296356733645,
    41.5949913960776,
    40.14737723985825,
    44.62842203717541,
    45.227441072669045,
    48.34263531922354,
    46.86584195501521,
    44.759000183627194,
    43.01824798178317,
    40.70853642984521,
    40.59527431343106,
    38.45541884805371,
    40.46164042329852
  ],
  "lowerMargins": [
    41.389704541219835,
    39.94566887335964,
    44.43029215903594,
    45.02803203993331,
    48.14194713189152,
    46.66295803153477,
    44.55392052399833,
    42.808908006818484,
    40.494936139544706,
    40.36875645037525,
    38.215983412242586,
    40.196674929728196,
    41.17950310441529,
    39.70452820667144,
    44.1582122624641,
    44.74209500345477,
    47.84215295550629,
    46.38142527595057,
    44.290649189215145,
    42.58212398701258,
    40.30463943471608,
    40.234134076560146,
    38.137035369441,
    40.201258512568664,
    41.267618312897795,
    39.90202094362488,
    44.46508252788849,
    45.121130621729684,
    48.29335392663175,
    46.86600247868348,
    44.80860262355551,
    43.100436842068284,
    40.82331171048711,
    40.721488727623544,
    38.593072395796774,
    40.59296356733645,
    41.5949913960776,
    40.14737723985825,
    44.62842203717541,
    45.227441072669045,
    48.34263531922354,
    46.86584195501521,
    44.759000183627194,
    43.01824798178317,
    40.70853642984521,
    40.59527431343106,
    38.45541884805371,
    40.46164042329852
  ],
  "isAnomaly": [
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    true,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false
  ],
  "isPositiveAnomaly": [
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    true,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false
  ],
  "isNegativeAnomaly": [
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false
  ],
  "period": 12
}

如需詳細資訊,請參閱異常偵測器 REST 參考

清除資源

如果您想要清除和移除 Azure AI 服務訂用帳戶,則可以刪除資源或資源群組。 刪除資源群組也會刪除與資源群組相關聯的任何其他資源。

下一步

概念:

教學課程: