
Sicherheitsforschungs-Labor, das CVE-2023-6572 (GHSA-gqvf-3hgp-5hxv) reproduziert: Befehlsinjektion in der workflow_run-Verarbeitung von generate-changeset.yml in gradio-app/gradio
Automatisiertes Forschungsartefakt — nicht das Upstream-Projekt.
Dieses Repository ist ein Wegwerf-Labor, das von einer automatisierten Testumgebung für eine Masterarbeit an der Université Laval zur Reproduktion veröffentlichter GitHub-Actions-Workflow-Schwachstellen erstellt wurde. Es ist eine wörtliche Momentaufnahme von
gradio-app/gradiobeim Commit1d986217f6f4fc1829e528d2afe365635788204f(2023-11-03), weiterverbreitet unter der eigenen Lizenz des Projekts, deren Datei unverändert in dieser Momentaufnahme enthalten ist.Das Upstream-Projekt ist nicht beteiligt, wird niemals angegriffen, und die hier untersuchte Schwachstelle ist bereits öffentlich bekannt. Jedes Geheimnis und jede Variable in diesem Repository ist ein zufällig generierter Dummy-Wert — es sind keine echten Anmeldedaten vorhanden. Aktionsreferenzen und Runner-Images sind auf das fixiert, was sie am 2023-11-03 aufgelöst haben; siehe
pinning.mdin der Testumgebungsausgabe für jede an der Momentaufnahme vorgenommene Änderung.Fragen oder Einwände: [email protected]
Erstelle und teile mühelos beeindruckende Machine-Learning-Apps
Website | Dokumentation | Anleitungen | Erste Schritte | Beispiele | 中文
Gradio ist eine Open-Source-Python-Bibliothek, mit der Machine-Learning- und Data-Science-Demos sowie Webanwendungen erstellt werden.
Mit Gradio kannst du schnell eine schöne Benutzeroberfläche um deine Machine-Learning-Modelle oder deinen Data-Science-Workflow erstellen und es Menschen ermöglichen, sie "auszuprobieren", indem sie eigene Bilder per Drag-and-Drop einfügen, Text einfügen, ihre eigene Stimme aufnehmen und mit deiner Demo interagieren — alles über den Browser.

Gradio ist nützlich für:
Demonstrieren deiner Machine-Learning-Modelle für Kunden/Mitarbeiter/Nutzer/Studierende.
Bereitstellen deiner Modelle schnell mit automatischen teilbaren Links und Erhalten von Feedback zur Modellleistung.
Debuggen deines Modells interaktiv während der Entwicklung mit integrierten Werkzeugen zur Eingabemanipulation.
Voraussetzung: Gradio benötigt Python 3.8 oder höher, das ist alles!
Eine der besten Möglichkeiten, dein Machine-Learning-Modell, deine API oder deinen Data-Science-Workflow mit anderen zu teilen, ist die Erstellung einer interaktiven App, die es deinen Nutzern oder Kollegen ermöglicht, die Demo in ihrem Browser auszuprobieren.
Gradio ermöglicht es dir, Demos zu erstellen und zu teilen, alles in Python. Und das meist mit nur wenigen Zeilen Code! Also lass uns loslegen.
Um Gradio mit einem einfachen "Hallo, Welt"-Beispiel zum Laufen zu bringen, folge diesen drei Schritten:
1. Installiere Gradio mit pip:
pip install gradio
2. Führe den folgenden Code als Python-Skript oder in einem Jupyter-Notebook aus (oder Google Colab):
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
Wir kürzen den importierten Namen zu gr, um die Lesbarkeit des Codes mit Gradio zu verbessern. Dies ist eine weit verbreitete Konvention, der du folgen solltest, damit jeder, der mit deinem Code arbeitet, ihn leicht verstehen kann.
3. Die folgende Demo erscheint automatisch im Jupyter-Notebook oder öffnet sich in einem Browser unter http://localhost:7860, wenn sie aus einem Skript ausgeführt wird:

Wenn du lokal entwickelst und den Code als Python-Skript ausführen möchtest, kannst du die Gradio-CLI verwenden, um die Anwendung im Reload-Modus zu starten, was eine nahtlose und schnelle Entwicklung ermöglicht. Erfahre mehr über das Neuladen im Auto-Reloading-Guide.
gradio app.py
Hinweis: Du kannst auch python app.py ausführen, aber das bietet keinen automatischen Reload-Mechanismus.
Interface-KlasseDu wirst feststellen, dass wir zur Erstellung der Demo ein gr.Interface erstellt haben. Diese Interface-Klasse kann jede Python-Funktion mit einer Benutzeroberfläche umhüllen. Im obigen Beispiel haben wir eine einfache textbasierte Funktion gesehen, aber die Funktion könnte alles sein, von einem Musikgenerator über einen Steuerrechner bis hin zur Vorhersagefunktion eines vortrainierten Machine-Learning-Modells.
Die zentrale Interface-Klasse wird mit drei erforderlichen Parametern initialisiert:
fn: die Funktion, um die eine Benutzeroberfläche gelegt wirdinputs: welche Komponente(n) für die Eingabe verwendet werden (z. B. "text", "image" oder "audio")outputs: welche Komponente(n) für die Ausgabe verwendet werden (z. B. "text", "image" oder "label")Schauen wir uns diese Komponenten, die für Eingabe und Ausgabe verwendet werden, genauer an.
Wir haben in den vorherigen Beispielen einige einfache Textbox-Komponenten gesehen, aber was, wenn du ändern möchtest, wie die UI-Komponenten aussehen oder sich verhalten?
Angenommen, du möchtest das Eingabetextfeld anpassen — zum Beispiel größer machen und einen Textplatzhalter hinzufügen. Wenn wir die eigentliche Klasse für Textbox anstelle der String-Verknüpfung verwenden, hast du über Komponentenattribute viel mehr Anpassungsmöglichkeiten.
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()
