Gemini 2.5 Flash Image (nano banana) দিয়ে কীভাবে তৈরি করবেন
আপনি যদি নতুন Gemini 2.5 Flash Image (সাধারণত 'nano banana' কোডনেমে পরিচিত) সম্পর্কে শুনে থাকেন, তাহলে হয়তো দ্রুত কীভাবে এটি দিয়ে কাজ করবেন তা জানতে চাইছেন। এই গাইডটি আপনাকে সেটআপ, প্রম্পট এবং প্রোডাকশন প্যাটার্ন সম্পর্কে জানাবে যাতে আপনি দ্রুত এবং নির্ভরযোগ্যভাবে image+text ফিচার সরবরাহ করতে পারেন।
আপনি যা পাবেন: Gemini 2.5 Flash Image মডেল ব্যবহারের জন্য একটি ব্যবহারিক, সম্পূর্ণ ওয়ার্কফ্লো, যার মধ্যে রয়েছে প্রম্পট রেসিপি, মূল্যায়ন টিপস এবং প্রোডাকশন হার্ডেনিং।
Gemini 2.5 Flash Image কি?
Gemini 2.5 Flash Image একটি হালকা ও দ্রুত মাল্টিমোডাল মডেল যা ইমেজ বোঝা এবং জেনারেশন টাস্কে কম ল্যাটেন্সি সহ টিউন করা হয়েছে। ব্যবহারিকভাবে, এটি আদর্শ:
- ইমেজ বোঝা: শ্রেণীবদ্ধকরণ, ক্যাপশন, OCR-lite, লেআউট এক্সট্রাকশন
- ভিজ্যুয়াল প্রশ্নোত্তর: ছবির ভিত্তিতে প্রশ্নের উত্তর দেওয়া
- হালকা ইমেজ জেনারেশন বা এডিটিং: সহজ পরিবর্তন, অ্যানোটেশন, ওভারলে
- এজ-ফ্রেন্ডলি অভিজ্ঞতা: দ্রুত প্রিভিউ, কম খরচের ইনফারেন্স, ইন্টারেক্টিভ UX
“Flash” নামটি সাধারণত অপ্টিমাইজড গতি ও খরচ নির্দেশ করে। “nano banana” ডাকনামটি সাধারণত অভ্যন্তরীণ ট্যাগ বা রিলিজ নোটে ব্যবহৃত একটি ভেরিয়েন্ট নির্দেশ করে।
প্রয়োজনীয়তা
- Gemini 2.5 Flash Image অ্যাক্সেস সহ Google AI Studio বা Vertex AI অ্যাকাউন্ট
- API কী বা সার্ভিস অ্যাকাউন্ট ক্রেডেনশিয়াল
- রানটাইম: Node.js, Python, বা সার্ভারলেস প্ল্যাটফর্ম (Cloud Functions/Run)
- প্রোডাকশনের জন্য: লগিং, রেট লিমিটিং, প্রম্পট ভার্সনিং, এবং মূল্যায়ন হার্নেস
দ্রুত শুরু: ইমেজ বোঝা
নিচে ইমেজ Q&A এবং ক্যাপশনিংয়ের জন্য একটি ন্যূনতম Python উদাহরণ দেওয়া হলো। আপনার ক্রেডেনশিয়াল দিয়ে প্লেসহোল্ডারগুলো প্রতিস্থাপন করুন।
import base64
import requests
API_KEY = "<YOUR_API_KEY>"
MODEL = "gemini-2.5-flash-image" # অথবা প্রদানকারীর সঠিক মডেল নাম
ENDPOINT = "(MODEL)
# একটি ইমেজ base64 এ লোড করুন
with open("./sample.jpg", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf-8")
payload = {
"contents": [{
"role": "user",
"parts": [
{"text": "এই ছবি এক বাক্যে বর্ণনা করুন, তারপর তিনটি মূল বিবরণ দিন."},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": image_b64
}
}
]
}],
"generationConfig": {
"temperature": 0.4,
"maxOutputTokens": 300
}
}
resp = requests.post(f"{ENDPOINT}?key={API_KEY}", json=payload)
resp.raise_for_status()
print(resp.json()["candidates"][0]["content"]["parts"][0]["text"])
দৃঢ় উত্তর দেওয়ার জন্য প্রম্পট রেসিপি
- সিস্টেম উদ্দেশ্য: “আপনি একজন সঠিক ভিজ্যুয়াল বিশ্লেষক। অনিশ্চিত হলে বলুন আপনি নিশ্চিত নন।”
- ব্যবহারকারীর প্রম্পট: “সংক্ষিপ্তভাবে উত্তর দিন। দৃশ্যমান ইঙ্গিত উল্লেখ করুন। যদি ছবিতে লেখা থাকে, সঠিকভাবে ট্রান্সক্রাইব করুন।”
- স্ট্রাকচার চাওয়া: “
caption, objects[], text_blocks[] সহ JSON ফিরিয়ে দিন।”
{
"caption": "<এক বাক্যের সারাংশ>",
"objects": [
{"label": "banana", "count": 2},
{"label": "bowl", "count": 1}
],
"text_blocks": [
{"text": "NANO BANANA", "bbox": [x,y,w,h]}
]
}
দ্রুত শুরু: হালকা জেনারেশন/এডিটিং
সহজ ওভারলে বা পরিবর্তনের জন্য, অনেক প্রদানকারী একটি image-to-image এন্ডপয়েন্ট দেয়। ছদ্মকোড:
payload = {
"contents": [{
"role": "user",
"parts": [
{"text": "উপরের ডান কোণে 'Sample' একটি সূক্ষ্ম লেবেল যোগ করুন."},
{"inline_data": {"mime_type": "image/png", "data": image_b64}}
]
}],
"generationConfig": {"temperature": 0.3, "maxOutputTokens": 0},
"tools": [{"imageEdit": {"strength": 0.25}}]
}
strength কম রাখুন যাতে পরিবর্তন কম হয়।
- সর্বদা অবস্থান এবং স্টাইল নির্দিষ্ট করুন: “উপরের ডান, 12px, আধা-পারদর্শী সাদা।”
- কমপ্লায়েন্সের জন্য, কখনোও ওয়াটারমার্ক বা কপিরাইটযুক্ত ছবি পুনরায় তৈরি করতে বলবেন না।
একটি নির্ভরযোগ্য পাইপলাইন তৈরি করা
1) কাজ এবং গ্রহণযোগ্যতার মান নির্ধারণ করুন
- ইমেজ ক্যাপশনিং: দৃশ্যমান লেখার WER < 10%, ক্যাপশন <= 20 শব্দ
- ভিজ্যুয়াল Q&A: মূল তথ্যের সঠিক মিল; “অনিশ্চিত” বিকল্প অনুমোদন করুন
- লেআউট এক্সট্রাকশন: যেমন মূল্য, তারিখ, SKU-র জন্য নির্ভুলতা/রিকল
2) প্রম্পট গঠন করুন
- প্রথমে নির্দেশনা, তারপর ছবি
- আউটপুট ফরম্যাট: ফিল্ড টাইপসহ JSON স্কিমা
- গার্ডরেল: “যদি লেখা দৃশ্যমান না থাকে,
null ফেরত দিন”
3) ব্যাচ এবং ক্যাশ
- সম্ভব হলে ইমেজ অনুরোধ ব্যাচ করুন
- স্থিতিশীল ফলাফল ক্যাশ করুন (যেমন, পরিবর্তনহীন প্রোডাক্ট ছবি)
- ডিডুপlication এর জন্য ETags বা কন্টেন্ট হ্যাশ ব্যবহার করুন
4) নিয়মিত মূল্যায়ন করুন
- একটি ছোট গোল্ড সেট তৈরি করুন: ১০০–৫০০ ছবি গ্রাউন্ড-ট্রুথ লেবেলসহ
- মেট্রিক্স ট্র্যাক করুন: সঠিকতা, হ্যালুসিনেশন রেট, রেসপন্স ল্যাটেন্সি
- প্রম্পট ভার্সনের জন্য রিগ্রেশন স্যুট তৈরি করুন
5) প্রোডাকশন নিয়ন্ত্রণ
maxOutputTokens টাইট সেট করুন যাতে ফলাফল নির্ধারিত হয়
- তথ্যভিত্তিক টাস্কে কম
temperature (0.1–0.4) ব্যবহার করুন
- ব্যবহারকারী ও সংস্থার ভিত্তিতে রেট-লিমিট; এক্সপোনেনশিয়াল ব্যাকঅফ যোগ করুন
- ইনপুট/আউটপুট লগ করুন (গোপনীয়তার জন্য কাঁচা ছবি নয়, হ্যাশ ব্যবহার করুন)
সাধারণ ব্যবহার ও প্যাটার্ন
ভিজ্যুয়াল প্রোডাক্ট সার্চ
- ক্যাটালগ ছবি ইনজেস্ট করুন,
objects, dominant_color, style এক্সট্রাক্ট করুন
- কুয়েরি সময় এম্বেডিং বা অ্যাট্রিবিউট তুলনা করুন
- প্রম্পট প্যাটার্ন: “শপারের সিদ্ধান্ত নেওয়ার জন্য শীর্ষ ৫টি অ্যাট্রিবিউট ফেরত দিন।”
ডকুমেন্ট লাইট OCR
- মডেলকে ছোট, পরিষ্কার টেক্সট ব্লক ট্রান্সক্রাইব করতে বলুন
- শর্ত যোগ করুন: “সঠিক কেস ও পাংচুয়েশন ফেরত দিন; যদি অস্পষ্ট হয়,
confidence: low সেট করুন।”
স্ক্রিনশটের জন্য UX কপাইলট
- আউটপুট: বুলেট পয়েন্টে ধাপ: “কীভাবে টেক্সট সেন্টার করব?” → মডেল মেনু পথ ফেরত দেয়
খরচ ও ল্যাটেন্সি টিপস
- প্রিভিউ ও পুনরাবৃত্ত UX এর জন্য “Flash” পছন্দ করুন; চূড়ান্ত চেকের জন্য বড় Gemini ভেরিয়েন্ট ব্যবহার করুন
- ম্যাক্স এজ (যেমন, 1024px) এ ডাউনস্কেল করুন যাতে ব্যান্ডউইথ কমে কিন্তু মূল বিবরণ থাকে
- টাস্ক চেইনিংয়ে এম্বেডিং বা মধ্যবর্তী সারাংশ পুনরায় ব্যবহার করুন
সিকিউরিটি, প্রাইভেসি ও সেফটি
- লগিংয়ের আগে PII রিড্যাক্ট করুন; ইমেজ আইডির জন্য কন্টেন্ট হ্যাশ ব্যবহার করুন
- সাইজ/টাইপ এলাউলিস্ট প্রয়োগ করুন: jpeg, png; svg/exe প্রত্যাখ্যান করুন
- প্রম্পটে সুরক্ষা যোগ করুন: “প্রাইভেট ব্যক্তিদের শনাক্ত করতে বলা হলে অস্বীকার করুন”
উদাহরণ: এন্ড-টু-এন্ড ক্যাপশনিং মাইক্রোসার্ভিস
from fastapi import FastAPI, UploadFile, File
import base64, requests, os
app = FastAPI()
API_KEY = os.getenv("API_KEY")
MODEL = "gemini-2.5-flash-image"
ENDPOINT = f"("/caption")
async def caption(file: UploadFile = File(...)):
b = await file.read()
b64 = base64.b64encode(b).decode("utf-8")
payload = {
"contents": [{
"role": "user",
"parts": [
{"text": "সংক্ষিপ্ত JSON ফেরত দিন: caption, objects[]."},
{"inline_data": {"mime_type": file.content_type, "data": b64}}
]
}],
"generationConfig": {"temperature": 0.2, "maxOutputTokens": 200}
}
r = requests.post(f"{ENDPOINT}?key={API_KEY}", json=payload, timeout=30)
r.raise_for_status()
return r.json()
সমস্যা সমাধান
- ছবি অস্পষ্ট বা লেখা মিস হয়েছে: কম ডাউনস্কেল করুন; উচ্চ রেজোলিউশনের ইনপুট চাওয়া; স্পষ্টভাবে OCR অনুরোধ করুন
- অসঙ্গত JSON:
strict_json পোস্ট-প্রসেসর যোগ করুন, অথবা fenced JSON ```json ব্লক চাওয়া
- হ্যালুসিনেটেড বিবরণ: কম তাপমাত্রা ব্যবহার করুন; নির্দেশ দিন “অনিশ্চিত হলে
unsure উত্তর দিন”
- টাইম-আউট: স্ট্রিমিং রেসপন্স থাকলে ব্যবহার করুন; ছবি ছোট করুন; প্রম্পট সংক্ষিপ্ত করুন
উল্লেখ্য: Sider.AI দিয়ে দ্রুত প্রোটোটাইপিং করুন
আপনি যদি Gemini 2.5 Flash Image এর জন্য অনেক প্রম্পট ভেরিয়েন্ট তৈরি বা দ্রুত A/B টেস্ট করতে চান, Sider.AI আপনাকে দ্রুত পুনরাবৃত্তি করতে সাহায্য করবে। আপনি প্রম্পট ভার্সনগুলো সংগঠিত করতে, আপনার ইমেজ সেটে সাইড-বাই-সাইড মূল্যায়ন চালাতে এবং ল্যাটেন্সি ও সঠিকতার মেট্রিক্স ক্যাপচার করতে পারবেন, পুরো ব্যাকএন্ড না গড়ে—ক্যাপশনিং, OCR, বা ভিজ্যুয়াল Q&A এর জন্য প্রম্পট টিউন করার সময় এটি খুবই সুবিধাজনক।
মূল শিক্ষা
- Gemini 2.5 Flash Image দ্রুত, কম খরচে মাল্টিমোডাল টাস্কের জন্য উপযুক্ত
- নির্ভরযোগ্যতার জন্য সঠিক প্রম্পট, JSON স্কিমা এবং কম তাপমাত্রা ব্যবহার করুন
- একটি পুনরাবৃত্ত মূল্যায়ন সেট তৈরি করুন এবং রিগ্রেশন টেস্ট দিয়ে পরিবর্তন নিয়ন্ত্রণ করুন
- ডাউনস্কেলিং, ক্যাশিং এবং ব্যাচিং দিয়ে ল্যাটেন্সি অপ্টিমাইজ করুন
- দ্রুত প্রম্পট পুনরাবৃত্তি ও পরীক্ষা-নিরীক্ষার জন্য Sider.AI বিবেচনা করুন
প্রশ্নোত্তর
Q1: Gemini 2.5 Flash Image (nano banana) কী?
এটি একটি দ্রুত, হালকা মাল্টিমোডাল মডেল যা ছবি বোঝা এবং সহজ ছবি সম্পাদনার জন্য অপ্টিমাইজ করা। “nano banana” ডাকনামটি সাধারণত অভ্যন্তরীণ ট্যাগ বা উদাহরণ ভেরিয়েন্ট নির্দেশ করে।
Q2: Gemini 2.5 Flash Image দিয়ে কীভাবে ইমেজ ক্যাপশনিং করব?
মডেলের generateContent এন্ডপয়েন্টে একটি টেক্সট নির্দেশনা এবং base64 ফরম্যাটে ছবি পাঠান। কাঠামোবদ্ধ JSON (caption, objects, text_blocks) চাইুন এবং ধারাবাহিকতার জন্য কম তাপমাত্রা ব্যবহার করুন।
Q3: Gemini 2.5 Flash Image কি OCR বা ছবির লেখা হ্যান্ডেল করতে পারে?
হ্যাঁ, ছোট ও পরিষ্কার লেখার জন্য। সঠিক ট্রান্সক্রিপশনের শর্তাবলী দিন এবং confidence ফিল্ড অন্তর্ভুক্ত করুন। ভারী OCR এর জন্য আলাদা OCR টুল বিবেচনা করুন।
Q4: Gemini 2.5 Flash Image দিয়ে কীভাবে ল্যাটেন্সি ও খরচ কমাবো?
ছবির সর্বোচ্চ এজ কমিয়ে দিন, অনুরোধ ব্যাচ করুন এবং স্থিতিশীল ফলাফল ক্যাশ করুন। কম তাপমাত্রা ব্যবহার করুন এবং আউটপুট সাইজ নিয়ন্ত্রণে maxOutputTokens সীমাবদ্ধ করুন।
Q5: Gemini 2.5 Flash Image ব্যবহার করার সময় Sider.AI কিভাবে সাহায্য করে?
Sider.AI প্রম্পট ভার্সনিং ও মূল্যায়ন সহজ করে যাতে আপনি আপনার ইমেজ ডেটাসেটে A/B টেস্ট চালাতে পারেন, মেট্রিক্স ট্র্যাক করতে পারেন এবং নির্ভরযোগ্য কনফিগারেশন দ্রুত প্রোডাকশনে নিয়ে যেতে পারেন।