
सुरक्षा-अनुसंधान प्रयोगशाला जो CVE-2023-6572 (GHSA-gqvf-3hgp-5hxv) को पुनरुत्पादित करती है: gradio-app/gradio के workflow_run में 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 को एक सरल "हैलो, वर्ल्ड" उदाहरण के साथ चलाने के लिए, इन तीन चरणों का पालन करें:
1. pip का उपयोग करके Gradio इंस्टॉल करें:
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()
हम Gradio का उपयोग करने वाले कोड की बेहतर पठनीयता के लिए आयातित नाम को gr तक छोटा करते हैं। यह एक व्यापक रूप से अपनाया गया सम्मेलन है जिसका आपको पालन करना चाहिए ताकि आपके कोड के साथ काम करने वाला कोई भी व्यक्ति इसे आसानी से समझ सके।
3. नीचे दिया गया डेमो Jupyter Notebook के भीतर स्वचालित रूप से दिखाई देगा, या यदि स्क्रिप्ट से चल रहा है तो http://localhost:7860 पर ब्राउज़र में खुलेगा:

स्थानीय रूप से विकास करते समय, यदि आप कोड को Python स्क्रिप्ट के रूप में चलाना चाहते हैं, तो आप एप्लिकेशन को रिलोड मोड में लॉन्च करने के लिए Gradio CLI का उपयोग कर सकते हैं, जो सहज और तेज़ विकास प्रदान करेगा। रीलोडिंग के बारे में Auto-Reloading Guide में और जानें।
gradio app.py
नोट: आप python app.py भी कर सकते हैं, लेकिन यह स्वचालित रीलोड तंत्र प्रदान नहीं करेगा।
Interface क्लासआप देखेंगे कि डेमो बनाने के लिए, हमने एक gr.Interface बनाया। यह Interface क्लास किसी भी Python फ़ंक्शन को यूज़र इंटरफ़ेस के साथ लपेट सकती है। उपरोक्त उदाहरण में, हमने एक सरल टेक्स्ट-आधारित फ़ंक्शन देखा, लेकिन फ़ंक्शन संगीत जनरेटर से लेकर टैक्स कैलकुलेटर तक पूर्व-प्रशिक्षित मशीन लर्निंग मॉडल के भविष्यवाणी फ़ंक्शन तक कुछ भी हो सकता है।
कोर Interface क्लास तीन आवश्यक पैरामीटर के साथ प्रारंभ किया गया है:
fn: UI के चारों ओर लपेटने के लिए फ़ंक्शनinputs: इनपुट के लिए कौन से कंपोनेंट का उपयोग करना है (जैसे "text", "image" या "audio")outputs: आउटपुट के लिए कौन से कंपोनेंट का उपयोग करना है (जैसे "text", "image" या "label")आइए इनपुट और आउटपुट प्रदान करने के लिए उपयोग किए जाने वाले इन कंपोनेंट्स पर करीब से नज़र डालें।
हमने पिछले उदाहरणों में कुछ सरल Textbox कंपोनेंट देखे, लेकिन यदि आप UI कंपोनेंट्स के दिखने या व्यवहार को बदलना चाहते हैं तो क्या होगा?
मान लीजिए आप इनपुट टेक्स्ट फ़ील्ड को अनुकूलित करना चाहते हैं — उदाहरण के लिए, आप चाहते थे कि यह बड़ा हो और उसमें टेक्स्ट प्लेसहोल्डर हो। यदि हम स्ट्रिंग शॉर्टकट का उपयोग करने के बजाय 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
def greet(name, is_morning, temperature):
salutation = "Good morning" if is_morning else "Good evening"
greeting = f"{salutation} {name}. It is {temperature} degrees today"
celsius = (temperature - 32) * 5 / 9
return greeting, round(celsius, 2)