Hub Python Library documentation

Server Webhooks

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Server Webhooks

Webhooks merupakan fondasi untuk fitur-fitur yang berkaitan dengan MLOps. Webhooks memungkinkan Anda untuk mendengarkan perubahan baru pada repositori tertentu atau pada semua repositori yang dimiliki oleh pengguna/organisasi tertentu yang ingin Anda ikuti. Untuk mempelajari lebih lanjut tentang webhooks di Huggingface Hub, Anda dapat membaca panduan Webhooks.

Lihat panduan ini untuk tutorial langkah demi langkah tentang cara mengatur server webhooks Anda dan mendeplomentasinya sebagai Space.

Ini adalah fitur eksperimental. Artinya, kami masih terus bekerja untuk meningkatkan API. Perubahan yang merusak (breaking changes) mungkin akan diperkenalkan di masa depan tanpa pemberitahuan sebelumnya. Pastikan untuk mengunci (pin) versi huggingface_hub di requirements Anda. Peringatan akan dipicu ketika Anda menggunakan fitur eksperimental. Anda dapat menonaktifkannya dengan mengatur HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1 sebagai variabel lingkungan.

Server

Server ini adalah aplikasi Gradio. Ia memiliki UI untuk menampilkan instruksi bagi Anda atau pengguna Anda, serta API untuk mendengarkan webhook. Menerapkan endpoint webhook sesederhana mendekorasi sebuah fungsi. Anda kemudian dapat men-debugnya dengan mengalihkan Webhooks ke mesin Anda (menggunakan terowongan Gradio) sebelum menerbitkannya ke Space.

WebhooksServer

huggingface_hub.WebhooksServer

< >

( *args**kwargs )

Parameter

  • ui (gradio.Blocks, opsional) — Instans Gradio UI yang akan digunakan sebagai halaman utama Space. Jika None, UI yang menampilkan instruksi tentang webhook yang dikonfigurasi akan dibuat.
  • webhook_secret (str, opsional) — Kunci rahasia untuk memverifikasi permintaan webhook yang masuk. Anda dapat mengatur nilai ini ke rahasia apa pun selama Anda juga mengonfigurasikannya di panel pengaturan webhook Anda. Anda juga dapat mengatur nilai ini sebagai variabel lingkungan WEBHOOK_SECRET. Jika tidak ada rahasia yang disediakan, endpoint webhook akan dibuka tanpa keamanan apa pun.

Kelas WebhooksServer() memungkinkan Anda membuat instance aplikasi Gradio yang dapat menerima webhook Huggingface. Webhook ini dapat didaftarkan menggunakan dekorator add_webhook(). Endpoint webhook ditambahkan ke aplikasi sebagai endpoint POST ke router FastAPI. Setelah semua webhook terdaftar, metode launch harus dipanggil untuk memulai aplikasi.

Disarankan untuk menerima WebhookPayload sebagai argumen pertama dari fungsi webhook. Ini adalah model Pydantic yang berisi semua informasi tentang peristiwa webhook. Data akan diurai secara otomatis untuk Anda.

Lihat panduan webhooks untuk tutorial langkah demi langkah tentang cara mengatur WebhooksServer Anda dan mendeploynya di Space.

WebhooksServer bersifat eksperimental. API-nya dapat berubah di masa depan.

Anda harus menginstal gradio untuk menggunakan WebhooksServer (pip install --upgrade gradio).

Contoh:

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: str | None = None )

Parameter

  • path (str, opsional) — Path URL untuk mendaftarkan fungsi webhook. Jika tidak disediakan, nama fungsi akan digunakan sebagai path. Dalam hal apa pun, semua webhook didaftarkan di bawah /webhooks.

Decorator untuk memulai WebhooksServer() dan mendaftarkan fungsi yang didekorasi sebagai endpoint webhook.

Ini adalah helper untuk memulai dengan cepat. Jika Anda membutuhkan fleksibilitas lebih (halaman landing kustom atau webhook secret), Anda dapat menggunakan WebhooksServer() secara langsung. Anda dapat mendaftarkan beberapa endpoint webhook (ke server yang sama) dengan menggunakan decorator ini beberapa kali.

Lihat panduan webhooks untuk tutorial langkah demi langkah tentang cara mengatur server Anda dan mendeploynya di Space.

webhook_endpoint bersifat eksperimental. API-nya dapat berubah di masa depan.

Anda harus menginstal gradio untuk menggunakan webhook_endpoint (pip install --upgrade gradio).

Contoh: Penggunaan default adalah mendaftarkan fungsi sebagai endpoint webhook. Nama fungsi akan digunakan sebagai path. Server akan dimulai secara otomatis saat exit (yaitu di akhir skrip).

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.

Penggunaan lanjutan: daftarkan fungsi sebagai endpoint webhook dan mulai server secara manual. Ini berguna jika Anda menjalankannya di notebook.

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

Payload

WebhookPayload adalah struktur data utama yang berisi payload dari Webhooks. Ini adalah kelas pydantic yang membuatnya sangat mudah digunakan dengan FastAPI. Jika Anda meneruskannya sebagai parameter ke endpoint webhook, ia akan divalidasi dan diurai secara otomatis sebagai objek Python.

Untuk informasi lebih lanjut tentang payload webhook, Anda dapat merujuk pada panduan Webhooks Payload.

kelas huggingface_hub.WebhookPayload

< >

( event: WebhookPayloadEventrepo: WebhookPayloadRepodiscussion: huggingface_hub._webhooks_payload.WebhookPayloadDiscussion | None = Nonecomment: huggingface_hub._webhooks_payload.WebhookPayloadComment | None = Nonewebhook: WebhookPayloadWebhookmovedTo: huggingface_hub._webhooks_payload.WebhookPayloadMovedTo | None = NoneupdatedRefs: list[huggingface_hub._webhooks_payload.WebhookPayloadUpdatedRef] | None = None )

WebhookPayload

kelas huggingface_hub.WebhookPayload

< >

( event: WebhookPayloadEventrepo: WebhookPayloadRepodiscussion: huggingface_hub._webhooks_payload.WebhookPayloadDiscussion | None = Nonecomment: huggingface_hub._webhooks_payload.WebhookPayloadComment | None = Nonewebhook: WebhookPayloadWebhookmovedTo: huggingface_hub._webhooks_payload.WebhookPayloadMovedTo | None = NoneupdatedRefs: list[huggingface_hub._webhooks_payload.WebhookPayloadUpdatedRef] | None = None )

WebhookPayloadComment

kelas huggingface_hub.WebhookPayloadComment

< >

( id: strauthor: ObjectIdhidden: boolcontent: str | None = Noneurl: WebhookPayloadUrl )

DiskusiWebhookPayload

kelas huggingface_hub.WebhookPayloadDiscussion

< >

( id: strnum: intauthor: ObjectIdurl: WebhookPayloadUrltitle: strisPullRequest: boolstatus: typing.Literal['closed', 'draft', 'open', 'merged']changes: huggingface_hub._webhooks_payload.WebhookPayloadDiscussionChanges | None = Nonepinned: bool | None = None )

WebhookPayloadDiscussionChanges

kelas huggingface_hub.WebhookPayloadDiscussionChanges

< >

( base: strmergeCommitId: str | None = None )

WebhookPayloadEvent

kelas huggingface_hub.WebhookPayloadEvent

< >

( action: typing.Literal['create', 'delete', 'move', 'update']scope: str )

WebhookPayloadMovedTo

kelas huggingface_hub.WebhookPayloadMovedTo

< >

( name: strowner: ObjectId )

WebhookPayloadRepo

kelas huggingface_hub.WebhookPayloadRepo

< >

( id: strowner: ObjectIdhead_sha: str | None = Nonename: strprivate: boolsubdomain: str | None = Nonetags: list[str] | None = Nonetype: typing.Literal['dataset', 'model', 'space']url: WebhookPayloadUrl )

WebhookPayloadUrl

kelas huggingface_hub.WebhookPayloadUrl

< >

( web: strapi: str | None = None )

WebhookPayloadWebhook

kelas huggingface_hub.WebhookPayloadWebhook

< >

( id: strversion: typing.Literal[3] )

Update on GitHub