Hub Python 庫文件

Webhooks 伺服器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Webhooks 伺服器

Webhooks 是 MLOps 相關功能的基礎。它們允許您監聽特定倉庫或您感興趣的所有使用者/組織倉庫的新變化。要了解有關 Huggingface Hub 上 Webhooks 的更多資訊,您可以閱讀 Webhooks 指南

請檢視此指南,瞭解如何設定 Webhooks 伺服器並將其部署為 Space 的分步教程。

這是一個實驗性功能。這意味著我們仍在努力改進 API。未來可能會在不事先通知的情況下引入破壞性更改。請確保在您的要求中固定 `huggingface_hub` 的版本。當您使用實驗性功能時,會觸發警告。您可以透過將 `HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1` 設定為環境變數來停用它。

伺服器

該伺服器是一個 Gradio 應用。它有一個用於為您或您的使用者顯示指令的 UI,以及一個用於偵聽 webhook 的 API。實現 webhook 端點就像裝飾函式一樣簡單。然後,您可以透過將 Webhook 重定向到您的機器(使用 Gradio 隧道)來除錯它,然後再將其部署到 Space。

WebhooksServer

huggingface_hub.WebhooksServer

< >

( *args **kwargs )

引數

  • ui (gradio.Blocks, optional) — 用於作為 Space 登入頁面的 Gradio UI 例項。如果為 None,則會建立一個顯示有關已配置 webhook 的說明的 UI。
  • webhook_secret (str, optional) — 用於驗證傳入 webhook 請求的金鑰。您可以將此值設定為您想要的任何金鑰,只要您也在 webhooks 設定面板中配置它即可。您也可以將此值設定為 WEBHOOK_SECRET 環境變數。如果未提供金鑰,則 webhook 端點將以不安全的方式開啟。

WebhooksServer() 類允許您建立一個 Gradio 應用程式例項,該應用程式可以接收 Huggingface webhook。這些 webhook 可以使用 `add_webhook()` 裝飾器進行註冊。Webhook 端點作為 POST 端點新增到 FastAPI 路由器應用程式。一旦所有 webhook 都註冊完畢,必須呼叫 `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: typing.Optional[str] = None )

引數

  • path (str, optional) — 用於註冊 webhook 函式的 URL 路徑。如果未提供,則函式名稱將用作路徑。在任何情況下,所有 webhook 都將在 /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 端點並手動啟動伺服器。這在您在筆記本中執行它時很有用。

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

負載

WebhookPayload 是包含 Webhooks 負載的主要資料結構。這是一個 pydantic 類,使其非常易於與 FastAPI 一起使用。如果將其作為引數傳遞給 webhook 端點,它將自動驗證並解析為 Python 物件。

有關 webhook 負載的更多資訊,您可以參考 Webhooks 負載指南

class huggingface_hub.WebhookPayload

< >

( event: WebhookPayloadEvent repo: WebhookPayloadRepo discussion: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadDiscussion] = None comment: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadComment] = None webhook: WebhookPayloadWebhook movedTo: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadMovedTo] = None updatedRefs: typing.Optional[typing.List[huggingface_hub._webhooks_payload.WebhookPayloadUpdatedRef]] = None )

WebhookPayload

class huggingface_hub.WebhookPayload

< >

( event: WebhookPayloadEvent repo: WebhookPayloadRepo discussion: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadDiscussion] = None comment: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadComment] = None webhook: WebhookPayloadWebhook movedTo: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadMovedTo] = None updatedRefs: typing.Optional[typing.List[huggingface_hub._webhooks_payload.WebhookPayloadUpdatedRef]] = None )

WebhookPayloadComment

class huggingface_hub.WebhookPayloadComment

< >

( id: str author: ObjectId hidden: bool content: typing.Optional[str] = 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: typing.Optional[huggingface_hub._webhooks_payload.WebhookPayloadDiscussionChanges] = None pinned: typing.Optional[bool] = None )

WebhookPayloadDiscussionChanges

class huggingface_hub.WebhookPayloadDiscussionChanges

< >

( base: str mergeCommitId: typing.Optional[str] = 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: typing.Optional[str] = None name: str private: bool subdomain: typing.Optional[str] = None tags: typing.Optional[typing.List[str]] = None type: typing.Literal['dataset', 'model', 'space'] url: WebhookPayloadUrl )

WebhookPayloadUrl

class huggingface_hub.WebhookPayloadUrl

< >

( web: str api: typing.Optional[str] = None )

WebhookPayloadWebhook

class huggingface_hub.WebhookPayloadWebhook

< >

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

< > 在 GitHub 上更新

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