Hub Python 庫文件

Webhooks 伺服器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Webhooks 伺服器

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

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

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

伺服器

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

WebhooksServer

huggingface_hub.WebhooksServer

< >

( *args **kwargs )

引數

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

WebhooksServer() 類允許您建立一個可以接收 Huggingface webhooks 的 Gradio 應用例項。這些 webhooks 可以使用 add_webhook() 裝飾器進行註冊。Webhook 端點作為 POST 端點新增到 FastAPI 路由器。註冊完所有 webhooks 後,必須呼叫 launch 方法來啟動應用。

建議將 WebhookPayload 作為 webhook 函式的第一個引數。它是一個 Pydantic 模型,包含有關 webhook 事件的所有資訊。資料將被自動為您解析。

有關如何設定 WebhooksServer 並將其部署到 Space 的分步教程,請檢視 webhooks 指南

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, 可選) — 用於註冊 webhook 函式的 URL 路徑。如果未提供,則將使用函式名作為路徑。無論如何,所有 webhooks 都註冊在 /webhooks 下。

用於啟動 WebhooksServer() 並將裝飾的函式註冊為 webhook 端點的裝飾器。

這是一個快速入門的輔助工具。如果您需要更大的靈活性(自定義登入頁面或 webhook 金鑰),您可以直接使用 WebhooksServer()。您可以透過多次使用此裝飾器來註冊多個 webhook 端點(到同一個伺服器)。

有關如何設定伺服器並將其部署到 Space 的分步教程,請檢視 webhooks 指南

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[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[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[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.