نحوه ساخت با Gemini 2.5 Flash Image (nano banana)
اگر در مورد Gemini 2.5 Flash Image جدید شنیده اید (که اغلب با نام رمز عجیب و غریب "nano banana" مطرح می شود)، احتمالاً از خود می پرسید که چگونه می توان به سرعت با آن ساخت. این راهنما شما را از طریق تنظیمات، درخواستها و الگوهای تولید راهنمایی میکند تا بتوانید ویژگیهای تصویر+متن را به سرعت و به طور قابل اعتماد ارائه دهید.
آنچه به دست خواهید آورد: یک گردش کار عملی و سرتاسری برای استفاده از مدل Gemini 2.5 Flash Image، از جمله دستورالعملهای درخواست، نکات ارزیابی و مقاومسازی تولید.
Gemini 2.5 Flash Image چیست؟
Gemini 2.5 Flash Image یک مدل چندوجهی سبک و سریع است که برای درک تصویر و وظایف تولید با تأخیر کم تنظیم شده است. در عمل، برای موارد زیر ایده آل است:
- درک تصویر: طبقه بندی، عنوان گذاری، OCR-lite، استخراج طرح
- پرسش و پاسخ تصویری: پاسخ به سوالات مبتنی بر یک تصویر
- تولید یا ویرایش تصویر سبک: تغییرات ساده، حاشیه نویسی، پوشش ها
- تجربه های سازگار با لبه: پیش نمایش های سریع، استنتاج کم هزینه، UX تعاملی
اصطلاح "Flash" به طور کلی به معنای سرعت و هزینه بهینه شده است. نام مستعار "nano banana" معمولاً به یک تگ داخلی یا نوع ایست بازرسی مورد استفاده در مثال ها یا یادداشت های انتشار اشاره دارد.
پیش نیازها
- یک حساب Google AI Studio یا Vertex AI با دسترسی به Gemini 2.5 Flash Image
- کلید API یا اعتبارنامه حساب سرویس
- زمان اجرا: Node.js، Python، یا پلتفرم بدون سرور (Cloud Functions/Run)
- برای تولید: ثبت، محدود کردن نرخ، نسخه بندی درخواست و مهار ارزیابی
شروع سریع: درک تصویر
در زیر یک مثال پایتون حداقلی برای پرسش و پاسخ تصویر و عنوان گذاری آمده است. مکانهای نگهدارنده را با اعتبارنامههای خود جایگزین کنید.
import base64
import requests
API_KEY = "{YOUR_API_KEY}"
MODEL = "gemini-2.5-flash-image" # or the provider’s exact model name
ENDPOINT = "{MODEL}"
# Load an image into base64
with open("./sample.jpg", "rb") as f:
image_b64 = base64.b64encode(f.read).decode("utf-8")
payload = {
"contents": [{
"role": "user",
"parts": [
{"text": "Describe this image in one sentence, then list three key details."},
{
"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"])
دستورالعمل درخواست برای پاسخ های قوی
- هدف سیستم: "شما یک تحلیلگر بصری دقیق هستید. اگر مطمئن نیستید، بگویید مطمئن نیستید."
- درخواست کاربر: "مختصر پاسخ دهید. به نشانه های قابل مشاهده استناد کنید. اگر متنی در تصویر وجود دارد، دقیقاً رونویسی کنید."
- درخواست ساختار: "JSON را با
caption، objects[]، text_blocks[] برگردانید."
{
"caption": "<one-sentence summary>",
"objects": [
{"label": "banana", "count": 2},
{"label": "bowl", "count": 1}
],
"text_blocks": [
{"text": "NANO BANANA", "bbox": [x,y,w,h]}
]
}
شروع سریع: تولید/ویرایش سبک
برای پوشش ها یا تغییرات ساده، بسیاری از ارائه دهندگان یک نقطه پایانی تصویر به تصویر را در معرض نمایش قرار می دهند. شبه کد:
payload = {
"contents": [{
"role": "user",
"parts": [
{"text": "Add a subtle label 'Sample' in the top-right corner."},
{"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 کلمه
- پرسش و پاسخ تصویری: تطابق دقیق در حقایق کلیدی؛ اجازه دادن به بازگشت به "مطمئن نیستم"
- استخراج طرح: دقت/فراخوانی در موجودیت هایی مانند قیمت، تاریخ، SKU
2) ساختار درخواست ها
- دستورالعمل اول، سپس تصویر
- فرمت خروجی: طرح JSON با انواع فیلد
- محافظ ها: "اگر متن قابل مشاهده نیست،
null را برگردانید"
3) دسته بندی و ذخیره سازی
- در صورت امکان درخواست های تصویر را دسته بندی کنید
- نتایج پایدار را ذخیره کنید (به عنوان مثال، عکس های محصول غیر قابل تغییر)
- از ETag ها یا هش های محتوا برای حذف تکراری استفاده کنید
4) به طور سیستماتیک ارزیابی کنید
- یک مجموعه طلایی کوچک بسازید: 100-500 تصویر با برچسب های حقیقت زمینی
- پیگیری معیارها: دقت، میزان توهم، تأخیر پاسخ
- یک مجموعه رگرسیون برای هر نسخه درخواست ایجاد کنید
5) کنترل های تولید
maxOutputTokens را برای خروجی های قطعی محکم تنظیم کنید
- از
temperature پایین تر (0.1-0.4) برای وظایف واقعی استفاده کنید
- محدود کردن نرخ توسط کاربر و سازمان؛ اضافه کردن پس زدن نمایی
- ورودی/خروجی ها را ثبت کنید (تصویر هش، نه خام برای حفظ حریم خصوصی)
موارد استفاده و الگوهای رایج
جستجوی محصول بصری
- تصاویر کاتالوگ را وارد کنید،
objects، dominant_color، style را استخراج کنید
- در زمان پرس و جو، جاسازی ها یا ویژگی ها را مقایسه کنید
- الگوی درخواست: "5 ویژگی برتر را که به یک خریدار کمک می کند تصمیم بگیرد، برگردانید."
OCR Lite سند
- از مدل بخواهید بلوک های متنی کوتاه و واضح را رونویسی کند
- اضافه کردن محدودیت ها: "مورد و علامت گذاری دقیق را برگردانید؛ اگر ناخوانا است،
confidence: low را تنظیم کنید."
UX Copilot برای اسکرین شات ها
- خروجی: مراحل به عنوان نکات گلوله ای: "چگونه متن را در مرکز قرار دهم؟" → مدل مسیر منو را برمی گرداند
نکات مربوط به هزینه و تأخیر
- Flash را برای پیش نمایش ها و UX تکراری ترجیح دهید؛ برای بررسی های نهایی به انواع بزرگتر Gemini ارتقا دهید
- برای کاهش پهنای باند بدون از دست دادن جزئیات کلیدی، به حداکثر لبه (به عنوان مثال، 1024 پیکسل) کاهش دهید
- هنگام زنجیره ای کردن وظایف، از جاسازی ها یا خلاصه های میانی استفاده مجدد کنید
امنیت، حریم خصوصی و ایمنی
- 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"{MODEL}/caption"
async def caption(file: UploadFile = File:
b = await file.read
b64 = base64.b64encode(b).decode("utf-8")
payload = {
"contents": [{
"role": "user",
"parts": [
{"text": "Return concise JSON with fields: 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، یا درخواست بلوک های JSON حصارکشی شده ```json
- جزئیات توهمی: کاهش دما؛ دستور دهید "اگر مطمئن نیستید،
unsure پاسخ دهید"
- تایم اوت ها: اگر در دسترس است، پاسخ ها را پخش کنید؛ اندازه تصویر را کاهش دهید؛ درخواست های کوتاه تری تنظیم کنید
به هر حال: سرعت بخشیدن به نمونه سازی با Sider.AI
اگر در حال ساخت انواع درخواست زیادی هستید یا به تست های A/B سریع برای Gemini 2.5 Flash Image نیاز دارید، Sider.AI می تواند به شما کمک کند سریعتر تکرار کنید. شما می توانید نسخه های درخواست را سازماندهی کنید، ارزیابی های جانبی را روی مجموعه تصاویر خود اجرا کنید و معیارهای تأخیر و دقت را بدون سیم کشی کامل backend ثبت کنید—هنگامی که در حال تنظیم درخواست ها برای عنوان گذاری، OCR یا پرسش و پاسخ بصری هستید، مفید است.
نکات کلیدی
- Gemini 2.5 Flash Image برای وظایف چندوجهی سریع و کم هزینه عالی است
- از درخواست های دقیق، طرح های JSON و دماهای پایین برای قابلیت اطمینان استفاده کنید
- یک مجموعه ارزیابی قابل تکرار بسازید و تغییرات دروازه را با تست های رگرسیون انجام دهید
- تأخیر را با کاهش مقیاس، ذخیره سازی و دسته بندی بهینه کنید
- Sider.AI را برای تکرار و آزمایش سریع درخواست در نظر بگیرید
سوالات متداول
Q1: Gemini 2.5 Flash Image (nano banana) چیست؟
این یک مدل چندوجهی سریع و سبک است که برای درک تصویر و ویرایش های ساده تصویر بهینه شده است. نام مستعار "nano banana" اغلب به یک تگ داخلی یا نوع مثال اشاره دارد.
Q2: چگونه از Gemini 2.5 Flash Image برای عنوان گذاری تصویر استفاده کنم؟
یک دستورالعمل متنی به همراه تصویر را به صورت base64 به نقطه پایانی generateContent مدل ارسال کنید. JSON ساختاریافته (عنوان، اشیاء، بلوک های متنی) را درخواست کنید و دما را برای ثبات پایین نگه دارید.
Q3: آیا Gemini 2.5 Flash Image می تواند OCR یا متن را در تصاویر مدیریت کند؟
بله، برای متن کوتاه و واضح. الزامات رونویسی دقیق را مشخص کنید و یک فیلد اطمینان را وارد کنید. برای OCR سنگین، یک ابزار OCR اختصاصی را در کنار مدل در نظر بگیرید.
Q4: چگونه تأخیر و هزینه را با Gemini 2.5 Flash Image به حداقل برسانم؟
تصاویر را به یک لبه حداکثر معقول کاهش دهید، درخواست ها را دسته بندی کنید و نتایج پایدار را ذخیره کنید. از دماهای پایین تر استفاده کنید و maxOutputTokens را برای کنترل اندازه خروجی محدود کنید.
Q5: چگونه Sider.AI می تواند در هنگام ساخت با Gemini 2.5 Flash Image کمک کند؟
Sider.AI نسخه بندی و ارزیابی درخواست را ساده می کند تا بتوانید درخواست های تست A/B را روی مجموعه داده تصویر خود انجام دهید، معیارها را ردیابی کنید و پیکربندی های قابل اعتماد را سریعتر به تولید ارتقا دهید.