Hub Python 庫文件
Webhooks 伺服器
並獲得增強的文件體驗
開始使用
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
)。
@webhook_endpoint
huggingface_hub.webhook_endpoint
< 來源 >( path: typing.Optional[str] = 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 端點並手動啟動伺服器。這在您在筆記本中執行它時很有用。
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
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 )