মিডিয়া ফাইলের সাথে প্রম্পটিং


ai.google.dev এ দেখুন Google Colab-এ চালান GitHub-এ উৎস দেখুন

Gemini API টেক্সট, ইমেজ, অডিও এবং ভিডিও ডেটা সহ প্রম্পটিং সমর্থন করে, যা মাল্টিমোডাল প্রম্পটিং নামেও পরিচিত, যার অর্থ আপনি আপনার প্রম্পটে এই ধরনের মিডিয়া ফাইলগুলি অন্তর্ভুক্ত করতে পারেন। ছোট ফাইলগুলির জন্য, আপনি প্রম্পট প্রদান করার সময় সরাসরি একটি স্থানীয় ফাইলে জেমিনি মডেল নির্দেশ করতে পারেন। প্রম্পটে অন্তর্ভুক্ত করার আগে ফাইল API এর সাথে বড় ফাইলগুলি আপলোড করুন৷

ফাইল API আপনাকে প্রতি প্রকল্পে 20GB পর্যন্ত ফাইল সংরক্ষণ করতে দেয়, প্রতিটি ফাইলের আকার 2GB-এর বেশি নয়। ফাইলগুলি 48 ঘন্টার জন্য সংরক্ষণ করা হয় এবং সেই সময়ের মধ্যে প্রজন্মের জন্য আপনার API কী দিয়ে অ্যাক্সেস করা যেতে পারে এবং API থেকে ডাউনলোড করা যাবে না। Gemini API পাওয়া যায় এমন সমস্ত অঞ্চলে Files API বিনা মূল্যে পাওয়া যায়।

ফাইল API ইনপুটগুলি পরিচালনা করে যা model.generateContent বা model.streamGenerateContent দিয়ে সামগ্রী তৈরি করতে ব্যবহার করা যেতে পারে। বৈধ ফাইল ফরম্যাট (MIME প্রকার) এবং সমর্থিত মডেলের তথ্যের জন্য, সমর্থিত ফাইল ফরম্যাট দেখুন।

এই গাইডটি দেখায় কিভাবে ফাইল API ব্যবহার করে মিডিয়া ফাইল আপলোড করতে হয় এবং সেগুলিকে Gemini API-তে GenerateContent কলে অন্তর্ভুক্ত করতে হয়। আরও তথ্যের জন্য, কোড নমুনা দেখুন।

আপনি শুরু করার আগে: আপনার প্রকল্প এবং API কী সেট আপ করুন

Gemini API (বা এর ফাইল API) কল করার আগে, আপনাকে আপনার প্রকল্প সেট আপ করতে হবে এবং আপনার API কী কনফিগার করতে হবে।

ইমেজ সঙ্গে প্রম্পটিং

এই টিউটোরিয়ালে, আপনি ফাইল API ব্যবহার করে একটি নমুনা চিত্র আপলোড করুন এবং তারপর সামগ্রী তৈরি করতে এটি ব্যবহার করুন।

একটি ইমেজ ফাইল আপলোড করুন

কীভাবে আপনার নিজের ফাইল আপলোড করবেন তা শিখতে পরিশিষ্ট বিভাগটি পড়ুন।

  1. আপলোড করার জন্য একটি নমুনা ছবি প্রস্তুত করুন:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. media.upload ব্যবহার করে সেই ফাইলটি আপলোড করুন যাতে আপনি অন্য API কলগুলির সাথে এটি অ্যাক্সেস করতে পারেন:

    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 রয়েছে৷ কিভাবে আপলোড করা ফাইলগুলি URI-তে ম্যাপ করা হয় তা ট্র্যাক করতে response ব্যবহার করুন।

আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে, আপনি URI গুলিকে স্ট্রাকচারে সংরক্ষণ করতে পারেন, যেমন একটি dict বা একটি ডাটাবেস।

ইমেজ ফাইলের মেটাডেটা পান

ফাইলটি আপলোড করার পরে, আপনি ফাইলটি সফলভাবে সংরক্ষণ করা API যাচাই করতে পারেন এবং SDK-এর মাধ্যমে files.get এ কল করে এর মেটাডেটা পেতে পারেন।

এই পদ্ধতিটি আপনাকে আপনার API কী-এর সাথে লিঙ্ক করা Google ক্লাউড প্রকল্পের সাথে যুক্ত একটি আপলোড করা ফাইলের মেটাডেটা পেতে দেয়। শুধুমাত্র 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 উল্লেখ করে (হয় ফাইলটি আপলোড করা থেকে বা সরাসরি ফাইলটির মেটাডেটা পাওয়া থেকে)।

এই উদাহরণে, আপনি একটি প্রম্পট তৈরি করুন যা পাঠ্য দিয়ে শুরু হয় এবং আপলোড করা ফাইলের জন্য 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 ঘন্টা পরে স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। এছাড়াও আপনি SDK এর মাধ্যমে files.delete ব্যবহার করে ম্যানুয়ালি মুছে ফেলতে পারেন।

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

ভিডিও সহ প্রম্পটিং

এই টিউটোরিয়ালে, আপনি ফাইল API ব্যবহার করে একটি নমুনা ভিডিও আপলোড করুন এবং তারপর সামগ্রী তৈরি করতে এটি ব্যবহার করুন।

একটি ভিডিও ফাইল আপলোড করুন

Gemini API সরাসরি ভিডিও ফাইল ফরম্যাট গ্রহণ করে। এই উদাহরণটি শর্ট ফিল্ম "বিগ বক বানি" ব্যবহার করে।

"বিগ বক বানি" হল (গ) কপিরাইট 2008, ব্লেন্ডার ফাউন্ডেশন / www.bigbuckbunny.org এবং ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 3.0 লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত৷

কীভাবে আপনার নিজের ফাইল আপলোড করবেন তা শিখতে পরিশিষ্ট বিভাগটি পড়ুন।

  1. আপলোডের জন্য নমুনা ভিডিও ফাইল প্রস্তুত করুন:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. media.upload ব্যবহার করে সেই ফাইলটি আপলোড করুন যাতে আপনি অন্য API কলগুলির সাথে এটি অ্যাক্সেস করতে পারেন:

    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 পদ্ধতিতে কল করে API সফলভাবে ভিডিও ফাইল আপলোড করেছে তা যাচাই করুন।

ভিডিও ফাইলগুলিতে ফাইল 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 পদ্ধতিতে কল করে যেকোনো সময় আপলোড করা ভিডিও ফাইলের মেটাডেটা পেতে পারেন।

এই পদ্ধতিটি আপনাকে আপনার API কী-এর সাথে লিঙ্ক করা Google ক্লাউড প্রকল্পের সাথে যুক্ত একটি আপলোড করা ফাইলের মেটাডেটা পেতে দেয়। শুধুমাত্র 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 ঘন্টা পরে স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। এছাড়াও আপনি SDK এর মাধ্যমে files.delete ব্যবহার করে ম্যানুয়ালি মুছে ফেলতে পারেন।

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

সমর্থিত ফাইল ফরম্যাট

জেমিনি মডেল একাধিক ফাইল ফরম্যাটের সাথে প্রম্পটিং সমর্থন করে। এই বিভাগটি প্রম্পট করার জন্য সাধারণ মিডিয়া ফর্ম্যাটগুলি ব্যবহার করার ক্ষেত্রে বিবেচ্য বিষয়গুলি ব্যাখ্যা করে, বিশেষ করে ছবি, অডিও, ভিডিও এবং প্লেইন টেক্সট ফাইল৷ আপনি মিডিয়া ফাইলগুলিকে শুধুমাত্র নির্দিষ্ট মডেল সংস্করণের সাথে প্রম্পট করার জন্য ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত টেবিলে দেখানো হয়েছে।

মডেল ছবি শ্রুতি ভিডিও সরল পাঠ্য
Gemini 1.5 Pro (রিলিজ 008 এবং পরবর্তী) ✔ (সর্বোচ্চ 3600 ইমেজ ফাইল)

ইমেজ ফরম্যাট

আপনি Gemini 1.5 মডেলের সাথে প্রম্পট করার জন্য ইমেজ ডেটা ব্যবহার করতে পারেন। আপনি যখন প্রম্পট করার জন্য ছবিগুলি ব্যবহার করেন, তখন সেগুলি নিম্নলিখিত সীমাবদ্ধতা এবং প্রয়োজনীয়তার সাপেক্ষে থাকে:

  • চিত্রগুলি অবশ্যই নিম্নলিখিত চিত্র ডেটা MIME প্রকারগুলির মধ্যে একটিতে থাকতে হবে:
    • PNG - ছবি/পিএনজি
    • JPEG - ছবি/jpeg
    • WEBP - ছবি/ওয়েবপি
    • HEIC - চিত্র/heic
    • HEIF - image/heif
  • জেমিনি 1.5 মডেলের জন্য সর্বাধিক 3600টি ছবি।
  • একটি ছবিতে পিক্সেল সংখ্যার কোন নির্দিষ্ট সীমা নেই; যাইহোক, বৃহত্তর চিত্রগুলিকে তাদের আসল আকৃতির অনুপাত সংরক্ষণ করার সময় সর্বাধিক 3072 x 3072 রেজোলিউশনে ফিট করার জন্য ছোট করা হয়।

অডিও ফরম্যাট

আপনি Gemini 1.5 মডেলের সাথে প্রম্পট করার জন্য অডিও ডেটা ব্যবহার করতে পারেন। আপনি যখন প্রম্পট করার জন্য অডিও ব্যবহার করেন, তখন সেগুলি নিম্নলিখিত সীমাবদ্ধতা এবং প্রয়োজনীয়তার সাপেক্ষে থাকে:

  • অডিও ডেটা নিম্নলিখিত সাধারণ অডিও বিন্যাস MIME প্রকারে সমর্থিত:
    • WAV - অডিও/wav
    • MP3 - অডিও/mp3
    • AIFF - অডিও/এআইএফএফ
    • AAC - অডিও/aac
    • OGG Vorbis - অডিও/ogg
    • FLAC - অডিও/flac
  • একক প্রম্পটে অডিও ডেটার সর্বাধিক সমর্থিত দৈর্ঘ্য হল 9.5 ঘন্টা।
  • অডিও ফাইলগুলিকে 16 কেবিপিএস ডেটা রেজোলিউশনে পুনরায় স্যাম্পল করা হয় এবং অডিওর একাধিক চ্যানেল একটি একক চ্যানেলে একত্রিত হয়।
  • একটি একক প্রম্পটে অডিও ফাইলের সংখ্যার কোন নির্দিষ্ট সীমা নেই; যাইহোক, একটি একক প্রম্পটে সমস্ত অডিও ফাইলের মোট সম্মিলিত দৈর্ঘ্য 9.5 ঘন্টার বেশি হতে পারে না।

ভিডিও ফরম্যাট

আপনি Gemini 1.5 মডেলের সাথে প্রম্পট করার জন্য ভিডিও ডেটা ব্যবহার করতে পারেন।

  • ভিডিও ডেটা নিম্নলিখিত সাধারণ ভিডিও বিন্যাস MIME প্রকারে সমর্থিত:

    • ভিডিও/mp4
    • ভিডিও/এমপিইজি
    • ভিডিও/মুভ
    • ভিডিও/এভি
    • ভিডিও/x-flv
    • ভিডিও/এমপিজি
    • ভিডিও/ওয়েবএম
    • ভিডিও/ডাব্লুএমভি
    • video/3gpp
  • ফাইল এপিআই পরিষেবা 1 ফ্রেম প্রতি সেকেন্ডে (এফপিএস) ভিডিওগুলিকে চিত্রগুলিতে নমুনা করে এবং সেরা অনুমান গুণমান প্রদানের জন্য পরিবর্তন করা হতে পারে৷ রেজোলিউশন এবং গুণমান নির্বিশেষে পৃথক ছবি 258 টোকেন নেয়।

প্লেইন টেক্সট ফরম্যাট

ফাইল API নিম্নলিখিত MIME প্রকারের সাথে প্লেইন টেক্সট ফাইল আপলোড করা সমর্থন করে:

  • টেক্সট/প্লেইন
  • টেক্সট/এইচটিএমএল
  • টেক্সট/সিএসএস
  • পাঠ্য/জাভাস্ক্রিপ্ট
  • অ্যাপ্লিকেশন/এক্স-জাভাস্ক্রিপ্ট
  • টেক্সট/এক্স-টাইপস্ক্রিপ্ট
  • অ্যাপ্লিকেশন/এক্স-টাইপস্ক্রিপ্ট
  • পাঠ্য/সিএসভি
  • পাঠ্য/মার্কডাউন
  • টেক্সট/এক্স-পাইথন
  • অ্যাপ্লিকেশন/এক্স-পাইথন-কোড
  • অ্যাপ্লিকেশন/জেসন
  • টেক্সট/এক্সএমএল
  • অ্যাপ্লিকেশন/আরটিএফ
  • টেক্সট/আরটিএফ

একটি MIME প্রকারের প্লেইন টেক্সট ফাইলগুলির জন্য যেগুলি তালিকায় নেই, আপনি উপরের MIME প্রকারগুলির একটি ম্যানুয়ালি নির্দিষ্ট করার চেষ্টা করতে পারেন৷

পরিশিষ্ট: Colab-এ ফাইল আপলোড করা হচ্ছে

এই নোটবুকটি ইন্টারনেট থেকে ডাউনলোড করা ফাইলগুলির সাথে ফাইল API ব্যবহার করে৷ আপনি যদি এটি Colab-এ চালান এবং আপনার নিজের ফাইল ব্যবহার করতে চান, তাহলে আপনাকে প্রথমে সেগুলি Colab ইনস্ট্যান্সে আপলোড করতে হবে।

প্রথমে, বাম সাইডবারে ফাইলে ক্লিক করুন, তারপর আপলোড বোতামে ক্লিক করুন:

এর পরে, আপনি সেই ফাইলটি ফাইল 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}")