Hub Python Library documentation

Serveur de Webhooks

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v2.4.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Serveur de Webhooks

Les webhooks constituent la base des fonctionnalités liées au MLOps. Ils vous permettent de surveiller les nouvelles modifications sur des dépôts spécifiques ou sur l’ensemble des dépôts appartenant à des utilisateurs/organisations particuliers que vous souhaitez suivre. Pour en savoir plus sur les webhooks du Huggingface Hub, vous pouvez consulter le guide sur les webhooks.

Consultez ce guide pour un tutoriel étape par étape sur la configuration de votre serveur de webhooks et son déploiement en tant que Space.

Il s’agit d’une fonctionnalité expérimentale. Cela signifie que nous travaillons encore à améliorer l’API. Des modifications cassantes pourraient être introduites à l’avenir sans préavis. Assurez-vous de fixer la version de huggingface_hub dans vos dépendances. Un avertissement est déclenché lorsque vous utilisez une fonctionnalité expérimentale. Vous pouvez le désactiver en définissant HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1 en tant que variable d’environnement.

Serveur

Le serveur est une application Gradio. Il dispose d’une interface utilisateur pour afficher des instructions à vous ou à vos utilisateurs, ainsi que d’une API pour écouter les webhooks. La mise en œuvre d’un point de terminaison de webhook est aussi simple que de décorer une fonction. Vous pouvez ensuite la déboguer en redirigeant les Webhooks vers votre machine (à l’aide d’un tunnel Gradio) avant de la déployer sur un Space.

WebhooksServer

huggingface_hub.WebhooksServer

< >

( *args**kwargs )

Paramètres

  • ui (gradio.Blocks, facultatif) — Une instance d’interface Gradio à utiliser comme page d’accueil de l’espace. Si None, une interface affichant des instructions sur les webhooks configurés est créée.
  • webhook_secret (str, optionnel) — Clé secrète pour vérifier les requêtes webhook entrantes. Vous pouvez définir cette valeur avec n’importe quel secret, à condition de le configurer également dans votre panneau de configuration des webhooks. Vous pouvez également définir cette valeur en tant que variable d’environnement WEBHOOK_SECRET. Si aucun secret n’est fourni, les points de terminaison webhook sont ouverts sans aucune sécurité.

La classe WebhooksServer() permet de créer une instance d'une application Gradio capable de recevoir des webhooks Huggingface. Ces webhooks peuvent être enregistrés à l'aide du décorateur add_webhook(). Les points de terminaison des webhooks sont ajoutés à l'application en tant que point de terminaison POST du routeur FastAPI. Une fois tous les webhooks enregistrés, la méthode launch doit être appelée pour démarrer l'application.

Il est recommandé d’accepter WebhookPayload comme premier argument de la fonction webhook. Il s’agit d’un modèle Pydantic qui contient toutes les informations relatives à l’événement webhook. Les données seront analysées automatiquement pour vous.

Consultez le guide des webhooks pour un tutoriel étape par étape sur la configuration de votre WebhooksServer et son déploiement sur un Space.

WebhooksServer est expérimental. Son API est susceptible d’évoluer à l’avenir.

Vous devez avoir gradio installé pour utiliser WebhooksServer (pip install --upgrade gradio).

Exemple :

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 )

Paramètres

  • path (str, optionnel) — Le chemin d’URL pour enregistrer la fonction webhook. S’il n’est pas fourni, le nom de la fonction sera utilisé comme chemin. Dans tous les cas, tous les webhooks sont enregistrés sous /webhooks.

Décorateur pour démarrer un WebhooksServer() et enregistrer la fonction décorée en tant que point de terminaison de webhook.

Ceci est un utilitaire pour démarrer rapidement. Si vous avez besoin de plus de flexibilité (page d’accueil personnalisée ou secret de webhook), vous pouvez utiliser WebhooksServer() directement. Vous pouvez enregistrer plusieurs points de terminaison de webhook (sur le même serveur) en utilisant ce décorateur plusieurs fois.

Consultez le guide des webhooks pour un tutoriel étape par étape sur la configuration de votre serveur et son déploiement sur un Space.

webhook_endpoint est expérimental. Son API est susceptible d'évoluer à l'avenir.

Vous devez avoir gradio installé pour utiliser webhook_endpoint (pip install --upgrade gradio).

Exemples : L'utilisation par défaut consiste à enregistrer une fonction en tant que point de terminaison de webhook. Le nom de la fonction sera utilisé comme chemin. Le serveur sera démarré automatiquement à la sortie (c'est-à-dire à la fin du script).

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.

Utilisation avancée : enregistrez une fonction en tant que point de terminaison de webhook et démarrez le serveur manuellement. Cela est utile si vous l’exécutez dans un 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 est la structure de données principale qui contient la charge utile des Webhooks. Il s’agit d’une classe pydantic, ce qui la rend très facile à utiliser avec FastAPI. Si vous la passez en paramètre à un point de terminaison de webhook, elle sera automatiquement validée et analysée en tant qu’objet Python.

Pour plus d’informations sur la charge utile des webhooks, vous pouvez consulter le guide Webhooks Payload.

classe 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

classe 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

classe huggingface_hub.WebhookPayloadComment

< >

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

WebhookPayloadDiscussion

classe 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

classe huggingface_hub.WebhookPayloadDiscussionChanges

< >

( base: strmergeCommitId: str | None = None )

WebhookPayloadEvent

classe huggingface_hub.WebhookPayloadEvent

< >

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

WebhookPayloadMovedTo

classe huggingface_hub.WebhookPayloadMovedTo

< >

( name: strowner: ObjectId )

WebhookPayloadRepo

classe 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

classe huggingface_hub.WebhookPayloadUrl

< >

( web: strapi: str | None = None )

WebhookPayloadWebhook

classe huggingface_hub.WebhookPayloadWebhook

< >

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

Update on GitHub