Hub Python 函式庫文件
Webhooks 伺服器
並獲得增強的文件體驗
開始使用
Webhooks 伺服器
Webhooks 是 MLOps 相關功能的基礎。它們允許您監聽特定儲存庫,或您感興趣的特定使用者/組織所屬的所有儲存庫中的變更。若要進一步了解 Hugging Face Hub 上的 Webhooks,您可以閱讀 Webhooks 指南。
請參閱此 指南,獲取關於如何設定 Webhooks 伺服器並將其部署為 Space 的分步驟教學。
這是一項實驗性功能。這意味著我們仍在努力改進 API。未來可能會在未經事先通知的情況下引入重大變更(Breaking changes)。請務必在您的 requirements 中鎖定
huggingface_hub的版本。當您使用實驗性功能時會觸發警告。您可以透過設定環境變數HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1來停用該警告。
伺服器
此伺服器是一個 Gradio 應用程式。它具有用於為您或您的使用者顯示說明的使用者介面 (UI),以及用於監聽 Webhooks 的 API。實作 Webhook 端點就像裝飾一個函式一樣簡單。您可以在將其部署到 Space 之前,透過將 Webhooks重新導向到您的機器(使用 Gradio 通道)來進行偵錯。
WebhooksServer
huggingface_hub.WebhooksServer
< 原始碼 >( *args **kwargs )
參數
- ui (
gradio.Blocks, 選填) — 用作 Space 登陸頁面的 Gradio UI 實例。如果為None,則會建立一個顯示關於已設定 Webhooks 說明的 UI。 - webhook_secret (
str, 選填) — 用於驗證傳入 Webhook 請求的密鑰。您可以將此值設定為您想要的任何密鑰,只要您同時在您的 Webhooks 設定面板 中設定即可。您也可以將此值設定為WEBHOOK_SECRET環境變數。如果未提供密鑰,則 Webhook 端點將在沒有任何安全保護的情況下開啟。
WebhooksServer() 類別允許您建立一個可以接收 Hugging Face Webhooks 的 Gradio 應用程式實例。這些 Webhooks 可以使用 add_webhook() 裝飾器來註冊。Webhook 端點會作為 POST 端點新增至應用程式的 FastAPI 路由器中。一旦所有 Webhooks 都註冊完畢,就必須呼叫 launch 方法來啟動應用程式。
建議接受 WebhookPayload 作為 Webhook 函式的第一個參數。它是一個 Pydantic 模型,其中包含關於 Webhook 事件的所有資訊。資料將會自動為您解析。
請參閱 Webhooks 指南,以獲取關於如何設定您的 WebhooksServer 並將其部署在 Space 上的分步驟教學。
WebhooksServer是實驗性的。其 API 未來可能會有所變更。
您必須安裝
gradio才能使用WebhooksServer(pip install --upgrade gradio)。
@webhook_endpoint
huggingface_hub.webhook_endpoint
< 原始碼 >( path: str | None = None )
用於啟動 WebhooksServer() 並將被裝飾的函式註冊為 Webhook 端點的裝飾器。
這是一個幫助您快速入門的工具。如果您需要更大的靈活性(自訂登陸頁面或 Webhook 密鑰),您可以直接使用 WebhooksServer()。您可以透過多次使用此裝飾器,將多個 Webhook 端點註冊到同一個伺服器。
請參閱 Webhooks 指南,以獲取關於如何設定您的伺服器並將其部署在 Space 上的分步驟教學。
webhook_endpoint是實驗性的。其 API 未來可能會有所變更。
您必須安裝
gradio才能使用webhook_endpoint(pip install --upgrade gradio)。
範例:預設用法是將函式註冊為 Webhook 端點。函式名稱將用作路徑。伺服器將在退出時(即腳本結束時)自動啟動。
from huggingface_hub import webhook_endpoint, WebhookPayload
@webhook_endpoint
async def trigger_training(payload: WebhookPayload):
if payload.repo.type == "dataset" and payload.event.action == "update":
# Trigger a training job if a dataset is updated
...
# Server is automatically started at the end of the script.進階用法:將函式註冊為 Webhook 端點並手動啟動伺服器。如果您是在筆記本 (notebook) 中執行,這將非常有用。
from huggingface_hub import webhook_endpoint, WebhookPayload
@webhook_endpoint
async def trigger_training(payload: WebhookPayload):
if payload.repo.type == "dataset" and payload.event.action == "update":
# Trigger a training job if a dataset is updated
...
# Start the server manually
trigger_training.launch()負載 (Payload)
WebhookPayload 是包含來自 Webhooks 的負載 (payload) 的主要資料結構。這是一個 pydantic 類別,使得它非常容易與 FastAPI 一起使用。如果您將其作為參數傳遞給 Webhook 端點,它將自動被驗證並解析為 Python 物件。
有關 Webhooks 負載的更多資訊,您可以參考 Webhooks 負載 指南。
class huggingface_hub.WebhookPayload
< 原始碼 >( event: WebhookPayloadEvent repo: WebhookPayloadRepo discussion: huggingface_hub._webhooks_payload.WebhookPayloadDiscussion | None = None comment: huggingface_hub._webhooks_payload.WebhookPayloadComment | None = None webhook: WebhookPayloadWebhook movedTo: huggingface_hub._webhooks_payload.WebhookPayloadMovedTo | None = None updatedRefs: list[huggingface_hub._webhooks_payload.WebhookPayloadUpdatedRef] | None = None )
WebhookPayload
class huggingface_hub.WebhookPayload
< 原始碼 >( event: WebhookPayloadEvent repo: WebhookPayloadRepo discussion: huggingface_hub._webhooks_payload.WebhookPayloadDiscussion | None = None comment: huggingface_hub._webhooks_payload.WebhookPayloadComment | None = None webhook: WebhookPayloadWebhook movedTo: huggingface_hub._webhooks_payload.WebhookPayloadMovedTo | None = None updatedRefs: list[huggingface_hub._webhooks_payload.WebhookPayloadUpdatedRef] | None = None )
WebhookPayloadComment
class huggingface_hub.WebhookPayloadComment
< 原始碼 >( id: str author: ObjectId hidden: bool content: str | None = None url: WebhookPayloadUrl )
WebhookPayloadDiscussion
class huggingface_hub.WebhookPayloadDiscussion
< 原始碼 >( id: str num: int author: ObjectId url: WebhookPayloadUrl title: str isPullRequest: bool status: typing.Literal['closed', 'draft', 'open', 'merged'] changes: huggingface_hub._webhooks_payload.WebhookPayloadDiscussionChanges | None = None pinned: bool | None = None )
WebhookPayloadDiscussionChanges
class huggingface_hub.WebhookPayloadDiscussionChanges
< 原始碼 >( base: str mergeCommitId: str | None = None )
WebhookPayloadEvent
class huggingface_hub.WebhookPayloadEvent
< 原始碼 >( action: typing.Literal['create', 'delete', 'move', 'update'] scope: str )
WebhookPayloadMovedTo
WebhookPayloadRepo
class huggingface_hub.WebhookPayloadRepo
< 原始碼 >( id: str owner: ObjectId head_sha: str | None = None name: str private: bool subdomain: str | None = None tags: list[str] | None = None type: typing.Literal['dataset', 'model', 'space'] url: WebhookPayloadUrl )