Gemini API از تولید تصویر با استفاده از Gemini 2.0 Flash Experimental و با استفاده از Imagen 3 پشتیبانی می کند. این راهنما به شما کمک می کند هر دو مدل را شروع کنید.
با استفاده از Gemini تصاویر تولید کنید
Gemini 2.0 Flash Experimental از قابلیت خروجی متن و تصاویر درون خطی پشتیبانی می کند. این به شما امکان می دهد از Gemini برای ویرایش مکالمه تصاویر یا تولید خروجی با متن در هم تنیده استفاده کنید (به عنوان مثال، ایجاد یک پست وبلاگ با متن و تصاویر در یک نوبت). همه تصاویر تولید شده دارای واترمارک SynthID هستند و تصاویر در استودیوی هوش مصنوعی گوگل شامل یک واترمارک قابل مشاهده نیز هستند.
مثال زیر نحوه استفاده از Gemini 2.0 برای تولید خروجی متن و تصویر را نشان می دهد:
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import base64
client = genai.Client()
contents = ('Hi, can you create a 3d rendered image of a pig '
'with wings and a top hat flying over a happy '
'futuristic scifi city with lots of greenery?')
response = client.models.generate_content(
model="models/gemini-2.0-flash-exp",
contents=contents,
config=types.GenerateContentConfig(response_modalities=['Text', 'Image'])
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO(base64.b64decode(part.inline_data.data)))
image.save('gemini-native-image.png')
image.show()
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
async function generateImage() {
const contents = "Hi, can you create a 3d rendered image of a pig " +
"with wings and a top hat flying over a happy " +
"futuristic scifi city with lots of greenery?";
// Set responseModalities to include "Image" so the model can generate
const model = genAI.getGenerativeModel({
model: "gemini-2.0-flash-exp",
generationConfig: {
responseModalities: ['Text', 'Image']
},
});
try {
const response = await model.generateContent(contents);
for (const part of response.response.candidates[0].content.parts) {
// Based on the part type, either show the text or save the image
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, 'base64');
fs.writeFileSync('gemini-native-image.png', buffer);
console.log('Image saved as gemini-native-image.png');
}
}
} catch (error) {
console.error("Error generating content:", error);
}
}
generateImage();
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key=GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"contents\":[{\"parts\":[{\"text\":\"Hi, can you create a 3d rendered image of a pig with wings and a top hat flying over a happy futuristic scifi city with lots of greenery?\"}]}],\"generationConfig\":{\"responseModalities\":[\"Text\",\"Image\"]}}" \
| grep -o '"data": "[^"]*"' \
| cut -d'"' -f4 \
| base64 --decode > gemini-native-image.png
نمونه کد باید یک تصویر و همچنین ممکن است متن را خروجی دهد.
بسته به اعلان و زمینه، Gemini محتوا را در حالت های مختلف (متن به تصویر، متن به تصویر و متن و غیره) تولید می کند. در اینجا چند نمونه آورده شده است:
- متن به تصویر
- اعلان مثال: "تصویری از برج ایفل با آتش بازی در پس زمینه ایجاد کنید."
- متن به تصویر (ها) و متن (میانبر)
- درخواست مثال: "یک دستور العمل مصور برای پائلا ایجاد کنید."
- تصویر(ها) و متن به تصویر(ها) و متن (میانبر)
- اعلان مثال: (با تصویر یک اتاق مبله) "مبل های چه رنگ دیگری در فضای من کار می کنند؟ آیا می توانید تصویر را به روز کنید؟"
- ویرایش تصویر (متن و تصویر به تصویر)
- درخواست مثال: "این تصویر را ویرایش کنید تا شبیه یک کارتون شود"
- اعلان مثال: [تصویر گربه] + [تصویر بالش] + "یک بخیه متقاطع از گربه من روی این بالش ایجاد کنید."
- ویرایش چند نوبتی تصویر (چت)
- مثال می گوید: [تصویر یک ماشین آبی را آپلود کنید.] "این ماشین را به یک ماشین تبدیل کنید." "حالا رنگ را به زرد تغییر دهید."
محدودیت ها
- برای بهترین عملکرد، از زبانهای زیر استفاده کنید: EN، es-MX، ja-JP، zh-CN، hi-IN.
- تولید تصویر از ورودی های صوتی یا تصویری پشتیبانی نمی کند.
- تولید تصویر ممکن است همیشه فعال نشود:
- مدل ممکن است فقط متن خروجی داشته باشد. سعی کنید خروجی های تصویر را به طور صریح بخواهید (به عنوان مثال "تصویر ایجاد کنید"، "تصاویر را در حین حرکت ارائه دهید"، "تصویر را به روز کنید").
- ممکن است تولید مدل به صورت نیمه تمام متوقف شود. دوباره امتحان کنید یا درخواست دیگری را امتحان کنید.
- هنگام تولید متن برای یک تصویر، Gemini بهترین کار را دارد اگر ابتدا متن را تولید کنید و سپس تصویری را با متن درخواست کنید.
یک مدل انتخاب کنید
از کدام مدل برای تولید تصاویر استفاده کنید؟ بستگی به مورد استفاده شما دارد.
Gemini 2.0 برای تولید تصاویر مرتبط با زمینه، ترکیب متن + تصاویر، ترکیب دانش جهانی و استدلال در مورد تصاویر بهترین است. می توانید از آن برای ایجاد تصاویری دقیق و مرتبط با متن که در دنباله های متن طولانی جاسازی شده اند استفاده کنید. شما همچنین می توانید تصاویر را به صورت مکالمه و با استفاده از زبان طبیعی ویرایش کنید، در حالی که زمینه را در طول مکالمه حفظ کنید.
اگر کیفیت تصویر در اولویت شماست، پس Imagen 3 انتخاب بهتری است. Imagen 3 در فوتورئالیسم، جزئیات هنری و سبک های هنری خاص مانند امپرسیونیسم یا انیمه برتر است. Imagen 3 همچنین برای کارهای تخصصی ویرایش تصویر مانند بهروزرسانی پسزمینه محصول، ارتقاء تصاویر و القای برند و سبک در تصاویر، انتخاب خوبی است. شما می توانید از Imagen 3 برای ایجاد لوگو یا سایر طرح های محصول برند استفاده کنید.
ایجاد تصاویر با استفاده از Imagen 3
Gemini API دسترسی به Imagen 3 ، با کیفیتترین مدل متن به تصویر Google را فراهم میکند که دارای تعدادی قابلیت جدید و بهبود یافته است. Imagen 3 می تواند کارهای زیر را انجام دهد:
- تصاویری با جزئیات بهتر، نورپردازی غنیتر و آثار باستانی کمتری نسبت به مدلهای قبلی ایجاد کنید.
- دستورات نوشته شده به زبان طبیعی را درک کنید
- تصاویر را در طیف گسترده ای از فرمت ها و سبک ها ایجاد کنید
- متن را موثرتر از مدل های قبلی ارائه دهید
مثال تصویری
این بخش به شما نشان می دهد که چگونه یک مدل Imagen را نمونه سازی کنید و تصاویر را تولید کنید.
پس از نصب Google Gen AI SDK، می توانید از کد زیر برای تولید تصاویر استفاده کنید:
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
client = genai.Client(api_key='GEMINI_API_KEY')
response = client.models.generate_images(
model='imagen-3.0-generate-002',
prompt='Fuzzy bunnies in my kitchen',
config=types.GenerateImagesConfig(
number_of_images= 4,
)
)
for generated_image in response.generated_images:
image = Image.open(BytesIO(generated_image.image.image_bytes))
image.show()
نمونه کد باید چهار تصویر مشابه این تصویر را خروجی دهد:
همچنین می توانید دفترچه یادداشت شروع با Imagen را در کتاب آشپزی Gemini امتحان کنید.
پارامترهای مدل Imagen
پارامترهای زیر برای generate_images()
در دسترس هستند:
-
prompt
: درخواست متنی برای تصویر. -
number_of_images
: تعداد تصاویر برای تولید، از 1 تا 4 (شامل). پیش فرض 4 است. -
aspect_ratio
: نسبت ابعاد تصویر تولید شده را تغییر می دهد. مقادیر پشتیبانی شده عبارتند از"1:1"
،"3:4"
،"4:3"
،"9:16"
و"16:9"
. پیش فرض"1:1"
است. -
safety_filter_level
: یک سطح فیلتر را به فیلتر ایمنی اضافه می کند. مقادیر زیر معتبر هستند:-
"BLOCK_LOW_AND_ABOVE"
: زمانی که امتیاز احتمال یا نمره شدتLOW
،MEDIUM
یاHIGH
باشد مسدود شود. -
"BLOCK_MEDIUM_AND_ABOVE"
: وقتی امتیاز احتمال یا نمره شدتMEDIUM
یاHIGH
باشد مسدود کنید. -
"BLOCK_ONLY_HIGH"
: وقتی امتیاز احتمال یا نمره شدتHIGH
باشد مسدود کنید.
-
-
person_generation
: به مدل اجازه می دهد تصاویری از افراد تولید کند. مقادیر زیر پشتیبانی می شوند:-
"DONT_ALLOW"
: جلوی تولید تصاویر افراد را بگیرید. -
"ALLOW_ADULT"
: تصاویری از بزرگسالان ایجاد کنید، اما نه کودکان. این پیش فرض است.
-
یک واترمارک دیجیتال SynthID همیشه به تصاویر تولید شده اضافه می شود.
زبان درخواست متن
زبانهای اعلان متن ورودی زیر پشتیبانی میشوند:
- انگلیسی (
en
)
بعدش چی
- برای کسب اطلاعات بیشتر در مورد نوشتن اعلان برای Imagen، راهنمای درخواست Imagen را ببینید.
- برای کسب اطلاعات بیشتر در مورد مدلهای Gemini 2.0، مدلهای Gemini و مدلهای تجربی را ببینید.
Gemini API از تولید تصویر با استفاده از Gemini 2.0 Flash Experimental و با استفاده از Imagen 3 پشتیبانی می کند. این راهنما به شما کمک می کند هر دو مدل را شروع کنید.
با استفاده از Gemini تصاویر تولید کنید
Gemini 2.0 Flash Experimental از قابلیت خروجی متن و تصاویر درون خطی پشتیبانی می کند. این به شما امکان می دهد از Gemini برای ویرایش مکالمه تصاویر یا تولید خروجی با متن در هم تنیده استفاده کنید (به عنوان مثال، ایجاد یک پست وبلاگ با متن و تصاویر در یک نوبت). همه تصاویر تولید شده دارای واترمارک SynthID هستند و تصاویر در استودیوی هوش مصنوعی گوگل شامل یک واترمارک قابل مشاهده نیز هستند.
مثال زیر نحوه استفاده از Gemini 2.0 برای تولید خروجی متن و تصویر را نشان می دهد:
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import base64
client = genai.Client()
contents = ('Hi, can you create a 3d rendered image of a pig '
'with wings and a top hat flying over a happy '
'futuristic scifi city with lots of greenery?')
response = client.models.generate_content(
model="models/gemini-2.0-flash-exp",
contents=contents,
config=types.GenerateContentConfig(response_modalities=['Text', 'Image'])
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO(base64.b64decode(part.inline_data.data)))
image.save('gemini-native-image.png')
image.show()
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
async function generateImage() {
const contents = "Hi, can you create a 3d rendered image of a pig " +
"with wings and a top hat flying over a happy " +
"futuristic scifi city with lots of greenery?";
// Set responseModalities to include "Image" so the model can generate
const model = genAI.getGenerativeModel({
model: "gemini-2.0-flash-exp",
generationConfig: {
responseModalities: ['Text', 'Image']
},
});
try {
const response = await model.generateContent(contents);
for (const part of response.response.candidates[0].content.parts) {
// Based on the part type, either show the text or save the image
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, 'base64');
fs.writeFileSync('gemini-native-image.png', buffer);
console.log('Image saved as gemini-native-image.png');
}
}
} catch (error) {
console.error("Error generating content:", error);
}
}
generateImage();
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key=GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"contents\":[{\"parts\":[{\"text\":\"Hi, can you create a 3d rendered image of a pig with wings and a top hat flying over a happy futuristic scifi city with lots of greenery?\"}]}],\"generationConfig\":{\"responseModalities\":[\"Text\",\"Image\"]}}" \
| grep -o '"data": "[^"]*"' \
| cut -d'"' -f4 \
| base64 --decode > gemini-native-image.png
نمونه کد باید یک تصویر و همچنین ممکن است متن را خروجی دهد.
بسته به اعلان و زمینه، Gemini محتوا را در حالت های مختلف (متن به تصویر، متن به تصویر و متن و غیره) تولید می کند. در اینجا چند نمونه آورده شده است:
- متن به تصویر
- اعلان مثال: "تصویری از برج ایفل با آتش بازی در پس زمینه ایجاد کنید."
- متن به تصویر (ها) و متن (میانبر)
- درخواست مثال: "یک دستور العمل مصور برای پائلا ایجاد کنید."
- تصویر(ها) و متن به تصویر(ها) و متن (میانبر)
- اعلان مثال: (با تصویر یک اتاق مبله) "مبل های چه رنگ دیگری در فضای من کار می کنند؟ آیا می توانید تصویر را به روز کنید؟"
- ویرایش تصویر (متن و تصویر به تصویر)
- درخواست مثال: "این تصویر را ویرایش کنید تا شبیه یک کارتون شود"
- اعلان مثال: [تصویر گربه] + [تصویر بالش] + "یک بخیه متقاطع از گربه من روی این بالش ایجاد کنید."
- ویرایش چند نوبتی تصویر (چت)
- مثال می گوید: [تصویر یک ماشین آبی را آپلود کنید.] "این ماشین را به یک ماشین تبدیل کنید." "حالا رنگ را به زرد تغییر دهید."
محدودیت ها
- برای بهترین عملکرد، از زبانهای زیر استفاده کنید: EN، es-MX، ja-JP، zh-CN، hi-IN.
- تولید تصویر از ورودی های صوتی یا تصویری پشتیبانی نمی کند.
- تولید تصویر ممکن است همیشه فعال نشود:
- مدل ممکن است فقط متن خروجی داشته باشد. سعی کنید خروجی های تصویر را به طور صریح بخواهید (به عنوان مثال "تصویر ایجاد کنید"، "تصاویر را در حین حرکت ارائه دهید"، "تصویر را به روز کنید").
- ممکن است تولید مدل به صورت نیمه تمام متوقف شود. دوباره امتحان کنید یا درخواست دیگری را امتحان کنید.
- هنگام تولید متن برای یک تصویر، Gemini بهترین کار را دارد اگر ابتدا متن را تولید کنید و سپس تصویری را با متن درخواست کنید.
یک مدل انتخاب کنید
از کدام مدل برای تولید تصاویر استفاده کنید؟ بستگی به مورد استفاده شما دارد.
Gemini 2.0 برای تولید تصاویر مرتبط با زمینه، ترکیب متن + تصاویر، ترکیب دانش جهانی و استدلال در مورد تصاویر بهترین است. می توانید از آن برای ایجاد تصاویری دقیق و مرتبط با متن که در دنباله های متن طولانی جاسازی شده اند استفاده کنید. شما همچنین می توانید تصاویر را به صورت مکالمه و با استفاده از زبان طبیعی ویرایش کنید، در حالی که زمینه را در طول مکالمه حفظ کنید.
اگر کیفیت تصویر در اولویت شماست، پس Imagen 3 انتخاب بهتری است. Imagen 3 در فوتورئالیسم، جزئیات هنری و سبک های هنری خاص مانند امپرسیونیسم یا انیمه برتر است. Imagen 3 همچنین برای کارهای تخصصی ویرایش تصویر مانند بهروزرسانی پسزمینه محصول، ارتقاء تصاویر و القای برند و سبک در تصاویر، انتخاب خوبی است. شما می توانید از Imagen 3 برای ایجاد لوگو یا سایر طرح های محصول برند استفاده کنید.
ایجاد تصاویر با استفاده از Imagen 3
Gemini API دسترسی به Imagen 3 ، با کیفیتترین مدل متن به تصویر Google را فراهم میکند که دارای تعدادی قابلیت جدید و بهبود یافته است. Imagen 3 می تواند کارهای زیر را انجام دهد:
- تصاویری با جزئیات بهتر، نورپردازی غنیتر و آثار باستانی کمتری نسبت به مدلهای قبلی ایجاد کنید.
- دستورات نوشته شده به زبان طبیعی را درک کنید
- تصاویر را در طیف گسترده ای از فرمت ها و سبک ها ایجاد کنید
- متن را موثرتر از مدل های قبلی ارائه دهید
مثال تصویری
این بخش به شما نشان می دهد که چگونه یک مدل Imagen را نمونه سازی کنید و تصاویر را تولید کنید.
پس از نصب Google Gen AI SDK، می توانید از کد زیر برای تولید تصاویر استفاده کنید:
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
client = genai.Client(api_key='GEMINI_API_KEY')
response = client.models.generate_images(
model='imagen-3.0-generate-002',
prompt='Fuzzy bunnies in my kitchen',
config=types.GenerateImagesConfig(
number_of_images= 4,
)
)
for generated_image in response.generated_images:
image = Image.open(BytesIO(generated_image.image.image_bytes))
image.show()
نمونه کد باید چهار تصویر مشابه این تصویر را خروجی دهد:
همچنین می توانید دفترچه یادداشت شروع با Imagen را در کتاب آشپزی Gemini امتحان کنید.
پارامترهای مدل Imagen
پارامترهای زیر برای generate_images()
در دسترس هستند:
-
prompt
: درخواست متنی برای تصویر. -
number_of_images
: تعداد تصاویر برای تولید، از 1 تا 4 (شامل). پیش فرض 4 است. -
aspect_ratio
: نسبت ابعاد تصویر تولید شده را تغییر می دهد. مقادیر پشتیبانی شده عبارتند از"1:1"
،"3:4"
،"4:3"
،"9:16"
و"16:9"
. پیش فرض"1:1"
است. -
safety_filter_level
: یک سطح فیلتر را به فیلتر ایمنی اضافه می کند. مقادیر زیر معتبر هستند:-
"BLOCK_LOW_AND_ABOVE"
: زمانی که امتیاز احتمال یا نمره شدتLOW
،MEDIUM
یاHIGH
باشد مسدود شود. -
"BLOCK_MEDIUM_AND_ABOVE"
: وقتی امتیاز احتمال یا نمره شدتMEDIUM
یاHIGH
باشد مسدود کنید. -
"BLOCK_ONLY_HIGH"
: وقتی امتیاز احتمال یا نمره شدتHIGH
باشد مسدود کنید.
-
-
person_generation
: به مدل اجازه می دهد تصاویری از افراد تولید کند. مقادیر زیر پشتیبانی می شوند:-
"DONT_ALLOW"
: جلوی تولید تصاویر افراد را بگیرید. -
"ALLOW_ADULT"
: تصاویری از بزرگسالان ایجاد کنید، اما نه کودکان. این پیش فرض است.
-
یک واترمارک دیجیتال SynthID همیشه به تصاویر تولید شده اضافه می شود.
زبان درخواست متن
زبانهای اعلان متن ورودی زیر پشتیبانی میشوند:
- انگلیسی (
en
)
بعدش چی
- برای کسب اطلاعات بیشتر در مورد نوشتن اعلان برای Imagen، راهنمای درخواست Imagen را ببینید.
- برای کسب اطلاعات بیشتر در مورد مدلهای Gemini 2.0، مدلهای Gemini و مدلهای تجربی را ببینید.