Hub Python Library documentation
Webhooks Sunucusu
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_hubsürümünü sabitlemeyi (pin) unutmayın. Deneysel bir özellik kullandığınızda bir uyarı tetiklenir.HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1ortam 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
< source >( *args**kwargs )
Parametreler
- ui (
gradio.Blocks, isteğe bağlı) — Space giriş sayfası olarak kullanılacak bir Gradio UI örneği.Noneise, 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ıcaWEBHOOK_SECRETortam 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.
WebhooksServerdeneyseldir. API'si gelecekte değişiklik gösterebilir.
WebhooksServerkullanmak içingradiokurulu olmalıdır (pip install --upgrade gradio).
@webhook_endpoint
huggingface_hub.webhook_endpoint
< source >( path: str | None = None )
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_endpointdeneyseldir. API'si gelecekte değişiklik gösterebilir.
webhook_endpointkullanmak içingradiokurulu 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
< source >( 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
< source >( 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
< source >( id: strauthor: ObjectIdhidden: boolcontent: str | None = Noneurl: WebhookPayloadUrl )
WebhookPayloadDiscussion
sınıf huggingface_hub.WebhookPayloadDiscussion
< source >( 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
< source >( base: strmergeCommitId: str | None = None )
WebhookPayloadEvent
sınıf huggingface_hub.WebhookPayloadEvent
< source >( action: typing.Literal['create', 'delete', 'move', 'update']scope: str )
WebhookPayloadMovedTo
WebhookPayloadRepo
sınıf huggingface_hub.WebhookPayloadRepo
< source >( id: strowner: ObjectIdhead_sha: str | None = Nonename: strprivate: boolsubdomain: str | None = Nonetags: list[str] | None = Nonetype: typing.Literal['dataset', 'model', 'space']url: WebhookPayloadUrl )