Hub documentation

Automatización de Webhooks

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Automatización de Webhooks

Los webhooks permiten escuchar nuevos cambios en repositorios o buckets específicos, o en todos los repositorios que pertenecen a un conjunto particular de usuarios u organizaciones (no solo tus repositorios, sino cualquier repositorio) en Hugging Face.

Use create_webhook en el cliente de Python huggingface_hub para crear un webhook que active un Job cuando se produzca un cambio en un repositorio de Hugging Face:

from huggingface_hub import create_webhook

# Example: Creating a webhook that triggers a Job
webhook = create_webhook(
    job_id=job_id,
    watched=[{"type": "user", "name": "your-username"}, {"type": "org", "name": "your-org-name"}],
    domains=["repo", "discussion"],
    secret="your-secret"
)

Para ejecutar un Job cuando se añaden o se eliminan archivos de un bucket, observe el bucket:

webhook = create_webhook(
    job_id=job_id,
    watched=[{"type": "bucket", "name": "your-username/your-bucket"}],
    domains=["repo"],
    secrets={"HF_TOKEN": "hf_***"},
)

Para un ejemplo completo, consulte Procesar nuevos archivos en un bucket con Jobs.

El webhook activa el Job con las siguientes variables de entorno:

  • WEBHOOK_PAYLOAD: la carga completa del webhook como una cadena JSON
  • WEBHOOK_REPO_ID: el nombre del repositorio o cubo (p. ej., user/repo-name)
  • WEBHOOK_REPO_TYPE: el tipo de repositorio (model, dataset, space o bucket)
  • WEBHOOK_SECRET: el secreto del webhook, si se configuró uno
  • WEBHOOK_ID: un identificador único para la entrega, estable entre reintentos de esa entrega

Una ejecución de webhook no conserva los volúmenes ni los secretos del Job. Pasa los secretos que el Job necesita, como HF_TOKEN, con secrets= en create_webhook. Para ejecutar un script de UV desde un webhook, define tu job con hf jobs run <image> uv run <url>; de lo contrario, hf jobs uv run sube el script a un volumen, el cual no está disponible en una ejecución de webhook.

La carga del webhook contiene varios campos; aquí hay algunos útiles:

- event:
  - action: one of "create", "delete", "move", "update"
  - scope: string
- repo:
  - owner: string
  - headSha: string (not sent for buckets)
  - name: string
  - type: one of "dataset", "model", "space", "bucket"
- updatedFiles: for bucket file changes, the list of added and deleted files

Puedes encontrar más información sobre webhooks en la documentación de Webhooks de huggingface_hub.

Update on GitHub