
Laboratorio di ricerca sulla sicurezza che riproduce CVE-2023-6572 (GHSA-gqvf-3hgp-5hxv): injection di comandi nella gestione di workflow_run di gradio-app/gradio in generate-changeset.yml
Artefatto di ricerca automatizzato — non è il progetto upstream.
Questo repository è un laboratorio monouso costruito da un sistema automatizzato per una tesi magistrale presso l'Université Laval sulla riproduzione di vulnerabilità pubblicate nei workflow di GitHub Actions. È uno snapshot verbatim di
gradio-app/gradioal commit1d986217f6f4fc1829e528d2afe365635788204f(2023-11-03), ridistribuito sotto la licenza del progetto stesso, il cui file è incluso invariato in questo snapshot.Il progetto upstream non è coinvolto, non è mai preso di mira, e la vulnerabilità studiata qui è già pubblica. Ogni segreto e variabile in questo repository è un valore fittizio generato casualmente — nessuna credenziale reale è presente. I riferimenti alle action e le immagini dei runner sono bloccati a ciò che risolvevano al 2023-11-03; vedi
pinning.mdnell'output dell'harness per ogni modifica apportata allo snapshot.Domande o obiezioni: [email protected]
Crea e condividi facilmente fantastiche app di machine learning
Website | Documentation | Guides | Getting Started | Examples | 中文
Gradio è una libreria Python open-source utilizzata per creare demo e applicazioni web di machine learning e data science.
Con Gradio, puoi creare rapidamente una bellissima interfaccia utente attorno ai tuoi modelli di machine learning o al tuo flusso di lavoro di data science e permettere alle persone di "provarli" trascinando e rilasciando le proprie immagini, incollando testo, registrando la propria voce e interagendo con la tua demo, tutto tramite il browser.

Gradio è utile per:
Dimostrare i tuoi modelli di machine learning a clienti/collaboratori/utenti/studenti.
Distribuire i tuoi modelli rapidamente con link condivisibili automatici e ottenere feedback sulle prestazioni del modello.
Eseguire il debug del tuo modello in modo interattivo durante lo sviluppo utilizzando gli strumenti integrati di manipolazione degli input.
Prerequisito: Gradio richiede Python 3.8 o superiore, tutto qui!
Uno dei modi migliori per condividere il tuo modello di machine learning, API o flusso di lavoro di data science con gli altri è creare un'app interattiva che consenta ai tuoi utenti o colleghi di provare la demo nei loro browser.
Gradio ti consente di creare demo e condividerle, tutto in Python. E di solito in poche righe di codice! Quindi iniziamo.
Per far funzionare Gradio con un semplice esempio "Hello, World", segui questi tre passaggi:
1. Installa Gradio usando pip:
pip install gradio
2. Esegui il codice qui sotto come script Python o in un Jupyter Notebook (o Google Colab):
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
Accorciamo il nome importato a gr per una migliore leggibilità del codice che usa Gradio. Questa è una convenzione ampiamente adottata che dovresti seguire affinché chiunque lavori con il tuo codice possa capirlo facilmente.
3. La demo qui sotto apparirà automaticamente all'interno del Jupyter Notebook, oppure si aprirà in un browser su http://localhost:7860 se eseguita da uno script:

Quando sviluppi in locale, se vuoi eseguire il codice come script Python, puoi usare la CLI di Gradio per avviare l'applicazione in modalità reload, che fornirà uno sviluppo fluido e veloce. Scopri di più sul reload nella Guida all'Auto-Reloading.
gradio app.py
Nota: puoi anche eseguire python app.py, ma non fornirà il meccanismo di ricaricamento automatico.
InterfaceNoterai che per creare la demo abbiamo creato un gr.Interface. Questa classe Interface può avvolgere qualsiasi funzione Python con un'interfaccia utente. Nell'esempio precedente abbiamo visto una semplice funzione basata su testo, ma la funzione potrebbe essere qualsiasi cosa, da un generatore di musica a un calcolatore di tasse fino alla funzione di previsione di un modello di machine learning preaddestrato.
La classe core Interface viene inizializzata con tre parametri obbligatori:
fn: la funzione attorno alla quale creare un'interfaccia utenteinputs: quali componenti usare per l'input (ad es. "text", "image" o "audio")outputs: quali componenti usare per l'output (ad es. "text", "image" o "label")Diamo un'occhiata più da vicino a questi componenti usati per fornire input e output.
Abbiamo visto alcuni semplici componenti Textbox negli esempi precedenti, ma cosa succede se vuoi cambiare l'aspetto o il comportamento dei componenti dell'interfaccia utente?
Diciamo che vuoi personalizzare il campo di input di testo — ad esempio, vuoi che sia più grande e abbia un testo segnaposto. Se usiamo la classe vera e propria di Textbox invece della scorciatoia stringa, hai accesso a molta più personalizzazione tramite gli attributi dei componenti.
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()

Supponiamo che tu abbia una funzione più complessa, con più input e output. Nell'esempio qui sotto, definiamo una funzione che accetta una stringa, un booleano e un numero, e restituisce una stringa e un numero. Osserva come passare una lista di componenti di input e output.
import gradio as gr