Hub Python 函式庫文件

Webhooks 伺服器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

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)。

範例

import gradio as gr
from huggingface_hub import WebhooksServer, WebhookPayload

with gr.Blocks() as ui:
    ...

app = WebhooksServer(ui=ui, webhook_secret="my_secret_key")

@app.add_webhook("/say_hello")
async def hello(payload: WebhookPayload):
    return {"message": "hello"}

app.launch()

@webhook_endpoint

huggingface_hub.webhook_endpoint

< >

( path: str | None = None )

參數

  • path (str, 選填) — 註冊 Webhook 函式的 URL 路徑。如果未提供,將使用函式名稱作為路徑。無論如何,所有 Webhooks 都會註冊在 /webhooks 下。

用於啟動 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

class huggingface_hub.WebhookPayloadMovedTo

< >

( name: str owner: ObjectId )

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 )

WebhookPayloadUrl

class huggingface_hub.WebhookPayloadUrl

< >

( web: str api: str | None = None )

WebhookPayloadWebhook

class huggingface_hub.WebhookPayloadWebhook

< >

( id: str version: typing.Literal[3] )

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.