मीडिया फ़ाइलों से सूचना देना


ai.google.dev पर देखें Google Colab में चलाएं GitHub पर सोर्स देखें

Gemini API के साथ टेक्स्ट, इमेज, ऑडियो, और वीडियो डेटा का इस्तेमाल किया जा सकता है. इसे मल्टीमॉडल प्रॉम्प्ट भी कहा जाता है. इसका मतलब है कि अपने प्रॉम्प्ट में इस तरह की मीडिया फ़ाइलों को शामिल किया जा सकता है. छोटी फ़ाइलों के लिए, प्रॉम्प्ट देते समय Gemini मॉडल को सीधे तौर पर किसी लोकल फ़ाइल पर पॉइंट किया जा सकता है. बड़ी फ़ाइलों को प्रॉम्प्ट में शामिल करने से पहले, उन्हें File API की मदद से अपलोड करें.

File API का इस्तेमाल करके, हर प्रोजेक्ट में 20 जीबी तक फ़ाइलें सेव की जा सकती हैं. हालांकि, हर फ़ाइल का साइज़ 2 जीबी से ज़्यादा नहीं होना चाहिए. फ़ाइलें 48 घंटे तक सेव रहती हैं. इस समयावधि में, फ़ाइलें जनरेट करने के लिए इन्हें एपीआई पासकोड से ऐक्सेस किया जा सकता है. साथ ही, इन्हें एपीआई से डाउनलोड नहीं किया जा सकता. Files API उन सभी देशों/इलाकों में बिना किसी शुल्क के उपलब्ध है जहां Gemini API उपलब्ध है.

File API ऐसे इनपुट मैनेज करता है जिनका इस्तेमाल model.generateContent या model.streamGenerateContent के साथ कॉन्टेंट जनरेट करने के लिए किया जा सकता है. मान्य फ़ाइल फ़ॉर्मैट (MIME टाइप) और इस्तेमाल किए जा सकने वाले मॉडल की जानकारी के लिए, इस्तेमाल किए जा सकने वाले फ़ाइल फ़ॉर्मैट देखें.

इस गाइड में, File API का इस्तेमाल करके मीडिया फ़ाइलों को अपलोड करने और उन्हें Gemini API को GenerateContent कॉल में शामिल करने का तरीका बताया गया है. ज़्यादा जानकारी के लिए, कोड के सैंपल देखें.

शुरू करने से पहले: अपना प्रोजेक्ट और एपीआई पासकोड सेट अप करें

Gemini API या उसके File API को कॉल करने से पहले, आपको अपना प्रोजेक्ट सेट अप करना होगा और एपीआई पासकोड को कॉन्फ़िगर करना होगा.

इमेज के साथ प्रॉम्प्ट देना

इस ट्यूटोरियल में, आपने File API का इस्तेमाल करके एक सैंपल इमेज अपलोड की है और फिर उसका इस्तेमाल कॉन्टेंट जनरेट करने के लिए किया है.

इमेज फ़ाइल अपलोड करें

अपनी फ़ाइल अपलोड करने का तरीका जानने के लिए, अपेंडिक्स सेक्शन देखें.

  1. अपलोड करने के लिए सैंपल इमेज तैयार करें:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. media.upload का इस्तेमाल करके वह फ़ाइल अपलोड करें, ताकि आप उसे अन्य एपीआई कॉल के ज़रिए ऐक्सेस कर सकें:

    sample_file = genai.upload_file(path="image.jpg",
                                display_name="Sample drawing")
    
    print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
    

response से पता चलता है कि अपलोड की गई इमेज, बताए गए display_name के साथ सेव की गई है. साथ ही, इसमें Gemini API कॉल में फ़ाइल का रेफ़रंस देने के लिए uri दिया गया है. response का इस्तेमाल करके ट्रैक करें कि अपलोड की गई फ़ाइलें, यूआरआई पर कैसे मैप की जाती हैं.

आपके इस्तेमाल के उदाहरण के आधार पर, यूआरआई को dict या डेटाबेस जैसे स्ट्रक्चर में सेव किया जा सकता है.

इमेज फ़ाइल का मेटाडेटा पाएं

फ़ाइल अपलोड करने के बाद, यह पुष्टि की जा सकती है कि एपीआई फ़ाइल सेव हो गई है या नहीं. साथ ही, SDK टूल के ज़रिए files.get को कॉल करके उसका मेटाडेटा पाएं.

इस तरीके से, आपको एपीआई पासकोड से लिंक किए गए Google Cloud प्रोजेक्ट से जुड़ी, अपलोड की गई फ़ाइल का मेटाडेटा मिलता है. सिर्फ़ name (और एक्सटेंशन के हिसाब से, uri) यूनीक होते हैं. फ़ाइलों की पहचान करने के लिए display_name का इस्तेमाल सिर्फ़ तब करें, जब यूनीक वैल्यू को खुद मैनेज किया जा रहा हो.

file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")

अपलोड की गई इमेज फ़ाइल का इस्तेमाल करके कॉन्टेंट जनरेट करें

इमेज अपलोड करने के बाद, GenerateContent अनुरोध किए जा सकते हैं. इनमें, फ़ाइल अपलोड करने या सीधे फ़ाइल का मेटाडेटा पाने के लिए, रिस्पॉन्स में uri का रेफ़रंस दिया जाता है.

इस उदाहरण में, एक प्रॉम्प्ट बनाया जा रहा है, जो टेक्स्ट से शुरू होता है और इसके बाद, अपलोड की गई फ़ाइल का यूआरआई:

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

response = model.generate_content([sample_file, "Describe the image with a creative description."])

Markdown(">" + response.text)

इमेज फ़ाइल मिटाएं

फ़ाइलें 48 घंटे बाद अपने-आप मिट जाती हैं. एसडीके के ज़रिए, files.delete का इस्तेमाल करके इन्हें मैन्युअल तरीके से भी मिटाया जा सकता है.

genai.delete_file(sample_file.name)
print(f'Deleted {sample_file.display_name}.')

वीडियो के साथ प्रॉम्प्ट देना

इस ट्यूटोरियल में, आपने File API का इस्तेमाल करके एक सैंपल वीडियो अपलोड किया है और फिर इसका इस्तेमाल कॉन्टेंट जनरेट करने के लिए किया है.

वीडियो फ़ाइल अपलोड करें

Gemini API, वीडियो फ़ाइल फ़ॉर्मैट को सीधे स्वीकार करता है. इस उदाहरण में एक छोटी फ़िल्म "बिग बक बनी" का इस्तेमाल किया गया है.

"Big Buck Bunny" को (c) कॉपीराइट 2008, Bंडर Foundation / www.bigbuckbunny.org ने क्रिएटिव कॉमंस एट्रिब्यूशन 3.0 के तहत लाइसेंस दिया है.

अपनी फ़ाइल अपलोड करने का तरीका जानने के लिए, अपेंडिक्स सेक्शन देखें.

  1. अपलोड करने के लिए सैंपल वीडियो फ़ाइल तैयार करें:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. media.upload का इस्तेमाल करके वह फ़ाइल अपलोड करें, ताकि आप उसे अन्य एपीआई कॉल के ज़रिए ऐक्सेस कर सकें:

    video_file_name = "BigBuckBunny_320x180.mp4"
    
    print(f"Uploading file...")
    video_file = genai.upload_file(path=video_file_name)
    print(f"Completed upload: {video_file.uri}")
    

वीडियो फ़ाइल के अपलोड होने की पुष्टि करना

पुष्टि करें कि एपीआई ने, SDK टूल के ज़रिए files.get तरीके को कॉल करके, वीडियो फ़ाइल अपलोड कर दी है.

वीडियो फ़ाइलों में, File API से State फ़ील्ड शामिल होता है. जब कोई वीडियो अपलोड किया जाता है, तो वह तब तक PROCESSING की स्थिति में रहेगा, जब तक उसका अनुमान नहीं लगाया जा सकता. मॉडल का अनुमान लगाने के लिए सिर्फ़ ACTIVE फ़ाइलों का इस्तेमाल किया जा सकता है.

import time

while video_file.state.name == "PROCESSING":
    print('.', end='')
    time.sleep(10)
    video_file = genai.get_file(video_file.name)

if video_file.state.name == "FAILED":
  raise ValueError(video_file.state.name)

वीडियो फ़ाइल का मेटाडेटा पाना

अपलोड की गई वीडियो फ़ाइल का मेटाडेटा, किसी भी समय देखा जा सकता है. इसके लिए, SDK टूल का इस्तेमाल करके files.get तरीके का इस्तेमाल करें.

इस तरीके से, आपको एपीआई पासकोड से लिंक किए गए Google Cloud प्रोजेक्ट से जुड़ी, अपलोड की गई फ़ाइल का मेटाडेटा मिलता है. सिर्फ़ name (और एक्सटेंशन के हिसाब से, uri) यूनीक होते हैं. फ़ाइलों की पहचान करने के लिए display_name का इस्तेमाल सिर्फ़ तब करें, जब यूनीक वैल्यू को खुद मैनेज किया जा रहा हो.

file = genai.get_file(name=video_file.name)
print(f"Retrieved file '{file.display_name}' as: {video_file.uri}")

अपलोड की गई वीडियो फ़ाइल का इस्तेमाल करके कॉन्टेंट जनरेट करें

वीडियो अपलोड करने के बाद, ऐसे GenerateContent अनुरोध किए जा सकते हैं जिनमें फ़ाइल को अपलोड करने या सीधे फ़ाइल का मेटाडेटा इकट्ठा करके, जवाब में दिए गए uri का रेफ़रंस दिया गया हो.

वीडियो पर अनुमान चलाने से पहले, पक्का करें कि आपने वीडियो फ़ाइल के अपलोड होने की स्थिति की पुष्टि कर ली है (ऊपर दिया गया सेक्शन).

# Create the prompt.
prompt = "Describe this video."

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
                                  request_options={"timeout": 600})
print(response.text)

वीडियो फ़ाइल मिटाएं

फ़ाइलें 48 घंटे बाद अपने-आप मिट जाती हैं. एसडीके के ज़रिए, files.delete का इस्तेमाल करके इन्हें मैन्युअल तरीके से भी मिटाया जा सकता है.

genai.delete_file(file_response.name)
print(f'Deleted file {file_response.uri}')

इस्तेमाल किए जा सकने वाले फ़ाइल फ़ॉर्मैट

Gemini के मॉडल में, कई फ़ाइल फ़ॉर्मैट वाले प्रॉम्प्ट काम किए जा सकते हैं. इस सेक्शन में प्रॉम्प्ट, खास तौर पर इमेज, ऑडियो, वीडियो, और सामान्य टेक्स्ट वाली फ़ाइलों के लिए, सामान्य मीडिया फ़ॉर्मैट का इस्तेमाल करते समय ध्यान देने वाली बातों के बारे में बताया गया है. मीडिया फ़ाइलों का इस्तेमाल, सिर्फ़ खास मॉडल वर्शन के लिए प्रॉम्प्ट देने के लिए किया जा सकता है. जैसा कि इस टेबल में दिखाया गया है.

मॉडल इमेज ऑडियो वीडियो सामान्य टेक्स्ट
Gemini 1.5 Pro (रिलीज़ 008 और उसके बाद के वर्शन) ✔ (ज़्यादा से ज़्यादा 3,600 इमेज फ़ाइलें)

इमेज फ़ॉर्मैट

Gemini के 1.5 मॉडल से प्रॉम्प्ट देने के लिए, इमेज के डेटा का इस्तेमाल किया जा सकता है. प्रॉम्प्ट के लिए इमेज का इस्तेमाल करते समय, इन सीमाओं और ज़रूरी शर्तों पर निर्भर करता है:

  • इमेज, इनमें से किसी एक इमेज डेटा MIME टाइप में होनी चाहिए:
    • PNG - इमेज/png
    • JPEG - Image/jpeg
    • WebP - इमेज/webp
    • HEIC - इमेज/हीक
    • एचईआईएफ़ - इमेज/हीफ़
  • Gemini के 1.5 मॉडल के लिए, ज़्यादा से ज़्यादा 3,600 इमेज.
  • किसी इमेज में पिक्सल की संख्या के लिए कोई तय सीमा नहीं होती है. हालांकि, बड़ी इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बनाए रखते हुए, उन्हें 3072 x 3072 के ज़्यादा से ज़्यादा रिज़ॉल्यूशन में फ़िट करने के लिए छोटा किया जाता है.

ऑडियो फ़ॉर्मैट

Gemini के 1.5 मॉडल से प्रॉम्प्ट देने के लिए, ऑडियो डेटा का इस्तेमाल किया जा सकता है. प्रॉम्प्ट के लिए ऑडियो का इस्तेमाल करते समय, इन सीमाओं और ज़रूरी शर्तों पर निर्भर करता है:

  • ऑडियो डेटा का इस्तेमाल, इन सामान्य ऑडियो फ़ॉर्मैट MIME टाइप में किया जा सकता है:
    • WAV - ऑडियो/wav
    • एमपी3 - ऑडियो/mp3
    • एआईएफ़एफ़ - ऑडियो/आइफ़
    • AAC - ऑडियो/aac
    • OGG वोर्बिस - ऑडियो/ogg
    • FLAC - ऑडियो/flac
  • एक प्रॉम्प्ट में ज़्यादा से ज़्यादा 9.5 घंटे का ऑडियो डेटा इस्तेमाल किया जा सकता है.
  • ऑडियो फ़ाइलों को 16 केबीपीएस डेटा रिज़ॉल्यूशन तक रीसैंपल किया जाता है. साथ ही, ऑडियो के कई चैनलों को एक चैनल में जोड़ दिया जाता है.
  • एक प्रॉम्प्ट में ऑडियो फ़ाइलों की संख्या के लिए कोई तय सीमा नहीं है. हालांकि, एक प्रॉम्प्ट में सभी ऑडियो फ़ाइलों की कुल लंबाई 9.5 घंटे से ज़्यादा नहीं हो सकती.

वीडियो फ़ॉर्मैट

Gemini के 1.5 मॉडल से प्रॉम्प्ट देने के लिए, वीडियो डेटा का इस्तेमाल किया जा सकता है.

  • वीडियो डेटा का इस्तेमाल, इन सामान्य वीडियो फ़ॉर्मैट MIME टाइप में किया जा सकता है:

    • video/mp4
    • वीडियो/एमपीईजी
    • वीडियो/मूव
    • वीडियो/एवी
    • video/x-flv
    • वीडियो/एमपीजी
    • वीडियो/वेबम
    • वीडियो/WMv
    • वीडियो/3gpp
  • File API सेवा, वीडियो के सैंपल को एक फ़्रेम प्रति सेकंड (एफ़पीएस) पर सेट करती है. बेहतरीन क्वालिटी के अनुमान दिखाने के लिए, इनमें बदलाव किए जा सकते हैं. हर इमेज के रिज़ॉल्यूशन और क्वालिटी पर ध्यान दिए बिना 258 टोकन इस्तेमाल किए जाते हैं.

सादे टेक्स्ट के फ़ॉर्मैट

File API इन MIME टाइप वाली सामान्य टेक्स्ट वाली फ़ाइलें अपलोड करने में मदद करता है:

  • टेक्स्ट/सादा
  • text/html
  • text/css
  • text/javascript
  • application/x-javascript
  • टेक्स्ट/x-टाइपस्क्रिप्ट
  • ऐप्स/x-typescript
  • टेक्स्ट/csv
  • टेक्स्ट/मार्कडाउन
  • टेक्स्ट/x-Python
  • application/x-python-code
  • application/json
  • text/xml
  • ऐप्लिकेशन/आरटीएफ़
  • टेक्स्ट/आरटीएफ़

सामान्य टेक्स्ट वाली जिन फ़ाइलों का MIME टाइप सूची में नहीं है उनके लिए ऊपर दिए गए MIME टाइप में से किसी एक को मैन्युअल तरीके से डालकर देखें.

अपेंडिक्स: Colab में फ़ाइलें अपलोड करना

यह notebook, इंटरनेट से डाउनलोड की गई फ़ाइलों के साथ File API का इस्तेमाल करता है. अगर इसे Colab में चलाया जा रहा है और आपको अपनी फ़ाइलें इस्तेमाल करनी हैं, तो पहले आपको इन्हें Colab के इंस्टेंस में अपलोड करना होगा.

सबसे पहले, बाईं ओर साइडबार में फ़ाइल पर क्लिक करें. इसके बाद, अपलोड करें बटन पर क्लिक करें:

इसके बाद, उस फ़ाइल को File API में अपलोड किया जाएगा. नीचे दिए गए कोड सेल के फ़ॉर्म में, अपलोड की गई फ़ाइल का फ़ाइल नाम डालें और फ़ाइल का सही डिसप्ले नेम डालें. इसके बाद, सेल चलाएं.

my_filename = "gemini_logo.png" # @param {type:"string"}
my_file_display_name = "Gemini Logo" # @param {type:"string"}

my_file = genai.upload_file(path=my_filename,
                            display_name=my_file_display_name)
print(f"Uploaded file '{my_file.display_name}' as: {my_file.uri}")