Hub Python Library documentation

Servidor 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

Servidor de Webhooks

Webhooks são a base para recursos relacionados a MLOps. Eles permitem que você acompanhe novas alterações em repositórios específicos ou em todos os repositórios pertencentes a usuários/organizações específicos que você deseja acompanhar. Para saber mais sobre webhooks no Huggingface Hub, você pode ler o guia de Webhooks.

Confira este guia para um tutorial passo a passo sobre como configurar seu servidor de webhooks e implantá-lo como um Space.

Este é um recurso experimental. Isso significa que ainda estamos trabalhando para melhorar a API. Alterações que quebram a compatibilidade podem ser introduzidas no futuro sem aviso prévio. Certifique-se de fixar a versão de huggingface_hub nos seus requisitos. Um aviso é acionado quando você usa um recurso experimental. Você pode desativá-lo definindo HF_HUB_DISABLE_EXPERIMENTAL_WARNING=1 como uma variável de ambiente.

Servidor

O servidor é um aplicativo Gradio. Ele possui uma interface para exibir instruções para você ou seus usuários e uma API para receber webhooks. Implementar um endpoint de webhook é tão simples quanto decorar uma função. Em seguida, você pode depurá-lo redirecionando os Webhooks para sua máquina (usando um túnel do Gradio) antes de implantá-lo em um Space.

WebhooksServer

huggingface_hub.WebhooksServer

< >

( *args**kwargs )

Parâmetros

  • ui (gradio.Blocks, opcional) — Uma instância de interface do Gradio a ser usada como a página inicial do Space. Se None, uma interface exibindo instruções sobre os webhooks configurados é criada.
  • webhook_secret (str, opcional) — Uma chave secreta para verificar solicitações de webhook recebidas. Você pode definir esse valor como qualquer segredo que desejar, desde que também o configure no seu painel de configurações de webhooks. Você também pode definir esse valor como a variável de ambiente WEBHOOK_SECRET. Se nenhum segredo for fornecido, os endpoints de webhook serão abertos sem nenhuma segurança.

A classe WebhooksServer() permite criar uma instância de um aplicativo Gradio que pode receber webhooks do Huggingface. Esses webhooks podem ser registrados usando o decorador add_webhook(). Os endpoints de webhook são adicionados ao aplicativo como um endpoint POST no roteador FastAPI. Depois que todos os webhooks forem registrados, o método launch deve ser chamado para iniciar o aplicativo.

É recomendado aceitar WebhookPayload como o primeiro argumento da função de webhook. Trata-se de um modelo Pydantic que contém todas as informações sobre o evento do webhook. Os dados serão analisados automaticamente para você.

Confira o guia de webhooks para um tutorial passo a passo sobre como configurar seu WebhooksServer e implantá-lo em um Space.

WebhooksServer é experimental. Sua API está sujeita a alterações no futuro.

Você deve ter gradio instalado para usar WebhooksServer (pip install --upgrade gradio).

Exemplo:

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 )

Parâmetros

  • path (str, opcional) — O caminho da URL para registrar a função de webhook. Se não for fornecido, o nome da função será usado como caminho. Em qualquer caso, todos os webhooks são registrados sob /webhooks.

Decorador para iniciar um WebhooksServer() e registrar a função decorada como um endpoint de webhook.

Este é um auxiliar para começar rapidamente. Se você precisar de mais flexibilidade (página de destino personalizada ou segredo de webhook), pode usar WebhooksServer() diretamente. Você pode registrar múltiplos endpoints de webhook (no mesmo servidor) usando este decorador várias vezes.

Confira o guia de webhooks para um tutorial passo a passo sobre como configurar seu servidor e implantá-lo em um Space.

webhook_endpoint é experimental. Sua API está sujeita a alterações no futuro.

Você deve ter gradio instalado para usar webhook_endpoint (pip install --upgrade gradio).

Exemplos: O uso padrão é registrar uma função como um endpoint de webhook. O nome da função será usado como o caminho. O servidor será iniciado automaticamente na saída (ou seja, no final do 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.

Uso avançado: registre uma função como um endpoint de webhook e inicie o servidor manualmente. Isso é útil se você estiver executando em um 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 é a principal estrutura de dados que contém o payload dos Webhooks. Trata-se de uma classe pydantic, o que facilita muito seu uso com FastAPI. Se você a passar como parâmetro para um endpoint de webhook, ela será validada e analisada automaticamente como um objeto Python.

Para mais informações sobre o payload de webhooks, você pode consultar o guia de Payload de Webhooks.

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