
Laboratório de pesquisa em segurança reproduzindo CVE-2023-6572 (GHSA-gqvf-3hgp-5hxv): injeção de comandos no tratamento de workflow_run do gradio-app/gradio em generate-changeset.yml
Artefacto de investigação automatizado — não é o projeto original.
Este repositório é um laboratório descartável construído por um sistema automatizado para uma dissertação de mestrado na Université Laval sobre a reprodução de vulnerabilidades publicadas em workflows do GitHub Actions. É um instantâneo verbatim de
gradio-app/gradiono commit1d986217f6f4fc1829e528d2afe365635788204f(2023-11-03), redistribuído sob a licença do próprio projeto, cujo ficheiro está incluído inalterado neste instantâneo.O projeto original não está envolvido, nunca é alvo, e a vulnerabilidade aqui estudada já é pública. Todos os segredos e variáveis neste repositório são valores fictícios gerados aleatoriamente — nenhuma credencial real está presente. As referências de ações e imagens de runner estão fixadas no que resolveram em 2023-11-03; consulte
pinning.mdna saída do sistema para todas as alterações feitas ao instantâneo.Perguntas ou objeções: [email protected]
Crie e partilhe aplicações de machine learning encantadoras facilmente
Website | Documentation | Guides | Getting Started | Examples | 中文
Gradio é uma biblioteca Python de código aberto usada para criar demonstrações e aplicações web de machine learning e ciência de dados.
Com o Gradio, pode criar rapidamente uma interface de utilizador bonita em torno dos seus modelos de machine learning ou fluxos de trabalho de ciência de dados e permitir que as pessoas "experimentem" arrastando e soltando as suas próprias imagens, colando texto, gravando a própria voz e interagindo com a sua demonstração, tudo através do navegador.

O Gradio é útil para:
Demonstrar os seus modelos de machine learning a clientes/colaboradores/utilizadores/estudantes.
Implementar os seus modelos rapidamente com links partilháveis automáticos e obter feedback sobre o desempenho do modelo.
Depurar o seu modelo interativamente durante o desenvolvimento usando ferramentas de manipulação de entrada integradas.
Pré-requisito: o Gradio requer Python 3.8 ou superior, e é só isso!
Uma das melhores formas de partilhar o seu modelo de machine learning, API ou fluxo de trabalho de ciência de dados com outros é criar uma aplicação interativa que permita aos seus utilizadores ou colegas experimentar a demonstração nos seus navegadores.
O Gradio permite-lhe criar demonstrações e partilhá-las, tudo em Python. E normalmente em apenas algumas linhas de código! Então vamos começar.
Para colocar o Gradio a funcionar com um exemplo simples de "Olá, Mundo", siga estes três passos:
1. Instale o Gradio usando pip:
pip install gradio
2. Execute o código abaixo como um script Python ou num Jupyter Notebook (ou Google Colab):
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
Abreviámos o nome importado para gr para melhor legibilidade do código que usa Gradio. Esta é uma convenção amplamente adotada que deve seguir para que qualquer pessoa que trabalhe com o seu código o entenda facilmente.
3. A demonstração abaixo aparecerá automaticamente dentro do Jupyter Notebook, ou abrirá num navegador em http://localhost:7860 se executada a partir de um script:

Ao desenvolver localmente, se quiser executar o código como um script Python, pode usar a CLI do Gradio para iniciar a aplicação em modo de recarga, que proporcionará um desenvolvimento rápido e sem interrupções. Saiba mais sobre recarga no Guia de Recarga Automática.
gradio app.py
Nota: também pode executar python app.py, mas não fornecerá o mecanismo de recarga automática.
InterfaceReparará que, para criar a demonstração, criámos um gr.Interface. Esta classe Interface pode envolver qualquer função Python com uma interface de utilizador. No exemplo acima, vimos uma função simples baseada em texto, mas a função pode ser qualquer coisa, desde um gerador de música a uma calculadora de impostos ou à função de previsão de um modelo de machine learning pré-treinado.
A classe principal Interface é inicializada com três parâmetros obrigatórios:
fn: a função a envolver com uma interface de utilizadorinputs: qual(is) componente(s) usar para a entrada (ex.: "text", "image" ou "audio")outputs: qual(is) componente(s) usar para a saída (ex.: "text", "image" ou "label")Vamos analisar mais de perto estes componentes usados para fornecer entrada e saída.
Vimos alguns componentes simples Textbox nos exemplos anteriores, mas e se quiser alterar a aparência ou o comportamento dos componentes da interface?
Digamos que quer personalizar o campo de texto de entrada — por exemplo, que seja maior e tenha um texto de espaço reservado. Se usarmos a classe real para Textbox em vez do atalho de string, terá acesso a muito mais personalização através dos atributos dos componentes.
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()

Suponha que tinha uma função mais complexa, com múltiplas entradas e saídas. No exemplo abaixo, definimos uma função que recebe uma string, um booleano e um número, e devolve uma string e um número. Veja como passar uma lista de componentes de entrada e saída.
import gradio as gr