Azure Functions 提供無伺服器運算資源,能整合 AI 和 Azure 服務,協助你打造雲端託管的智慧應用程式。 本文探討與 AI 相關的情境、整合以及可用於功能應用的資源。
請參考下表,根據工作開始方式及其他元件如何消耗工作來選擇整合:
| Option | 最適用 | 召喚模型 | 重要考慮 |
|---|---|---|---|
| Azure Functions 託管技能 | 透過宣告式指令與工具,將 AI 推理加入事件驅動的工作負載。 | 函式觸發器或可選內建的 HTTP 與 MCP 端點 | Preview |
| Python 的代理綁定 | 在保留程式碼驅動的驗證、分支、錯誤與輸出控制的同時,將有界代理推理加入 Python 函式。 | 標準的函式觸發器會呼叫 Python 程式碼,呼叫注入的 Microsoft Agent Framework Agent 物件 |
預覽;僅限 Python |
| 模型上下文協定(MCP)端點實作 | 將同步且可重用的工具暴露給 Microsoft Foundry 代理程式及其他 MCP 用戶端。 | 可串流 HTTP 协议 | 可在託管技能、正式可用的 MCP 擴充功能,以及以 SDK 為基礎的預覽版託管之間選擇。 |
| 以佇列為基礎的 Azure Functions 工具 | 為 Microsoft Foundry 代理執行非同步背景工具。 | Azure 佇列儲存體 輸入與輸出佇列 | Foundry 專用;需要 Foundry 代理並維持標準設定。 |
| 代理工作流程 | 協調長期或多階段的 AI 工作,這些工作必須在重啟和等待中存活。 | 由應用程式事件啟動的持久編排 | 選擇直接 Durable Functions 協調流程或託管技能動態工作流程。 |
本文是特定語言,因此請確定您在 頁面頂端選擇您的程式設計語言。
Azure Functions 託管技能
Azure Functions 託管技能是一種用於在 Azure Functions 上建構雲端託管、事件驅動智慧能力的程式設計模型。 你可以用 Markdown、自然語言指令和宣告式設定來定義行為。 執行時會發現 .agent.md 檔案、登錄觸發器和端點,並在事件觸發時執行託管技能。
Important
Azure Functions 託管技能目前處於預覽階段。 功能、設定名稱及支援的連接器在正式上市前可能會變更。
你不需要寫 Python 程式碼來定義託管技能。 你可以在 Markdown 和設定檔中定義它的行為、觸發條件和設定工具。 如果你需要超出這些設定功能的自訂應用程式邏輯,可以加入自訂的 Python 工具。
當你想在事件驅動的應用程式中加入智慧行為,回應 HTTP 請求、排程、訊息、資料變更、管理連接器事件或其他事件時,可以使用 Azure Functions 的託管技能。 你也可以啟用可選 的內建 MCP 端點 ,將每個託管技能作為 AI 驅動的工具,供其他應用程式、代理或代理工具使用。
要開始,請參考以下文章:
Python 的代理綁定
Important
Python 函式應用程式的代理綁定目前處於預覽階段。 功能、套件名稱及設定在正式推出前可能會變更。
代理綁定會將已設定的 Microsoft Agent Framework Agent 物件加入標準 Python 函式調用。 函式控制其觸發器與確定性應用邏輯,處理者則決定是否、何時以及如何呼叫代理。
當 Python 函式是主要執行模型,且 Agent 推理是其工作中唯一有界部分時,請使用 Agent 綁定。 當宣告定義的託管技能是應用程式的主要執行模型時,請改用 Azure Functions 託管技能。 當您的程式碼必須控制整個代理生命週期,而非透過綁定接收已設定的代理時,請直接使用 Microsoft 代理框架 SDK。
代理綁定也支援來自 Durable Functions 編排的重播安全代理呼叫。 想了解更多並開始,請參閱 Azure Functions 中的 Python 代理綁定。
工具和 MCP 伺服器
AI 模型和代理程式使用 函數呼叫 來請求稱為 工具的外部資源。 透過函式調用,模型與代理能根據對話或任務的情境動態調用特定功能。
函數特別適合在代理式工作流程中實作函式呼叫,因為它能有效擴展以應付需求,並提供綁定擴展功能,簡化代理與遠端Azure服務的連結。 當您在 Functions 中建置或託管 AI 工具時,您也可以獲得無伺服器定價模型和平台安全功能。
MCP 是與遠端伺服器互動的業界標準。 它為 AI 模型和代理提供了一種與外部系統通信的標準化方式。 透過使用 MCP 伺服器,這些 AI 用戶端能有效判斷外部系統的工具與能力。
Azure Functions 目前支援透過以下工具來暴露你的函式程式碼:
| 工具類型 | 說明 |
|---|---|
| 適用於託管技能的內建 MCP 端點 | 透過內建的 MCP 端點,展示將 AI 推理作為工具的託管技能。 |
| 遠端 MCP 伺服器 | 建立確定性 MCP 工具或主機基於 SDK 的 MCP 伺服器以進行同步工具呼叫。 |
| 基於隊列的Azure Functions工具 | 使用 Microsoft Foundry 專用工具,透過訊息佇列進行非同步函式呼叫。 |
選擇如何暴露 MCP 端點
Functions 支援以下用於透過 MCP 公開功能的選項:
- 啟用 Azure Functions 託管技能的內建 MCP 端點,以公開定義於
.agent.md檔案中的 AI 支援工具。 託管式技能目前處於預覽階段。 - 使用 MCP 綁定擴充功能 來建立並架設確定性 MCP 工具,就像使用其他函式應用程式一樣。
- 自架MCP伺服器,使用官方MCP SDK建立。 此託管選項目前處於預覽狀態。
以下是 Functions 目前 MCP 端點選項的比較:
| 特徵 / 功能 | 適用於託管技能的內建 MCP 端點 | MCP 綁定擴展 | 自架 MCP 伺服器 |
|---|---|---|---|
| 最適用 | 將 AI 驅動的託管技能作為 MCP 工具公開。 | 建立具有函數觸發器和綁定的確定性 MCP 工具。 | 架設一台已建立的官方 MCP SDK 伺服器。 |
| 目前的支援層級 | Preview | 普遍可用 | 預展* |
| 程式設計模型 |
.agent.md託管技能 |
功能觸發器和繫結 | 標準 MCP SDK |
| 具狀態執行 | 支援工作階段歷程記錄 | 支援 | 目前不支援 |
| 自訂程式碼語言 | Python(可選自訂工具) | C# (隔離程序) Python TypeScript JavaScript JAVA |
C# (隔離程序) Python TypeScript JAVA |
| 主機方案 | 彈性使用量 進階 專用 (App Service) |
Azure Functions 支援的主控方案 | 僅適用於彈性用量計費 |
| 其他要求 | 在託管技能中啟用builtin_endpoints.mcp |
None | 使用可串流 HTTP 傳輸的無狀態伺服器 |
| 如何實施 | 託管技能執行環境中的內建 MCP 端點 | MCP 綁定擴展 | 自訂處理程式 |
*自我裝載 MCP 伺服器的組態詳細資料會在預覽期間變更。
請使用以下語言專屬資源,開始在 Functions 中使用遠端 MCP 伺服器:
針對 C#,請比較以下關於 MCP 擴充套件與以 SDK 為基礎的託管的資源:
| 選項 | MCP 綁定擴展 | 自架設 MCP 伺服器 |
|---|---|---|
| 文件資料 | MCP 綁定擴展 | 不適用 |
| Samples | 遠端自訂 MCP 伺服器 | 天氣伺服器 |
| 範本 | HelloTool | 不適用 |
針對 Python,請比較下列有關 MCP 擴充功能與以 SDK 為基礎的託管的資源:
| 選項 | MCP 綁定擴展 | 自架設 MCP 伺服器 |
|---|---|---|
| 文件資料 | MCP 綁定擴展 | 不適用 |
| Samples | 遠端自訂 MCP 伺服器 | 天氣伺服器 |
對於 TypeScript,請比較以下針對 MCP 擴充功能和以 SDK 為基礎的託管的資源:
| 選項 | MCP 綁定擴展 | 自架設 MCP 伺服器 |
|---|---|---|
| 文件資料 | MCP 綁定擴展 | 不適用 |
| Samples | 遠端自訂 MCP 伺服器 | 天氣伺服器 |
JavaScript 則使用 MCP 擴充資源。 支援基於 SDK 的主機,但目前尚無 JavaScript 快速啟動功能。
| 選項 | MCP 綁定擴展 | 自架設 MCP 伺服器 |
|---|---|---|
| 文件資料 | MCP 綁定擴展 | 不適用 |
| Samples | 尚未提供 | 尚未提供 |
對於 Java,請使用 MCP 擴充功能文件。 目前尚無語言專屬範例。
| 選項 | MCP 綁定擴展 | 自架設 MCP 伺服器 |
|---|---|---|
| 文件資料 | MCP 綁定擴展 | 不適用 |
| Samples | 尚未提供 | 尚未提供 |
任一 MCP 伺服器裝載選項目前不支援 PowerShell。
為 Microsoft Foundry Agent Service 選擇以佇列為基礎的 Azure Functions 工具
Microsoft Foundry Agent Service 也提供 Azure Functions 專用的非同步函式呼叫工具。 代理程式會將請求放入 Azure 佇列儲存體 輸入佇列。 一個由隊列觸發的函式處理請求,並透過輸出佇列回傳結果。
使用此 Foundry 專屬整合來執行不需要立即回應,且可受益於可靠訊息傳遞與重試機制的背景作業。 對於同步互動或想與其他 AI 客戶端重複使用的工具,建議使用 MCP 伺服器。
基於隊列的 Azure Functions 工具需要具備標準設定的 Foundry 代理。 若要檢視支援的 SDK 並建立工具,請參閱使用 Azure Functions with Foundry Agent Service。
代理工作流程
當您的應用程式碼定義可靠的代理呼叫、模型呼叫、核准及其他工作序列時,請使用 Durable Functions。 Durable Functions 能在等待與重啟間保留編排狀態,並支援功能鏈、扇出/扇入及人工互動等常見模式。
如果你使用 Azure Functions 託管的技能,動態工作流程提供預覽選項,模型會建立結構化的工具呼叫、子代理任務和等待計畫。 託管技能執行階段會將該計畫作為 Durable Functions 協調流程來執行。 當工作可在一次互動中完成時,使用直接呼叫工具;當工作必須跨越單一回合、分支展開、等待,或在重新啟動後繼續執行時,則使用動態工作流程。
| Option | 誰來定義工作流程 | 最適用 | 重要考慮 |
|---|---|---|---|
| 直接 Durable Functions 流程協調 | 應用程式程式碼 | 具備明確控制流程、重試、等待與核准的可預測工作流程 | 使用適用於您所用語言的 Durable Functions 程式設計模型。 |
| 託管技能動態工作流程 | AI 模型 | 可在執行階段規劃工具呼叫、子代理任務、等待及分支展開的自適應工作流程 | 預覽版:需要 Azure Functions 託管技能。 |
實作指引請參閱 應用程式模式 及 建立與執行動態工作流程。
Azure Functions 的 AI 工具與框架
有了 Functions,你可以用你喜歡的語言建立應用程式,並使用你喜歡的函式庫。 由於這種彈性,您可以在已啟用 AI 的函式應用程式中使用各種 AI 程式庫和架構。
這些 Microsoft AI 平台與框架支援不同的應用程式架構:
| 平台或框架 | 最適用 | 它如何與 Azure Functions 合作 |
|---|---|---|
| Microsoft 代理程式架構 | 以程式碼為優先的代理邏輯與在你應用程式中執行的工作流程 | 在你的函式程式碼中執行框架 SDK。 |
| Microsoft Foundry 代理服務 | 使用 Functions 託管工具的管理代理 | 以託管服務的形式建立及管理代理。 Foundry 代理可以透過 MCP、佇列或 OpenAPI 呼叫由 Functions 所託管的工具。 |
| Microsoft Foundry SDK | 不需要受管理代理程式的直接模型與服務呼叫 | 直接從你的函式程式碼呼叫 Foundry 模型與服務。 |
在 Functions 中,你的應用程式也能參考第三方函式庫和框架,讓你能在 AI 功能中使用所有喜愛的 AI 工具和函式庫。