Hub Python 庫文件
Webhooks 伺服器
並獲得增強的文件體驗
開始使用
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)。
@webhook_endpoint
huggingface_hub.webhook_endpoint
< 原始碼 >( path: typing.Optional[str] = None )
用於啟動 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
< source >( action: typing.Literal['create', 'delete', 'move', 'update'] scope: str )
WebhookPayloadMovedTo
WebhookPayloadRepo
class huggingface_hub.WebhookPayloadRepo
< source >( 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 )