Hub Python Library documentation

Webhooks Sunucusu

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Webhooks Sunucusu

Webhooks, MLOps ile ilgili özelliklerin temelini oluşturur. İlgi alanınızda olan belirli kullanıcıların/organizasyonların tüm depolarında veya belirli depolardaki yeni değişiklikleri dinlemenizi sağlar. Huggingface Hub'daki webhooks hakkında daha fazla bilgi edinmek için Webhooks kılavuzunu okuyabilirsiniz.

Webhook sunucunuzu nasıl kuracağınızı ve bir Space olarak nasıl dağıtacağınızı adım adım anlatan bu kılavuza göz atın.

Bu deneysel bir özelliktir. Bu, API'yi iyileştirmek için hâlâ çalıştığımız anlamına gelir. Gelecekte önceden haber verilmeden kırıcı değişiklikler (breaking changes) getirilebilir. Gereksinimlerinizde huggingface_hub sürümünü sabitlemeyi (pin) unutmayın. Deneysel bir özellik kullandığınızda bir uyarı tetiklenir. HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1 ortam değişkenini ayarlayarak bunu devre dışı bırakabilirsiniz.

Sunucu

Sunucu bir Gradio uygulamasıdır. Sizin veya kullanıcılarınızın talimatları görüntülemesi için bir arayüzü ve webhooks dinlemek için bir API'si vardır. Bir webhook uç noktası uygulamak, bir fonksiyonu süslemek (decorating) kadar basittir. Daha sonra, onu bir Space'e dağıtmadan önce Webhooks'u makinenize (bir Gradio tüneli kullanarak) yönlendirerek hata ayıklamasını yapabilirsiniz.

WebhooksServer

huggingface_hub.WebhooksServer

< >

( *args**kwargs )

Parametreler

  • ui (gradio.Blocks, isteğe bağlı) — Space giriş sayfası olarak kullanılacak bir Gradio UI örneği. None ise, yapılandırılan webhooks hakkında talimatlar içeren bir UI oluşturulur.
  • webhook_secret (str, isteğe bağlı) — Gelen webhook isteklerini doğrulamak için kullanılan gizli anahtar. Bu değeri, webhooks ayarlar panelinde de yapılandırdığınız sürece istediğiniz herhangi bir gizli değer olarak ayarlayabilirsiniz. Bu değeri ayrıca WEBHOOK_SECRET ortam değişkeni olarak da ayarlayabilirsiniz. Gizli bir anahtar sağlanmazsa, webhook uç noktaları herhangi bir güvenlik olmadan açılır.

WebhooksServer() sınıfı, Huggingface webhooks alabilen bir Gradio uygulaması örneği oluşturmanızı sağlar. Bu webhooks, add_webhook() dekoratörü kullanılarak kaydedilebilir. Webhook uç noktaları, uygulamaya FastAPI yönlendiricisine bir POST uç noktası olarak eklenir. Tüm webhooks kaydedildikten sonra, uygulamanın başlatılması için launch metodunun çağrılması gerekir.

Webhook işlevinin ilk argümanı olarak WebhookPayload kabul etmeniz önerilir. Bu, webhook olayına dair tüm bilgileri içeren bir Pydantic modelidir. Veriler sizin için otomatik olarak ayrıştırılır.

WebhooksServer'ınızı nasıl kuracağınızı ve bir Space üzerinde nasıl dağıtacağınızı adım adım anlatan webhooks kılavuzunu inceleyin.

WebhooksServer deneyseldir. API'si gelecekte değişiklik gösterebilir.

WebhooksServer kullanmak için gradio kurulu olmalıdır (pip install --upgrade gradio).

Örnek:

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 )

Parametreler

  • path (str, isteğe bağlı) — Webhook işlevini kaydetmek için URL yolu. Sağlanmazsa, işlev adı yol olarak kullanılır. Her durumda, tüm webhook'lar /webhooks altında kaydedilir.

Bir WebhooksServer() başlatmak ve dekore edilen fonksiyonu bir webhook uç noktası olarak kaydetmek için dekoratör.

Bu, hızlı bir başlangıç yapmanıza yardımcı olan bir yardımcıdır. Daha fazla esneklik (özel açılış sayfası veya webhook gizli anahtarı) gerekiyorsa, WebhooksServer() sınıfını doğrudan kullanabilirsiniz. Bu dekoratörü birden fazla kez kullanarak birden çok webhook uç noktası (aynı sunucuya) kaydedebilirsiniz.

Sunucunuzu nasıl kuracağınız ve bir Space üzerinde nasıl dağıtacağınız konusunda adım adım bir eğitim için webhooks kılavuzuna göz atın.

webhook_endpoint deneyseldir. API'si gelecekte değişiklik gösterebilir.

webhook_endpoint kullanmak için gradio kurulu olmalıdır (pip install --upgrade gradio).

Örnekler: Varsayılan kullanım, bir fonksiyonu webhook uç noktası olarak kaydetmektir. Fonksiyon adı, yol olarak kullanılacaktır. Sunucu, çıkışta (yani betiğin sonunda) otomatik olarak başlatılacaktır.

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.

Gelişmiş kullanım: bir fonksiyonu webhook uç noktası olarak kaydedin ve sunucuyu manuel olarak başlatın. Bu, bir defterde çalıştırıyorsanız faydalıdır.

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

Yük

WebhookPayload, Webhook'lerden gelen yükü (payload) içeren ana veri yapısıdır. Bu, pydantic sınıfıdır ve FastAPI ile kullanımını çok kolay hale getirir. Webhook uç noktasına parametre olarak geçirildiğinde, otomatik olarak doğrulanır ve bir Python nesnesi olarak ayrıştırılır.

Webhooks payload hakkında daha fazla bilgi için Webhooks Payload kılavuzuna başvurabilirsiniz.

sınıf 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

sınıf 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

sınıf huggingface_hub.WebhookPayloadComment

< >

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

WebhookPayloadDiscussion

sınıf 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

sınıf huggingface_hub.WebhookPayloadDiscussionChanges

< >

( base: strmergeCommitId: str | None = None )

WebhookPayloadEvent

sınıf huggingface_hub.WebhookPayloadEvent

< >

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

WebhookPayloadMovedTo

sınıf huggingface_hub.WebhookPayloadMovedTo

< >

( name: strowner: ObjectId )

WebhookPayloadRepo

sınıf 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

sınıf huggingface_hub.WebhookPayloadUrl

< >

( web: strapi: str | None = None )

WebhookPayloadWebhook

sınıf huggingface_hub.WebhookPayloadWebhook

< >

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

Update on GitHub