ai.google.dev पर देखें | Colab notebook को आज़माएं | GitHub पर notebook देखें |
Gemini API, उसे पास की गई इमेज और वीडियो का अनुमान लगा सकता है. पास होने पर किसी इमेज, इमेज की सीरीज़ या वीडियो का इस्तेमाल करके, Gemini ये काम कर सकता है:
- कॉन्टेंट से जुड़े सवालों के जवाब दें या बताएं
- कॉन्टेंट की खास जानकारी दें
- कॉन्टेंट से विश्लेषण करें
इस ट्यूटोरियल में, Gemini API को प्रॉम्प्ट देने के कुछ संभावित तरीके बताए गए हैं इमेज और वीडियो इनपुट. सभी आउटपुट सिर्फ़ टेक्स्ट के तौर पर होंगे.
शुरू करने से पहले: अपना प्रोजेक्ट और एपीआई पासकोड सेट अप करें
Gemini API को कॉल करने से पहले, आपको अपना प्रोजेक्ट सेट अप करना होगा और उसे कॉन्फ़िगर करना होगा आपकी एपीआई कुंजी.
इमेज के साथ प्रॉम्प्ट देना
इस ट्यूटोरियल में, आपको File API का इस्तेमाल करके या इनलाइन डेटा के तौर पर इमेज अपलोड करने का विकल्प दिया गया है और उन इमेज के आधार पर कॉन्टेंट जनरेट किया जा सकता है.
तकनीकी जानकारी (इमेज)
Gemini 1.5 Pro और 1.5 Flash में, 3,600 इमेज फ़ाइलें इस्तेमाल की जा सकती हैं.
इमेज, इनमें से किसी एक इमेज डेटा MIME टाइप में होनी चाहिए:
- PNG -
image/png
- JPEG -
image/jpeg
- WebP -
image/webp
- एचईआईसी -
image/heic
- एचईआईएफ़ -
image/heif
हर इमेज 258 टोकन के बराबर है.
हालांकि, इमेज में पिक्सल की संख्या के लिए कोई सीमा तय नहीं होती है. मॉडल की संदर्भ विंडो का इस्तेमाल कर रहे हैं, तो बड़ी इमेज को रिज़ॉल्यूशन 3072x3072 होना चाहिए. साथ ही, वीडियो का मूल आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बरकरार रहता है. छोटी इमेज को 768x768 पिक्सल तक स्केल किया जाता है. लागत में कोई कमी नहीं आई है बैंडविथ के अलावा, कम साइज़ वाली इमेज या परफ़ॉर्मेंस को बेहतर बनाने के लिए का इस्तेमाल किया जा सकता है.
सर्वोत्तम परिणामों के लिएः
- अपलोड करने से पहले, इमेज को सही ओरिएंटेशन में घुमाएं.
- धुंधली इमेज अपलोड न करें.
- अगर एक ही इमेज का इस्तेमाल किया जा रहा है, तो टेक्स्ट प्रॉम्प्ट को इमेज के आगे रखें.
फ़ाइल एपीआई का इस्तेमाल करके इमेज फ़ाइल अपलोड करना
किसी भी साइज़ की इमेज अपलोड करने के लिए, File API का इस्तेमाल करें. (हमेशा File API का इस्तेमाल तब करें, जब उन फ़ाइलों और सिस्टम निर्देशों का संयोजन है जिन्हें आप भेजना चाहते हैं साइज़ 20 एमबी से ज़्यादा हो.)
इसे डाउनलोड करके शुरू करें जेटपैक का स्केच.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
इसका उपयोग करके चित्र अपलोड करें
media.upload
और यूआरआई को प्रिंट करें, जिसका इस्तेमाल Gemini API कॉल में रेफ़रंस के तौर पर किया जाएगा.
# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
display_name="Jetpack drawing")
print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
इमेज फ़ाइल के अपलोड की पुष्टि करें और मेटाडेटा पाएं
अपलोड की गई फ़ाइल के सेव होने की पुष्टि करने के बाद, एपीआई की मदद से
files.get
पर कॉल करके मेटाडेटा जोड़ें
मदद ली जा सकती है. सिर्फ़ name
(और एक्सटेंशन के हिसाब से, uri
) यूनीक होते हैं. इस्तेमाल की जाने वाली चीज़ें
display_name
का इस्तेमाल, फ़ाइलों की पहचान करने के लिए किया जाता है. ऐसा तब किया जाता है, जब फ़ाइलों की पहचान मैन्युअल तरीके से की जा रही हो.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
आपके इस्तेमाल के उदाहरण के आधार पर, यूआरआई को स्ट्रक्चर में सेव किया जा सकता है, जैसे कि
dict
या डेटाबेस.
अपलोड की गई इमेज और टेक्स्ट के साथ प्रॉम्प्ट दिखाएं
इस फ़ाइल को अपलोड करने के बाद, इससे जुड़ा GenerateContent
अनुरोध किया जा सकता है
File API यूआरआई. जनरेटिव मॉडल चुनें और इसे टेक्स्ट प्रॉम्प्ट उपलब्ध कराएं
और अपलोड की गई इमेज.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])
Markdown(">" + response.text)
स्थानीय तौर पर सेव की गई एक या एक से ज़्यादा इमेज फ़ाइलें अपलोड करें
इसके अलावा, आपके पास अपनी फ़ाइलें अपलोड करने का भी विकल्प है. आप हमारी साइट पर मौजूद की ड्रॉइंग पिरान्हा से प्रभावित पानी और एक बिल्ली के साथ फ़ायर फ़ाइटर.
जब भेजी जाने वाली फ़ाइलों और सिस्टम निर्देशों का कॉम्बिनेशन फ़ाइल का साइज़ 20 एमबी से ज़्यादा है, तो इन फ़ाइलों को अपलोड करने के लिए File API का इस्तेमाल करें, जैसे कि पहले दिखाया जा चुका है. छोटी फ़ाइलों को Gemini API:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
ध्यान दें कि इन इनलाइन डेटा कॉल में कई उपलब्ध सुविधाएं शामिल नहीं हैं File API का इस्तेमाल करके, जैसे कि फ़ाइल का मेटाडेटा पाना, लिस्टिंग में या फ़ाइलें मिटाना.
कई इमेज वाला प्रॉम्प्ट
Gemini API को इमेज और टेक्स्ट का कोई भी कॉम्बिनेशन उपलब्ध कराया जा सकता है मॉडल के कॉन्टेक्स्ट विंडो में फ़िट हो जाता है. इस उदाहरण में एक छोटा टेक्स्ट दिया गया है प्रॉम्प्ट और पहले अपलोड की गई तीन इमेज.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
Markdown(">" + response.text)
किसी ऑब्जेक्ट के लिए बाउंडिंग बॉक्स पाएं
ऑब्जेक्ट के बाउंडिंग बॉक्स के निर्देशांकों के बारे में मॉडल से पूछा जा सकता है
किया जा सकता है. ऑब्जेक्ट की पहचान करने के लिए, Gemini मॉडल को ट्रेनिंग दी गई है
ये निर्देशांक [0,1]
रेंज में सापेक्ष चौड़ाई या ऊंचाई के रूप में हैं, जिसे
1000 को पूर्णांक में बदल दिया जाता है. प्रभावी रूप से, दिए गए निर्देशांक
मूल इमेज का 1000x1000 वर्शन है और इसे वापस
डाइमेंशन में बदलाव कर सकते हैं.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])
print(response.text)
इन निर्देशांकों को मूल इमेज के डाइमेंशन में बदलने के लिए:
- हर आउटपुट कोऑर्डिनेट को 1,000 से भाग दें.
- x-निर्देशांक को मूल इमेज की चौड़ाई से गुणा करें.
- y-निर्देशांकों को मूल इमेज की ऊंचाई से गुणा करें.
वीडियो के साथ प्रॉम्प्ट देना
इस ट्यूटोरियल में, फ़ाइल एपीआई का इस्तेमाल करके एक वीडियो अपलोड किया जाएगा और कॉन्टेंट भी बनाया जा सकता है.
तकनीकी विवरण (वीडियो)
Gemini 1.5 Pro और Flash की मदद से, करीब एक घंटे तक का वीडियो डेटा ऐक्सेस किया जा सकता है.
वीडियो, इन MIME टाइप में वीडियो फ़ॉर्मैट में होना चाहिए:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
File API सेवा, एक फ़्रेम प्रति सेकंड के हिसाब से वीडियो से इमेज फ़्रेम निकालती है (एफ़पीएस) और 1 केबीपीएस पर ऑडियो, सिंगल चैनल, हर सेकंड टाइमस्टैंप जोड़ते हैं. अनुमान को बेहतर बनाने के लिए, आने वाले समय में इन दरों में बदलाव हो सकता है.
अलग-अलग फ़्रेम के लिए 258 टोकन और ऑडियो के लिए 32 टोकन प्रति सेकंड होते हैं. के साथ मेटाडेटा, वीडियो का हर सेकंड ~300 टोकन का हो जाता है. इसका मतलब है कि 10 लाख टोकन विंडो एक घंटे से भी कम के वीडियो में फ़िट हो सकती है.
टाइमस्टैंप वाली जगहों के बारे में सवाल पूछने के लिए, MM:SS
फ़ॉर्मैट का इस्तेमाल करें. यहां
पहले दो अंक मिनट दिखाते हैं और आखिरी दो अंक मिनट दिखाते हैं
सेकंड.
सर्वोत्तम परिणामों के लिएः
- हर प्रॉम्प्ट के लिए एक वीडियो इस्तेमाल करें.
- अगर किसी एक वीडियो का इस्तेमाल किया जा रहा है, तो वीडियो के बाद टेक्स्ट प्रॉम्प्ट डालें.
File API का इस्तेमाल करके वीडियो फ़ाइल अपलोड करना
फ़ाइल एपीआई, वीडियो फ़ाइल फ़ॉर्मैट को सीधे स्वीकार करता है. इस उदाहरण में, नासा की छोटी फ़िल्म "बृहस्पति का ग्रेट रेड स्पॉट सिकुड़ जाता है और बढ़ जाता है". क्रेडिट: गॉडर्ड स्पेस फ़्लाइट सेंटर (जीएसएफ़सी)/डेविड लैड (2018).
"बृहस्पति का ग्रेट रेड स्पॉट सिकुड़ जाता है और बढ़ जाता है" सार्वजनिक डोमेन में है और ऐसा करता है नहीं दिखाने चाहिए. (NASA की इमेज और मीडिया के इस्तेमाल से जुड़े दिशा-निर्देश.)
छोटा वीडियो वापस पाने से शुरू करें:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
File API का इस्तेमाल करके, वीडियो अपलोड करें और यूआरआई प्रिंट करें.
# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"
print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")
फ़ाइल अपलोड होने की पुष्टि करना और उसका स्टेटस देखना
इस पर कॉल करके पुष्टि करें कि एपीआई को फ़ाइलें मिल गई हैं
files.get
तरीका.
import time
# Check whether the file is ready to be used.
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)
वीडियो और टेक्स्ट के साथ प्रॉम्प्ट दें
अपलोड किए गए वीडियो के ACTIVE
की स्थिति में आने के बाद, आपके पास GenerateContent
बनाने का विकल्प होता है
ऐसे अनुरोध जो उस वीडियो के लिए फ़ाइल एपीआई यूआरआई को तय करते हैं. जनरेटिव एआई चुनें
मॉडल और उसे अपलोड किए गए वीडियो और टेक्स्ट प्रॉम्प्ट के साथ उपलब्ध कराना होगा.
# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
# Print the response, rendering any Markdown
Markdown(response.text)
वीडियो में टाइमस्टैंप देखना
MM:SS
फ़ॉर्म के टाइमस्टैंप का इस्तेमाल करके, वीडियो के खास पलों के बारे में बताया जा सकता है
वीडियो.
# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
वीडियो में बोले जा रहे शब्दों को टेक्स्ट में बदलें और विज़ुअल जानकारी दें
अगर वीडियो तेज़ी से नहीं चलाया जा रहा है (वीडियो का सिर्फ़ एक फ़्रेम प्रति सेकंड सैंपल किया जाता है), हर शॉट के लिए विज़ुअल ब्यौरे के साथ वीडियो को ट्रांसक्राइब किया जा सकता है.
# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
फ़ाइलों की सूची बनाएं
File API का इस्तेमाल करके अपलोड की गई सभी फ़ाइलों और उनके यूआरआई का इस्तेमाल
files.list_files()
.
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
फ़ाइलें मिटाना
File API का इस्तेमाल करके अपलोड की गई फ़ाइलें, दो दिनों के बाद अपने-आप मिट जाती हैं. आपने लोगों तक पहुंचाया मुफ़्त में
files.delete()
का इस्तेमाल करके, फ़ाइलों को मैन्युअल तरीके से भी मिटाया जा सकता है.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
आगे क्या करना है
इस गाइड में,
generateContent
और
का इस्तेमाल करें. ज़्यादा जानने के लिए,
नीचे दिए गए संसाधन देखें:
- मीडिया फ़ाइलों के साथ प्रॉम्प्ट देना: The Gemini API के साथ टेक्स्ट, इमेज, ऑडियो, और वीडियो डेटा के साथ प्रॉम्प्ट देने की सुविधा भी काम करती है इसे मल्टीमोडल प्रॉम्प्टिंग के नाम से जाना जाता है.
- सिस्टम के लिए निर्देश: सिस्टम निर्देशों की मदद से मॉडल का व्यवहार बदला जा सकता है. और उसके इस्तेमाल के उदाहरण.
- सुरक्षा के लिए दिशा-निर्देश: कभी-कभी जनरेटिव एआई मॉडल ऐसे आउटपुट देते हैं जो उम्मीद के मुताबिक नहीं होते. जैसे, गलत आउटपुट, पक्षपातपूर्ण या आपत्तिजनक है. पोस्ट-प्रोसेसिंग और मानवीय मूल्यांकन, इन कामों के लिए ज़रूरी हैं इस तरह के आउटपुट से होने वाले नुकसान के जोखिम को कम करेगा.