मल्टीमॉडल और जनरेटिव AIमध्यमपाठ 2507 मिनट का पाठ

मल्टीमॉडल APIs के साथ काम करना

मॉडल API को तस्वीरें और ऑडियो कैसे भेजें, इसमें कितना खर्च आता है, फ़ोटो में लोगों की प्राइवेसी की सुरक्षा कैसे करें, और एक्सेसिबिलिटी के लिए इसका अच्छा इस्तेमाल कैसे करें, जैसे कि alt text लिखना।

पाठ वीडियो में

60 सेकंड में

मल्टीमॉडल APIs के साथ काम करना

मॉडल API को तस्वीरें और ऑडियो कैसे भेजें, इसमें कितना खर्च आता है, फ़ोटो में लोगों की प्राइवेसी की सुरक्षा कैसे करें, और एक्सेसिबिलिटी के लिए इसका अच्छा इस्तेमाल कैसे करें, जैसे…

1/5
आसान शब्दों में
किसी AI को फ़ोटो भेजना वैसा ही है जैसे अंदर तस्वीर रखकर कोई चिट्ठी पोस्ट करना। बड़े लिफ़ाफ़े के लिए आप ज़्यादा डाक खर्च देते हैं, और जो भी इसे संभालता है वह देख सकता है कि अंदर क्या है। इसलिए आप सिर्फ़ वही भेजते हैं जिसकी ज़रूरत हो, और भरोसा करने से पहले जवाब की जांच करते हैं।
ज़्यादातर मॉडल प्रोवाइडर आपको अपनी API के ज़रिए तस्वीरें भेजने की सुविधा देते हैं, और कुछ ऑडियो या वीडियो भेजने की भी। बारीकियाँ अलग हो सकती हैं, लेकिन ढांचा एक जैसा ही होता है: आप एक ऐसा मैसेज भेजते हैं जिसमें कई parts होते हैं, जैसे कि एक टेक्स्ट सवाल और एक तस्वीर, और बदले में आपको टेक्स्ट (या कभी-कभी ऑडियो) मिलता है।

तस्वीर कैसे जाती है

  • Inline: फ़ाइल के बाइट्स को base64 का इस्तेमाल करके टेक्स्ट के रूप में कोड किया जाता है और रिक्वेस्ट के अंदर रख दिया जाता है। Base64 डेटा को लगभग एक-तिहाई बड़ा बना देता है।
  • लिंक या अपलोड के ज़रिए: कुछ प्रोवाइडर URL या आपके द्वारा पहले अपलोड की गई फ़ाइल को स्वीकार करते हैं। पक्का करें कि लिंक कोई ऐसी प्राइवेट चीज़ न हो जिसे आप नहीं चाहते कि प्रोवाइडर हासिल (fetch) करे।
  • फ़ील्ड के नाम, साइज़ की सीमाएं और काम करने वाले फ़ॉर्मेट प्रोवाइडर के हिसाब से अलग होते हैं और समय के साथ बदलते रहते हैं। हमेशा मौजूदा docs जांचें।
A provider-neutral request (you plug in your own call_model)python
import base64
import pathlib

def call_model(parts: list) -> str:
    ...  # plug in your provider's SDK or HTTP call here
    raise NotImplementedError

def image_part(path: str, media_type: str = "image/jpeg") -> dict:
    data = pathlib.Path(path).read_bytes()
    return {
        "type": "image",
        "media_type": media_type,
        "data": base64.b64encode(data).decode("ascii"),
    }

def describe_for_alt_text(path: str) -> str:
    parts = [
        image_part(path),
        {"type": "text", "text": (
            "Write alt text for this image for a screen reader user. "
            "One or two sentences, under 125 characters if possible. "
            "Describe what matters for understanding the page. "
            "Do not guess names, ages, caste, religion or health of people. "
            "If there is important text in the image, include it exactly."
        )},
    ]
    return call_model(parts)
नोट
ऊपर बताया गया मैसेज का ढांचा सामान्य है। असली प्रोवाइडर अपने खुद के फ़ील्ड नामों का इस्तेमाल करते हैं। API keys को environment variables या सीक्रेट्स स्टोर में रखें, कभी भी कोड में नहीं।

खर्च: तस्वीरों में बहुत सारे टोकन होते हैं

प्रोवाइडर आम तौर पर किसी तस्वीर को उसके साइज़ के आधार पर टोकन में बदल देते हैं, और टेक्स्ट की तरह ही उनके पैसे लेते हैं। एक बड़ी फ़ोटो पर लगने वाला खर्च उस सवाल से कहीं ज़्यादा हो सकता है जो आप उसके बारे में पूछते हैं। खर्च कम रखने के तरीके:
  1. 1

    पहले रीसाइज़ करें

    तस्वीरों को उस सबसे छोटे साइज़ में सिकोड़ें जिसमें आपकी ज़रूरत की चीज़ साफ़ दिखती रहे।
  2. 2

    क्रॉप करें

    सिर्फ़ वही हिस्सा भेजें जो ज़रूरी हो, जैसे किसी फ़ॉर्म के पते वाला हिस्सा।
  3. 3

    बार-बार भेजने से बचें

    एक लंबी चैट में, हर बार उसी तस्वीर को दोबारा गिना जा सकता है। एक बार इसका सारांश बना लें, फिर जहाँ तक मुमकिन हो उस सारांश का ही हवाला दें।
  4. 4

    सीमाएं तय करें

    फ़ाइल साइज़, हर रिक्वेस्ट में तस्वीरों की संख्या और हर यूज़र की रिक्वेस्ट्स पर कैप (सीमा) लगाएं।
  5. 5

    मापें

    हर रिक्वेस्ट के टोकन काउंट को लॉग करें और बिल पर नज़र रखें।

प्राइवेसी: तस्वीरें आपकी सोच से कहीं ज़्यादा बयां करती हैं

फ़ोटो में क्या हो सकता हैक्या करना चाहिए
उन लोगों के चेहरे जिनकी सहमति नहीं थीसहमति लें, या जिन चेहरों की ज़रूरत न हो उन्हें ब्लर कर दें
छिपे हुए मेटाडेटा (EXIF) में लोकेशन, डिवाइस और समयभेजने या स्टोर करने से पहले मेटाडेटा हटा दें
दस्तावेज़: आधार, पैन, बैंक की जानकारी, मेडिकल रिपोर्टजिन नंबरों की ज़रूरत न हो उन्हें मास्क (छिपा) दें; मुमकिन हो तो भेजने से बचें
बैकग्राउंड में मौजूद चीज़ें: कोई स्क्रीन, चिट्ठी, नंबर प्लेटसिर्फ़ काम के हिस्से को क्रॉप करें
यह भी जांचें कि प्रोवाइडर आपका डेटा कितने समय तक रखता है और क्या इसका इस्तेमाल ट्रेनिंग के लिए किया जाता है। भारत के डिजिटल पर्सनल डेटा प्रोटेक्शन एक्ट और इसी तरह के कानूनों के तहत, लोगों के पर्सनल डेटा को प्रोसेस करने के लिए आपके पास एक साफ़ मकसद और कानूनी आधार (जैसे कि सहमति) होना ज़रूरी है।

एक्सेसिबिलिटी: एक ज़बरदस्त और अच्छा इस्तेमाल

जो लोग देख नहीं सकते या जिन्हें कम दिखता है, वे स्क्रीन रीडर का इस्तेमाल करते हैं, जो तस्वीरों के alt text को पढ़कर सुनाता है। कई वेबसाइटों और ऐप्स पर ऐसी तस्वीरें होती हैं जिनमें कोई alt text होता ही नहीं है। एक विज़न मॉडल तेज़ी से alt text का ड्राफ़्ट तैयार कर सकता है, और यूज़र की अपनी भाषा में चार्ट या फ़ोटो का ब्यौरा दे सकता है।
कमज़ोर AI alt text
  • "एक तस्वीर का चित्र"
  • "एक खुश युवा पंजाबी महिला" (पहचान और भावनाओं का अंदाज़ा लगाना)
  • सजावटी बॉर्डर का 200 शब्दों का विवरण
अच्छा alt text, जिसे किसी इंसान ने जांचा हो
  • "बार चार्ट: 2021 से 2024 तक हर साल मानसून की बारिश बढ़ी" (असली आंकड़ों की जांच के साथ)
  • "मंच पर एक महिला प्रमाणपत्र पकड़े हुए है"
  • सिर्फ़ सजावट वाली तस्वीरों के लिए खाली alt text, ताकि स्क्रीन रीडर उन्हें छोड़ दें
सावधान रहें
AI alt text पूरे आत्मविश्वास के साथ गलत हो सकता है, जैसा कि आपने गिनती और छोटे टेक्स्ट के मामले में देखा था। चार्ट, दवाइयों, फ़ॉर्म और ऐसी किसी भी चीज़ के लिए जिस पर लोग कोई कदम उठाने वाले हों, किसी इंसान द्वारा इसे जांचा जाना ज़रूरी है। इससे भी बेहतर यह होगा कि दृष्टिहीन या कम दृष्टि वाले यूज़र्स से पूछें कि उन्हें क्या चाहिए।
इसे आज़माएं। दो मिनट के लिए अपने फ़ोन का स्क्रीन रीडर चालू करें और कोई न्यूज़ ऐप खोलें। तस्वीरें कैसे पढ़कर सुनाई जा रही हैं? किनसे मदद मिली और किनसे नहीं?

और देखें और पढ़ें

लैब

पाँच तस्वीरों के लिए alt text, जिसे AI से ड्राफ़्ट कराया गया हो और आपने ठीक किया हो, साथ ही हर सुधार पर नोट्स।

~35 min

समस्या

कोई भी मुफ़्त चैटबॉट इस्तेमाल करें जो तस्वीरें स्वीकार करता हो, या अपने खुद के प्रोवाइडर के साथ स्टार्टर कोड का इस्तेमाल करें। ऐसी तस्वीरों का इस्तेमाल करें जिन्हें इस्तेमाल करने का आपके पास अधिकार हो, और जिनमें कोई प्राइवेट दस्तावेज़ न हों।

  1. किसी स्कूल, कॉलेज या कम्युनिटी की वेबसाइट से या अपनी बनाई किसी प्रेजेंटेशन से पाँच तस्वीरें चुनें: लोगों वाली एक फ़ोटो, एक चार्ट या ग्राफ़, टेक्स्ट वाली एक तस्वीर (कोई पोस्टर), किसी प्रॉडक्ट की फ़ोटो, और पूरी तरह सजावटी तस्वीर।
  2. स्टार्टर कोड के निर्देशों का इस्तेमाल करके मॉडल से alt text लिखने को कहें।
  3. हर तस्वीर के लिए, ड्राफ़्ट की जांच करें: क्या तथ्य, संख्याएं और टेक्स्ट सही हैं? क्या यह पहचान, उम्र, धर्म या भावनाओं का अंदाज़ा लगाता है? क्या यह बहुत लंबा है? क्या सजावटी तस्वीर को सही ढंग से खाली alt text दिया गया है?
  4. AI ड्राफ़्ट के बगल में अपना सुधारा हुआ वर्शन लिखें और आपने क्या बदला और क्यों बदला, इस पर एक छोटा नोट लिखें।
  5. वैकल्पिक: एक तस्वीर की चौड़ाई आधी करके उसे रीसाइज़ करें और जवाब की तुलना करें। क्या कुछ बदला?
शुरुआती कोडpython
import base64
import pathlib

def call_model(parts: list) -> str:
    ...  # plug in your provider's SDK or HTTP call here
    raise NotImplementedError

PROMPT = (
    "Write alt text for this image for a screen reader user. "
    "One or two sentences, under 125 characters if possible. "
    "Describe what matters for understanding the page. "
    "Do not guess names, ages, caste, religion or health of people. "
    "If there is important text in the image, include it exactly. "
    "If the image is purely decorative, reply with exactly: DECORATIVE"
)

MEDIA = {".jpg": "image/jpeg", ".jpeg": "image/jpeg",
         ".png": "image/png", ".webp": "image/webp"}
MAX_BYTES = 2_000_000  # your own limit; check your provider's docs

def image_part(path: pathlib.Path) -> dict:
    data = path.read_bytes()
    if len(data) > MAX_BYTES:
        raise ValueError(f"{path.name} is too large; resize it first")
    encoded = base64.b64encode(data).decode("ascii")
    print(f"{path.name}: {len(data)} bytes, {len(encoded)} as base64")
    return {"type": "image", "media_type": MEDIA[path.suffix.lower()],
            "data": encoded}

def draft_alt_text(path: pathlib.Path) -> str:
    reply = call_model([image_part(path), {"type": "text", "text": PROMPT}])
    return "" if reply.strip() == "DECORATIVE" else reply.strip()

if __name__ == "__main__":
    for p in sorted(pathlib.Path("images").iterdir()):
        if p.suffix.lower() in MEDIA:
            try:
                print(p.name, "->", repr(draft_alt_text(p)))
            except NotImplementedError:
                print(p.name, "-> (plug in call_model first)")
Google Colab खोलें ↗इस कोड के लिए आपके अपने सेटअप की ज़रूरत है (एक मॉडल, एक GPU या अतिरिक्त पैकेज)। इसे Google Colab में चलाएं: File → Upload notebook।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1आपका ऐप यूज़र्स को AI विवरण के लिए फ़ोटो अपलोड करने देता है। आप बेतहाशा बढ़ते खर्च को कैसे रोकेंगे?दिखाएं

भेजने से पहले अपनी तरफ से तस्वीरों को रीसाइज़ और कंप्रेस करें, और साइज़ सीमा से बड़ी फ़ाइलों को रिजेक्ट करें। हर रिक्वेस्ट में तस्वीरों की संख्या और हर दिन प्रति यूज़र रिक्वेस्ट्स की सीमा तय करें। एक ही तस्वीर के नतीजों को कैश करें ताकि उसे दोबारा न भेजा जाए। हर रिक्वेस्ट के टोकन काउंट को लॉग करें और दैनिक बिल पर अलर्ट सेट करें। आसान कामों के लिए छोटा, सस्ता मॉडल और ज़रूरत पड़ने पर ही बड़ा मॉडल इस्तेमाल करें।

Q2स्क्रीन रीडर के कई यूज़र्स के लिए "गलत alt text न होने से भी बदतर है" बात सच क्यों है?दिखाएं

देख सकने वाला यूज़र देख सकता है कि कोई कैप्शन गलत है। दृष्टिहीन यूज़र alt text पर भरोसा करता है क्योंकि इमेज तक पहुँचने का यही उसका इकलौता ज़रिया होता है। अगर इसमें किसी चार्ट में गलत नंबर या किसी पोस्टर पर गलत निर्देश लिखा हो, तो उन्हें इसका पता चले बिना ही वे उस पर अमल कर सकते हैं। alt text न होने से कम से कम यह संकेत तो मिल जाता है कि जानकारी मौजूद नहीं है, ताकि वे किसी से पूछ सकें। यही वजह है कि ऐसी इमेज के लिए इंसानी जाँच सबसे ज़्यादा मायने रखती है जिन पर लोग अमल करने वाले हों।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या मुझे पूरी फ़ोटो भेजनी चाहिए या क्रॉप करके?

जब भी मुमकिन हो, क्रॉप करके भेजें। यह सस्ता है, ज़्यादा प्राइवेट है और अक्सर ज़्यादा सटीक होता है, क्योंकि मॉडल ज़रूरी हिस्से को ज़्यादा विस्तार से देख पाता है।

क्या मैं इसी तरह ऑडियो या वीडियो भी भेज सकता हूँ?

कुछ प्रोवाइडर ऑडियो और वीडियो स्वीकार करते हैं, दूसरे नहीं करते, और सीमाएं भी अलग-अलग होती हैं। कुछ चाहते हैं कि आप पहले फ़ाइल अपलोड करें। मौजूदा docs देखें, और याद रखें कि ऑडियो और वीडियो महंगे हो सकते हैं और उनमें कहीं ज़्यादा पर्सनल डेटा हो सकता है।

क्या AI alt text इतना अच्छा होता है कि बिना समीक्षा के पब्लिश किया जा सके?

सजावटी या कम जोखिम वाली तस्वीरों के लिए एक सरसरी जांच काफ़ी हो सकती है। चार्ट, निर्देशों, प्रॉडक्ट्स, न्यूज़ फ़ोटो और ऐसी किसी भी चीज़ के लिए जिसमें संख्याएँ या टेक्स्ट हों, किसी इंसान को उसकी समीक्षा करनी चाहिए। गलत alt text न होने से भी बदतर है, क्योंकि यूज़र यह नहीं देख सकता कि वह गलत है।

मैं फ़ोटो से लोकेशन डेटा कैसे हटाऊं?

कई फ़ोनों में तस्वीरों में लोकेशन न जोड़ने या शेयर करते समय इसे हटाने की सेटिंग होती है। इमेज लाइब्रेरी और टूल्स भी मेटाडेटा के बिना एक कॉपी सेव कर सकते हैं। हटाने के बाद, पुष्टि करने के लिए EXIF व्यूअर से फ़ाइल की जांच करें।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें