Hub 文件

Webhooks

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Webhooks

Webhooks 現已公開!

Webhooks 是 MLOps 相關功能的基礎。它們允許您監聽特定倉庫或屬於特定使用者/組織集的所有倉庫(不僅僅是您的倉庫,而是任何倉庫)的新更改。

您可以使用它們自動轉換模型、構建社群機器人,或為您的模型、資料集和 Spaces 構建 CI/CD(以及更多!)。

Webhooks 的文件在下方 – 您也可以瀏覽我們的 指南,其中展示了 Webhooks 的一些可能用例。

建立您的 Webhook

您可以在 Webhooks 設定中建立新的 Webhooks 並編輯現有的 Webhooks。

Settings of an individual webhook

Webhooks 可以監視倉庫更新、Pull Requests、討論和新評論。甚至可以建立一個 Space 來響應您的 Webhooks!

Webhook 有效載荷

註冊 Webhook 後,您將透過指定目標 URL 上的 HTTP POST 呼叫收到新事件通知。有效載荷以 JSON 格式編碼。

您可以在 webhook 設定頁面的活動選項卡中檢視傳送的有效載荷歷史記錄,也可以重播過去的 webhooks 以便更輕鬆地除錯。

image.png

例如,這是一個 Pull Request 開啟時的完整有效載荷:

{
  "event": {
    "action": "create",
    "scope": "discussion"
  },
  "repo": {
    "type": "model",
    "name": "openai-community/gpt2",
    "id": "621ffdc036468d709f17434d",
    "private": false,
    "url": {
      "web": "https://huggingface.co/openai-community/gpt2",
      "api": "https://huggingface.co/api/models/openai-community/gpt2"
    },
    "owner": {
      "id": "628b753283ef59b5be89e937"
    }
  },
  "discussion": {
    "id": "6399f58518721fdd27fc9ca9",
    "title": "Update co2 emissions",
    "url": {
      "web": "https://huggingface.co/openai-community/gpt2/discussions/19",
      "api": "https://huggingface.co/api/models/openai-community/gpt2/discussions/19"
    },
    "status": "open",
    "author": {
      "id": "61d2f90c3c2083e1c08af22d"
    },
    "num": 19,
    "isPullRequest": true,
    "changes": {
      "base": "refs/heads/main"
    }
  },
  "comment": {
    "id": "6399f58518721fdd27fc9caa",
    "author": {
      "id": "61d2f90c3c2083e1c08af22d"
    },
    "content": "Add co2 emissions information to the model card",
    "hidden": false,
    "url": {
      "web": "https://huggingface.co/openai-community/gpt2/discussions/19#6399f58518721fdd27fc9caa"
    }
  },
  "webhook": {
    "id": "6390e855e30d9209411de93b",
    "version": 3
  }
}

事件

頂層屬性 event 始終指定並用於確定事件的性質。

它有兩個子屬性:event.actionevent.scope

event.scope 將是以下值之一:

  • "repo" - 倉庫上的全域性事件。關聯 action 的可能值:"create", "delete", "update", "move"
  • "repo.content" - 倉庫內容上的事件,例如新的提交或標籤。由於新建立的引用/提交,它也會觸發新的 Pull Requests。關聯 action 始終為 "update"
  • "repo.config" - 配置上的事件:更新 Space 金鑰,更新設定,更新 DOI,啟用或停用等。關聯 action 始終為 "update"
  • "discussion" - 建立討論或 Pull Request,更新標題或狀態,以及合併。關聯 action 的可能值:"create", "delete", "update"
  • "discussion.comment" - 建立、更新和隱藏評論。關聯 action 的可能值:"create", "update"

未來可能會新增更多範圍。為了處理未知事件,您的 webhook 處理程式可以將縮小範圍內的任何操作視為擴大範圍內的 "update" 操作。

例如,如果未來添加了 "repo.config.dois" 範圍,則您的 webhook 處理程式可以將具有該範圍的任何事件視為 "repo.config" 範圍上的 "update" 操作。

倉庫

在當前版本的 webhooks 中,頂級屬性 repo 始終被指定,因為事件始終可以與倉庫關聯。例如,考慮以下值:

"repo": {
	"type": "model",
	"name": "some-user/some-repo",
	"id": "6366c000a2abcdf2fd69a080",
	"private": false,
	"url": {
		"web": "https://huggingface.co/some-user/some-repo",
		"api": "https://huggingface.co/api/models/some-user/some-repo"
	},
	"headSha": "c379e821c9c95d613899e8c4343e4bfee2b0c600",
	"tags": [
		"license:other",
		"has_space"
	],
	"owner": {
		"id": "61d2000c3c2083e1c08af22d"
	}
}

repo.headSha 是倉庫 main 分支上最新提交的 sha。它僅在 event.scope"repo" 開頭時傳送,而不傳送給討論和評論等社群事件。

程式碼變更

在程式碼變更時,頂層屬性 updatedRefs 在倉庫事件中指定。它是一個包含已更新引用的陣列。以下是示例值:

"updatedRefs": [
  {
    "ref": "refs/heads/main",
    "oldSha": "ce9a4674fa833a68d5a73ec355f0ea95eedd60b7",
    "newSha": "575db8b7a51b6f85eb06eee540738584589f131c"
  },
  {
    "ref": "refs/tags/test",
    "oldSha": null,
    "newSha": "575db8b7a51b6f85eb06eee540738584589f131c"
  }
]

新建立的引用將把 oldSha 設定為 null。已刪除的引用將把 newSha 設定為 null

您可以對特定 pull request 中的新提交、新標籤或新分支作出反應。

配置更改

當頂級屬性 event.scope"repo.config" 時,會指定 updatedConfig 屬性。它是一個包含更新配置的物件。以下是示例值:

"updatedConfig": {
  "private": false
}

或者

"updatedConfig": {
  "xetEnabled": true,
}

或者,當更新的配置鍵不受 webhook 支援時:

"updatedConfig": {}

目前只支援 privatexetEnabled。如果您需要更多配置鍵,請透過 website@huggingface.co 告知我們。

討論和 Pull Requests

頂級屬性 discussion 在社群事件(討論和 Pull Requests)中指定。discussion.isPullRequest 屬性是一個布林值,指示討論是否也是 Pull Request(在 Hub 上,PR 是一種特殊型別的討論)。以下是示例值:

"discussion": {
	"id": "639885d811ae2bad2b7ba461",
	"title": "Hello!",
	"url": {
		"web": "https://huggingface.co/some-user/some-repo/discussions/3",
		"api": "https://huggingface.co/api/models/some-user/some-repo/discussions/3"
	},
	"status": "open",
	"author": {
		"id": "61d2000c3c2083e1c08af22d"
	},
	"isPullRequest": true,
	"changes": {
		"base": "refs/heads/main"
	}
	"num": 3
}

評論

當評論被建立(包括在討論建立時)或更新時,頂級屬性 comment 會被指定。以下是示例值:

"comment": {
	"id": "6398872887bfcfb93a306f18",
	"author": {
		"id": "61d2000c3c2083e1c08af22d"
	},
	"content": "This adds an env key",
	"hidden": false,
	"url": {
		"web": "https://huggingface.co/some-user/some-repo/discussions/4#6398872887bfcfb93a306f18"
	}
}

Webhook 金鑰

設定 Webhook 金鑰有助於確保傳送到您的 Webhook 處理程式 URL 的有效負載確實來自 Hugging Face。

如果您為 Webhook 設定了金鑰,它將作為 X-Webhook-Secret HTTP 標頭隨每個請求傳送。僅支援 ASCII 字元。

也可以將金鑰直接新增到處理程式 URL 中。例如,將其設定為查詢引數:https://example.com/webhook?secret=XXX。

如果您的 Webhook 處理程式訪問請求的 HTTP 標頭很複雜,這會很有幫助。

速率限制

每個 Webhook 每天(24 小時)限制 1,000 次觸發。您可以在 Webhook 設定頁面的“活動”選項卡中檢視您的使用情況。

如果您需要增加 Webhook 的觸發次數,請透過 website@huggingface.co 聯絡我們。

開發您的 Webhooks

如果您沒有 HTTPS 端點/URL,可以嘗試使用公共工具進行 webhook 測試。這些工具充當捕獲所有傳送給它們的請求的萬能(捕獲所有請求)工具,並返回 200 OK 狀態碼。Beeceptor 是一個可以用來建立臨時 HTTP 端點並檢視傳入有效載荷的工具。另一個類似的工具是 Webhook.site

此外,您可以在開發過程中將真實的 Webhook 有效負載路由到您本地機器上執行的程式碼。這是測試和除錯以實現更快整合的好方法。您可以透過將本地主機埠暴露到 Internet 來實現此目的。為此,您可以使用 ngroklocaltunnel

除錯 Webhooks

您可以輕鬆找到最近為您的 webhook 生成的事件。開啟 webhook 的活動選項卡。在那裡您將看到最近事件的列表。

image.png

您可以在此處檢視生成的事件的 HTTP 狀態程式碼和有效負載。此外,您可以透過單擊 Replay 按鈕來重播這些事件!

注意:當更改 Webhook 的目標 URL 或金鑰時,重播事件會將有效負載傳送到更新後的 URL。

常見問題

我可以在我的組織而非我的使用者帳戶上定義 webhook 嗎?

不,目前不支援。

我如何訂閱 HF 上的所有事件(或整個倉庫型別,例如所有模型)?

此功能目前不向終端使用者開放,但如果您傳送電子郵件至 website@huggingface.co,我們可以為您開啟。

< > 在 GitHub 上更新

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