Hub documentation

Виджеты

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Виджеты

Что такое виджет?

Многие репозитории моделей содержат виджет, позволяющий любому пользователю выполнять инференс прямо в браузере. Эти виджеты работают на базе Inference Providers, которые предоставляют разработчикам упрощенный и единый доступ к сотням моделей машинного обучения, поддерживаемых нашими партнерами по serverless-инференсу.

Вот несколько примеров популярных на данный момент моделей:

  • DeepSeek V3 — передовая открытая модель для диалогов
  • Flux Kontext — трансформерная модель с открытыми весами для редактирования изображений
  • NSFW-детектор Falconsai — модерация изображений
  • Chatterbox от ResembleAI — открытая модель синтеза речи из текста, готовая к промышленному использованию.

Вы можете ознакомиться с другими моделями и их виджетами на странице моделей или попробовать их в интерактивном режиме в Inference Playground.

Включение виджета

Виджеты отображаются, когда модель размещена как минимум одним провайдером инференса, что обеспечивает оптимальную производительность и надёжность инференса модели. Провайдеры самостоятельно выбирают и контролируют, какие модели они разворачивают.

Тип отображаемого виджета (текст в изображение, автоматическое распознавание речи и т. д.) выводится из pipeline_tag модели — специального тега, который Hub пытается вычислить автоматически для всех моделей. Единственное исключение — виджет conversational, который отображается для всех моделей с pipeline_tag равным text-generation или image-text-to-text. Для простоты мы решили показывать только один виджет на модель.

Для некоторых библиотек, таких как transformers, тип модели может быть определён автоматически на основе конфигурационных файлов (config.json). Архитектура определяет тип: например, AutoModelForTokenClassification соответствует token-classification. Если вас это интересует, вы можете посмотреть псевдокод в этом gist.

Для большинства остальных сценариев использования мы определяем тип задачи модели по её тегам. Например, если в метаданных карточки модели присутствует tag: text-classification, то вычисленное значение pipeline_tag будет text-classification.

Вы всегда можете вручную переопределить тип конвейера с помощью pipeline_tag: xxx в метаданных карточки модели. (Для этого также можно использовать графический редактор метаданных).

Как я могу управлять примером входных данных для виджета моей модели?

Вы можете указать входные данные виджета в разделе метаданных карточки модели:

widget:
  - text: "This new restaurant has amazing food and great service!"
    example_title: "Positive Review"
  - text: "I'm really disappointed with this product. Poor quality and overpriced."
    example_title: "Negative Review"
  - text: "The weather is nice today."
    example_title: "Neutral Statement"

Вы можете указать несколько примеров входных данных. В выпадающем меню примеров виджета они будут отображаться как Example 1, Example 2 и т. д. При необходимости вы также можете указать example_title.

widget:
  - text: "Is this review positive or negative? Review: Best cast iron skillet you will ever buy."
    example_title: "Sentiment analysis"
  - text: "Barack Obama nominated Hilary Clinton as his secretary of state on Monday. He chose her because she had ..."
    example_title: "Coreference resolution"
  - text: "On a shelf, there are five books: a gray book, a red book, a purple book, a blue book, and a black book ..."
    example_title: "Logic puzzles"
  - text: "The two men running to become New York City's next mayor will face off in their first debate Wednesday night ..."
    example_title: "Reading comprehension"

Кроме того, в метаданных карточки модели можно указать примеры входных данных, не являющихся текстом. Полный список форматов примеров входных данных для всех типов виджетов приведён здесь. Для типов виджетов «зрение» и «аудио» указывайте примеры входных данных с помощью src, а не text.

Например, позвольте пользователям выбирать из двух примеров аудиофайлов для задач автоматического распознавания речи, выполнив следующее:

widget:
  - src: https://example.org/somewhere/speech_samples/sample1.flac
    example_title: Speech sample 1
  - src: https://example.org/somewhere/speech_samples/sample2.flac
    example_title: Speech sample 2

Обратите внимание, что вы также можете включать файлы примеров в репозиторий вашей модели и использовать их следующим образом:

widget:
  - src: https://huggingface.co/username/model_repo/resolve/main/sample1.flac
    example_title: Custom Speech Sample 1

Но ещё удобнее: если файл находится в соответствующем репозитории модели, можно просто использовать имя файла или путь к файлу внутри репозитория:

widget:
  - src: sample1.flac
    example_title: Custom Speech Sample 1

или если он был вложен внутри репозитория:

widget:
  - src: nested/directory/sample1.flac

Мы предоставляем примеры входных данных для некоторых языков и большинства типов виджетов в файле default-widget-inputs.ts. Если каких-то примеров не хватает, мы приветствуем PR от сообщества для их добавления!

Примеры результатов

Как расширение для примеров входных данных, для каждого примера виджета вы также можете по желанию описать соответствующий вывод модели, непосредственно в свойстве output.

Это полезно, когда модель ещё не поддерживается Inference Providers, чтобы на странице модели всё равно можно было продемонстрировать, как она работает и какие результаты выдаёт.

Например, для модели automatic-speech-recognition:

widget:
  - src: sample1.flac
    output:
      text: "Hello my name is Julien"

Свойство output должно представлять собой словарь в формате YAML, описывающий формат вывода от Inference Providers.

Для модели, которая выводит текст, см. пример выше.

Для модели, которая выводит метки (например, модель text-classification), вывод должен выглядеть так:

widget:
  - text: "I liked this movie"
    output:
      - label: POSITIVE
        score: 0.8
      - label: NEGATIVE
        score: 0.2

Наконец, для модели, которая выводит изображение, аудио или любой другой тип ресурса, в выводе должна присутствовать свойство url, содержащее ссылку на имя файла или путь внутри репозитория, либо на удалённый URL. Например, для модели text-to-image:

widget:
  - text: "picture of a futuristic tiger, artstation"
    output:
      url: images/tiger.jpg

Мы также можем отображать примеры результатов в интерфейсе Hugging Face, например, для модели text-to-image — галерею впечатляющих сгенерированных изображений.

Доступность виджетов и поддержка провайдеров

Не для всех моделей доступны виджеты. Наличие виджета зависит от:

  1. Поддержка задач: задача модели должна поддерживаться как минимум одним провайдером в сети Inference Providers
  2. Доступность провайдеров: хотя бы один провайдер должен обслуживать конкретную модель
  3. Конфигурация модели: у модели должны быть корректные метаданные и файлы конфигурации

Чтобы просмотреть полный список поддерживаемых задач, обратитесь к нашей специализированной странице документации.

Список всех провайдеров и поддерживаемых ими задач доступен на этой странице документации.

Для моделей без поддержки провайдера вы всё равно можете продемонстрировать функциональность, используя примеры вывода в карточке модели.

Вы также можете нажать Запросить поддержку провайдера непосредственно на странице модели, чтобы побудить провайдеров обслуживать её, если в сообществе есть достаточный интерес.

Исследование моделей в Inference Playground

Перед интеграцией моделей в свои приложения вы можете протестировать их в интерактивном режиме с помощью Inference Playground. Playground позволяет:

  • Тестируйте различные модели завершения чата с пользовательскими запросами
  • Сравнение ответов разных моделей
  • Экспериментируйте с параметрами вывода, такими как температура, максимальное количество токенов и другие
  • Найдите идеальную модель для вашего конкретного случая использования

Песочница использует ту же инфраструктуру Inference Providers, что и виджеты, поэтому при интеграции моделей в собственные приложения можно ожидать сопоставимые производительность и возможности.

Inference Playground
Update on GitHub