मल्टीमॉडल APIs के साथ काम करना
मॉडल API को तस्वीरें और ऑडियो कैसे भेजें, इसमें कितना खर्च आता है, फ़ोटो में लोगों की प्राइवेसी की सुरक्षा कैसे करें, और एक्सेसिबिलिटी के लिए इसका अच्छा इस्तेमाल कैसे करें, जैसे कि alt text लिखना।
60 सेकंड में
मल्टीमॉडल APIs के साथ काम करना
मॉडल API को तस्वीरें और ऑडियो कैसे भेजें, इसमें कितना खर्च आता है, फ़ोटो में लोगों की प्राइवेसी की सुरक्षा कैसे करें, और एक्सेसिबिलिटी के लिए इसका अच्छा इस्तेमाल कैसे करें, जैसे…
तस्वीर कैसे जाती है
- Inline: फ़ाइल के बाइट्स को base64 का इस्तेमाल करके टेक्स्ट के रूप में कोड किया जाता है और रिक्वेस्ट के अंदर रख दिया जाता है। Base64 डेटा को लगभग एक-तिहाई बड़ा बना देता है।
- लिंक या अपलोड के ज़रिए: कुछ प्रोवाइडर URL या आपके द्वारा पहले अपलोड की गई फ़ाइल को स्वीकार करते हैं। पक्का करें कि लिंक कोई ऐसी प्राइवेट चीज़ न हो जिसे आप नहीं चाहते कि प्रोवाइडर हासिल (fetch) करे।
- फ़ील्ड के नाम, साइज़ की सीमाएं और काम करने वाले फ़ॉर्मेट प्रोवाइडर के हिसाब से अलग होते हैं और समय के साथ बदलते रहते हैं। हमेशा मौजूदा docs जांचें।
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)खर्च: तस्वीरों में बहुत सारे टोकन होते हैं
- 1
पहले रीसाइज़ करें
तस्वीरों को उस सबसे छोटे साइज़ में सिकोड़ें जिसमें आपकी ज़रूरत की चीज़ साफ़ दिखती रहे। - 2
क्रॉप करें
सिर्फ़ वही हिस्सा भेजें जो ज़रूरी हो, जैसे किसी फ़ॉर्म के पते वाला हिस्सा। - 3
बार-बार भेजने से बचें
एक लंबी चैट में, हर बार उसी तस्वीर को दोबारा गिना जा सकता है। एक बार इसका सारांश बना लें, फिर जहाँ तक मुमकिन हो उस सारांश का ही हवाला दें। - 4
सीमाएं तय करें
फ़ाइल साइज़, हर रिक्वेस्ट में तस्वीरों की संख्या और हर यूज़र की रिक्वेस्ट्स पर कैप (सीमा) लगाएं। - 5
मापें
हर रिक्वेस्ट के टोकन काउंट को लॉग करें और बिल पर नज़र रखें।
प्राइवेसी: तस्वीरें आपकी सोच से कहीं ज़्यादा बयां करती हैं
| फ़ोटो में क्या हो सकता है | क्या करना चाहिए |
|---|---|
| उन लोगों के चेहरे जिनकी सहमति नहीं थी | सहमति लें, या जिन चेहरों की ज़रूरत न हो उन्हें ब्लर कर दें |
| छिपे हुए मेटाडेटा (EXIF) में लोकेशन, डिवाइस और समय | भेजने या स्टोर करने से पहले मेटाडेटा हटा दें |
| दस्तावेज़: आधार, पैन, बैंक की जानकारी, मेडिकल रिपोर्ट | जिन नंबरों की ज़रूरत न हो उन्हें मास्क (छिपा) दें; मुमकिन हो तो भेजने से बचें |
| बैकग्राउंड में मौजूद चीज़ें: कोई स्क्रीन, चिट्ठी, नंबर प्लेट | सिर्फ़ काम के हिस्से को क्रॉप करें |
एक्सेसिबिलिटी: एक ज़बरदस्त और अच्छा इस्तेमाल
- "एक तस्वीर का चित्र"
- "एक खुश युवा पंजाबी महिला" (पहचान और भावनाओं का अंदाज़ा लगाना)
- सजावटी बॉर्डर का 200 शब्दों का विवरण
- "बार चार्ट: 2021 से 2024 तक हर साल मानसून की बारिश बढ़ी" (असली आंकड़ों की जांच के साथ)
- "मंच पर एक महिला प्रमाणपत्र पकड़े हुए है"
- सिर्फ़ सजावट वाली तस्वीरों के लिए खाली alt text, ताकि स्क्रीन रीडर उन्हें छोड़ दें
और देखें और पढ़ें
लैब
पाँच तस्वीरों के लिए alt text, जिसे AI से ड्राफ़्ट कराया गया हो और आपने ठीक किया हो, साथ ही हर सुधार पर नोट्स।
समस्या
कोई भी मुफ़्त चैटबॉट इस्तेमाल करें जो तस्वीरें स्वीकार करता हो, या अपने खुद के प्रोवाइडर के साथ स्टार्टर कोड का इस्तेमाल करें। ऐसी तस्वीरों का इस्तेमाल करें जिन्हें इस्तेमाल करने का आपके पास अधिकार हो, और जिनमें कोई प्राइवेट दस्तावेज़ न हों।
- किसी स्कूल, कॉलेज या कम्युनिटी की वेबसाइट से या अपनी बनाई किसी प्रेजेंटेशन से पाँच तस्वीरें चुनें: लोगों वाली एक फ़ोटो, एक चार्ट या ग्राफ़, टेक्स्ट वाली एक तस्वीर (कोई पोस्टर), किसी प्रॉडक्ट की फ़ोटो, और पूरी तरह सजावटी तस्वीर।
- स्टार्टर कोड के निर्देशों का इस्तेमाल करके मॉडल से alt text लिखने को कहें।
- हर तस्वीर के लिए, ड्राफ़्ट की जांच करें: क्या तथ्य, संख्याएं और टेक्स्ट सही हैं? क्या यह पहचान, उम्र, धर्म या भावनाओं का अंदाज़ा लगाता है? क्या यह बहुत लंबा है? क्या सजावटी तस्वीर को सही ढंग से खाली alt text दिया गया है?
- AI ड्राफ़्ट के बगल में अपना सुधारा हुआ वर्शन लिखें और आपने क्या बदला और क्यों बदला, इस पर एक छोटा नोट लिखें।
- वैकल्पिक: एक तस्वीर की चौड़ाई आधी करके उसे रीसाइज़ करें और जवाब की तुलना करें। क्या कुछ बदला?
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)")आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1आपका ऐप यूज़र्स को AI विवरण के लिए फ़ोटो अपलोड करने देता है। आप बेतहाशा बढ़ते खर्च को कैसे रोकेंगे?दिखाएं
भेजने से पहले अपनी तरफ से तस्वीरों को रीसाइज़ और कंप्रेस करें, और साइज़ सीमा से बड़ी फ़ाइलों को रिजेक्ट करें। हर रिक्वेस्ट में तस्वीरों की संख्या और हर दिन प्रति यूज़र रिक्वेस्ट्स की सीमा तय करें। एक ही तस्वीर के नतीजों को कैश करें ताकि उसे दोबारा न भेजा जाए। हर रिक्वेस्ट के टोकन काउंट को लॉग करें और दैनिक बिल पर अलर्ट सेट करें। आसान कामों के लिए छोटा, सस्ता मॉडल और ज़रूरत पड़ने पर ही बड़ा मॉडल इस्तेमाल करें।
Q2स्क्रीन रीडर के कई यूज़र्स के लिए "गलत alt text न होने से भी बदतर है" बात सच क्यों है?दिखाएं
देख सकने वाला यूज़र देख सकता है कि कोई कैप्शन गलत है। दृष्टिहीन यूज़र alt text पर भरोसा करता है क्योंकि इमेज तक पहुँचने का यही उसका इकलौता ज़रिया होता है। अगर इसमें किसी चार्ट में गलत नंबर या किसी पोस्टर पर गलत निर्देश लिखा हो, तो उन्हें इसका पता चले बिना ही वे उस पर अमल कर सकते हैं। alt text न होने से कम से कम यह संकेत तो मिल जाता है कि जानकारी मौजूद नहीं है, ताकि वे किसी से पूछ सकें। यही वजह है कि ऐसी इमेज के लिए इंसानी जाँच सबसे ज़्यादा मायने रखती है जिन पर लोग अमल करने वाले हों।
अक्सर पूछे जाने वाले सवाल
क्या मुझे पूरी फ़ोटो भेजनी चाहिए या क्रॉप करके?
जब भी मुमकिन हो, क्रॉप करके भेजें। यह सस्ता है, ज़्यादा प्राइवेट है और अक्सर ज़्यादा सटीक होता है, क्योंकि मॉडल ज़रूरी हिस्से को ज़्यादा विस्तार से देख पाता है।
क्या मैं इसी तरह ऑडियो या वीडियो भी भेज सकता हूँ?
कुछ प्रोवाइडर ऑडियो और वीडियो स्वीकार करते हैं, दूसरे नहीं करते, और सीमाएं भी अलग-अलग होती हैं। कुछ चाहते हैं कि आप पहले फ़ाइल अपलोड करें। मौजूदा docs देखें, और याद रखें कि ऑडियो और वीडियो महंगे हो सकते हैं और उनमें कहीं ज़्यादा पर्सनल डेटा हो सकता है।
क्या AI alt text इतना अच्छा होता है कि बिना समीक्षा के पब्लिश किया जा सके?
सजावटी या कम जोखिम वाली तस्वीरों के लिए एक सरसरी जांच काफ़ी हो सकती है। चार्ट, निर्देशों, प्रॉडक्ट्स, न्यूज़ फ़ोटो और ऐसी किसी भी चीज़ के लिए जिसमें संख्याएँ या टेक्स्ट हों, किसी इंसान को उसकी समीक्षा करनी चाहिए। गलत alt text न होने से भी बदतर है, क्योंकि यूज़र यह नहीं देख सकता कि वह गलत है।
मैं फ़ोटो से लोकेशन डेटा कैसे हटाऊं?
कई फ़ोनों में तस्वीरों में लोकेशन न जोड़ने या शेयर करते समय इसे हटाने की सेटिंग होती है। इमेज लाइब्रेरी और टूल्स भी मेटाडेटा के बिना एक कॉपी सेव कर सकते हैं। हटाने के बाद, पुष्टि करने के लिए EXIF व्यूअर से फ़ाइल की जांच करें।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।