共用方式為


Python 工具在 Azure SRE 代理中

Python 工具能將 Azure SRE 代理程式擴展至原生 Azure 功能之外。 建立可連接內部 API、本地資料庫、多雲平台及專有系統的客製化工具,使用 Python 程式碼。 用淺顯的英文描述你需要什麼,貼上現有腳本,或封裝 HTTP 端點,然後測試並部署,無需重啟。

小提示

  • 擴展你的代理程式,以覆蓋它沒有內建支援的系統。
  • 連接內部 API、本地資料庫及多雲平台。
  • 編碼自訂商業邏輯(SLA 計算、成本模型、合規規則)。

問題

您的代理內建強大的 Azure 工具,包括 Kusto 查詢、Azure Monitor 和 ARM 操作。 但你的組織並非完全存在於 Azure:

  • 內部系統:CMDB 資料庫、自訂工單系統,以及只有你組織使用的內部 API。
  • 多雲:Datadog 儀表板、Splunk 記錄和 AWS CloudWatch 指標,與 Azure 一併顯示。
  • 舊有基礎設施:本地資料庫、專有協定,以及沒有現代 API 的系統。
  • 自訂業務邏輯:針對合約的 SLA 計算、成本分配公式及產能規劃模型。

代理程式可以診斷 Azure 的問題,但除非你擴展它,否則它無法進入你的內部系統或套用你組織獨特的邏輯。

Python 工具的運作方式

Python 工具讓你能教代理新能力。 描述你需要什麼,產生程式碼,測試並部署。 你的代理人員就能存取系統並套用以前無法實現的邏輯。

Python 工具對話框的截圖。

產生的程式碼遵循一致的模式:

  • 一個 main() 接受具特定型別參數的函數。
  • 可被 JSON 序列化的回傳值。
  • 描述性註釋說明其邏輯。

在建立工具之前,先用實際輸入在 Playground 中測試。 輸入參數值,選擇 Test,就能看到實際結果,而不只是語法驗證。

測試遊樂場的螢幕擷取畫面,顯示已成功執行並得到 SLA 計算結果。

測試完工具後,選擇 建立工具。 你的代理程式可以立即使用,無需重啟,也不需要部署管線。

Python 工具與 MCP 連接器的比較

對於第三方平台,你有兩個選擇。

方法 最適合用於 Examples
MCP 連接器 具備標準 API 的熱門平台 Datadog、Splunk、ServiceNow、GitHub
Python 工具 內部系統、自訂邏輯、無 MCP 的平台 你的 CMDB、專有 API、自訂計算

當平台已有連接器時,請使用MCP連接器。 MCP 提供結構化結構、認證管理及一致行為。

當你需要連接內部系統、編寫自訂商業邏輯,或連接不支援 MCP 的平台時,使用 Python 工具

這點有什麼不同

下表比較了代理程式在使用 Python 工具時與否的能力。

沒有 Python 工具 使用 Python 工具
代理程式只能使用內建功能 代理程式可存取任何 Python 能呼叫的系統
內部 API 需要獨立的工作流程 內部系統成為代理工具
自訂邏輯存在於外部腳本中 業務規則在客服人員對話中執行
本地系統與代理程式斷開連接 混合環境完全無障礙

Python 工具能將你的代理從 Azure 原生助理轉變為可擴充的平台,能與整個基礎架構相連。

前後比較

之前 之後
「我們的CMDB在本地,客服人員看不到。」 Python 工具透過網路存取查詢內部系統
「我們有尚未有人自動化的獨特SLA公式」 將你的公式編碼為工具;代理人會自動套用
「合規報告需要特定的 PDF 格式」 使用 ReportLab 生成並透過代理程式提供報告

先決條件

  • Builder 可存取 Azure SRE Agent。
  • 對於 HTTP 端點:目標系統的 URL 與認證憑證。

建立一個 Python 工具

你可以用三種方法來建立 Python 工具。

方法 你提供 代理人執行 最適合用於
請用淺顯的英文描述 「計算運作時間與停機時間的SLA」 產生完整的 Python 程式碼 快速自訂邏輯,完全不需要寫程式
貼上現有程式碼 你的 Python 函式 將它包裝成工具 遷移現有腳本,複雜邏輯
呼叫 HTTP 端點 端點網址與認證 透過 HTTP 呼叫你的 API Azure Functions,Lambda,內部 API,webhooks

選項一:讓 AI 來寫程式碼

在對話框中描述你需要什麼,然後選擇 產生。 AI 會建立一個可運作的 Python 函式,具備型別參數、錯誤處理和文件串功能。

你描述了: 「計算 SLA 合規率,計算運作時間與停機分鐘數,回傳是否達到 99.9% 門檻」

代理生成: 一個 main() 完整的函數,準備好進行測試與部署。

選項二:自備代碼

把現有的 Python 貼到 程式碼 分頁。函數必須遵循以下模式:

def main(param1: str, param2: int) -> dict:
    # Your logic here
    return {"result": "value"}

選項三:呼叫 HTTP 端點

將任何 HTTP 端點(Azure Functions、AWS Lambda、內部 API 或 webhooks)包裝成 Python 工具:

def main(input_data: str) -> dict:
    import requests

    # Azure Function with function key
    response = requests.post(
        "https://<FUNCTION_APP_NAME>.azurewebsites.net/api/<ENDPOINT>?code=<FUNCTION_KEY>",
        json={"data": input_data}
    )

    # Or internal API with bearer token
    # response = requests.get(
    #     "https://internal-api.corp/resource",
    #     headers={"Authorization": "Bearer <API_TOKEN>"}
    # )

    return response.json()

備註

Python 工具有外撥網路存取權。 你可以呼叫任何網路允許的 HTTP 端點。 對於已認證的端點,請在標頭或查詢參數中加入 API 金鑰或權杖。

範例案例

以下範例展示了 Python 工具的常見使用案例。

內部 CMDB 查詢:

def main(server_name: str) -> dict:
    """Query internal CMDB for server configuration."""
    import requests
    response = requests.get(f"https://cmdb.internal.corp/api/servers/{server_name}")
    return response.json()

自訂SLA計算:

def main(uptime_minutes: int, downtime_minutes: int) -> dict:
    """Calculate SLA using your organization's formula."""
    total = uptime_minutes + downtime_minutes
    sla = (uptime_minutes / total) * 100 if total > 0 else 100.0
    return {"sla_percent": round(sla, 4), "meets_target": sla >= 99.9}

合規報告產生:

def main(incidents: list, month: str) -> dict:
    """Generate PDF compliance report."""
    from reportlab.platypus import SimpleDocTemplate
    doc = SimpleDocTemplate(f"/mnt/data/compliance-{month}.pdf")
    # Build report...
    return {"report_path": f"/api/files/compliance-{month}.pdf"}

確認你的工具能正常運作

建立工具後,請在新聊天室測試:

Calculate SLA for 43185 minutes uptime and 15 minutes downtime

你的客服應該能辨識到這個任務符合你的工具,並自動呼叫它。

執行環境

下表描述了 Python 工具的執行環境。

房產 價值
逾時 5 到 900 秒(預設:120)
隔離 每次執行使用全新的容器
檔案系統 /mnt/data 用於暫存檔案
Network 啟用外線連線
Packages 700+ 預裝(Pandas、Requests、Azure Identity、ReportLab 等)
狀態 通話間沒有持續性

Azure 資源驗證

Python 工具可以透過預設範圍的管理身份來驗證 Azure 資源。

Scope 存取
ARM Azure Resource Manager (management.azure.com
金鑰保管庫 秘密、金鑰、憑證(vault.azure.net
儲存空間 Blob、佇列、資料表儲存(storage.azure.com

建立工具時,請在 身份 標籤中啟用認證。

局限性

  • 無持續狀態:每次執行都從頭開始。 如果需要,可以把結果存到外部。
  • 最大超時時間:長程操作需 900 秒(15 分鐘)。
  • 沒有 GPU:只支援 CPU 的執行環境。
  • 需要 JSON 輸出:回傳值必須是可序列化的 JSON。

下一個步驟