
Лаборатория исследований безопасности, воспроизводящая CVE-2023-6572 (GHSA-gqvf-3hgp-5hxv): внедрение команд в обработке workflow_run в gradio-app/gradio для generate-changeset.yml
Автоматизированный исследовательский артефакт — не вышестоящий проект.
Этот репозиторий — одноразовая лаборатория, созданная автоматизированной системой для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей в рабочих процессах GitHub Actions. Это точный снимок
gradio-app/gradioна коммите1d986217f6f4fc1829e528d2afe365635788204f(2023-11-03), распространённый под собственной лицензией этого проекта, файл которой включён в этот снимок без изменений.Вышестоящий проект не участвует, никогда не является целью, а изучаемая здесь уязвимость уже публична. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы раннеров закреплены на те значения, которым они соответствовали на 2023-11-03; см.
pinning.mdв выводе системы для каждого изменения, внесённого в снимок.Вопросы или возражения: [email protected]
Создавайте и делитесь восхитительными приложениями для машинного обучения легко
Website | Documentation | Guides | Getting Started | Examples | 中文
Gradio — это библиотека Python с открытым исходным кодом, которая используется для создания демо-версий и веб-приложений для машинного обучения и науки о данных.
С помощью Gradio вы можете быстро создать красивый пользовательский интерфейс вокруг ваших моделей машинного обучения или рабочих процессов науки о данных и позволить людям «попробовать его» — перетаскивая собственные изображения, вставляя текст, записывая свой голос и взаимодействуя с вашим демо — всё через браузер.

Gradio полезен для:
Демонстрации ваших моделей машинного обучения клиентам/коллегам/пользователям/студентам.
Развёртывания ваших моделей быстро с автоматическими ссылками для публикации и получения обратной связи о производительности модели.
Отладки вашей модели интерактивно во время разработки с помощью встроенных инструментов манипуляции входными данными.
Предварительное требование: Gradio требует Python 3.8 или выше, и это всё!
Один из лучших способов поделиться вашей моделью машинного обучения, API или рабочим процессом науки о данных с другими — это создать интерактивное приложение, которое позволит вашим пользователям или коллегам попробовать демо в своих браузерах.
Gradio позволяет вам создавать демо и делиться ими, всё на Python. И обычно всего в нескольких строках кода! Итак, давайте начнём.
Чтобы запустить Gradio с простым примером «Hello, World», выполните следующие три шага:
1. Установите Gradio с помощью pip:
pip install gradio
2. Запустите код ниже как Python-скрипт или в Jupyter Notebook (или Google Colab):
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
Мы сокращаем импортированное имя до gr для лучшей читаемости кода, использующего Gradio. Это широко принятая конвенция, которой вы должны следовать, чтобы любой, кто работает с вашим кодом, мог легко его понять.
3. Демо ниже появится автоматически внутри Jupyter Notebook или откроется в браузере на http://localhost:7860, если запущено из скрипта:

При локальной разработке, если вы хотите запустить код как Python-скрипт, вы можете использовать CLI Gradio для запуска приложения в режиме перезагрузки, который обеспечит бесшовную и быструю разработку. Узнайте больше о перезагрузке в Руководстве по автоперезагрузке.
gradio app.py
Примечание: вы также можете выполнить python app.py, но это не обеспечит механизм автоматической перезагрузки.
InterfaceВы заметите, что для создания демо мы создали gr.Interface. Этот класс Interface может обернуть любую Python-функцию в пользовательский интерфейс. В примере выше мы видели простую текстовую функцию, но функция может быть чем угодно — от генератора музыки до калькулятора налогов или функции предсказания предобученной модели машинного обучения.
Основной класс Interface инициализируется с тремя обязательными параметрами:
fn: функция, вокруг которой создаётся интерфейсinputs: какие компоненты использовать для ввода (например, "text", "image" или "audio")outputs: какие компоненты использовать для вывода (например, "text", "image" или "label")Давайте подробнее рассмотрим эти компоненты, используемые для ввода и вывода.
В предыдущих примерах мы видели простые компоненты Textbox, но что если вы хотите изменить внешний вид или поведение компонентов интерфейса?
Допустим, вы хотите настроить поле ввода текста — например, сделать его больше и добавить текст-подсказку. Если использовать фактический класс Textbox вместо строкового сокращения, у вас будет доступ к гораздо большей настраиваемости через атрибуты компонентов.
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(
fn=greet,
inputs=gr.Textbox(lines=2, placeholder="Name Here..."),
outputs="text",
)
demo.launch()

Предположим, у вас есть более сложная функция с несколькими входами и выходами. В примере ниже мы определяем функцию, которая принимает строку, логическое значение и число, а возвращает строку и число. Посмотрите, как передать список компонентов ввода и вывода.
import gradio as gr