تولید تصاویر با Imagen از طریق API بومی
نحوه تولید تصاویر با کیفیت بالا با استفاده از مدلهای Imagen گوگل را از طریق اندپوینت بومی Gemini v1beta در AvalAI بیاموزید.
توجه
این راهنما بر اساس مستندات رسمی Imagen گوگل با تغییرات برای اندپوینت API AvalAI تهیه شده است. این محتوا نحوه استفاده از قابلیتهای قدرتمند تولید تصویر Imagen را از طریق زیرساخت AvalAI نشان میدهد.
نکته مهم
برای بهترین نتایج، توصیه میشود از پرامپتهای انگلیسی استفاده کنید زیرا مدلهای تولید تصویر معمولا برای زبان انگلیسی بهینهسازی شدهاند. برای پشتیبانی فنی یا سوالات، با t.me/AvalAISupport تماس بگیرید.
مقدمه
Imagen مدل تولید تصویر با وفاداری بالای گوگل است که قادر به تولید تصاویر واقعگرایانه و با کیفیت بالا از پرامپتهای متنی است. از طریق اندپوینت بومی Gemini v1beta AvalAI، میتوانید به سه نوع مختلف Imagen 4 دسترسی داشته باشید:
imagen-4.0-generate-001- کیفیت استاندارد، عملکرد متعادلimagen-4.0-ultra-generate-001- بالاترین کیفیت خروجیimagen-4.0-fast-generate-001- بهینه شده برای سرعت
تمام تصاویر تولید شده شامل واترمارک SynthID برای تایید اصالت هستند.
مدلهای Imagen موجود
مدلهای Imagen 4.0
| مدل | کیفیت | سرعت | مورد استفاده |
|---|---|---|---|
imagen-4.0-generate-001 | استاندارد | متوسط | تولید تصویر عمومی |
imagen-4.0-ultra-generate-001 | فوقالعاده بالا | کندتر | خروجیهای حرفهای و با کیفیت بالا |
imagen-4.0-fast-generate-001 | خوب | سریع | نمونهسازی سریع، تولید انبوه |
مدل Imagen 3.0
| مدل | کیفیت | سرعت | مورد استفاده |
|---|---|---|---|
imagen-3.0-generate-002 | استاندارد | متوسط | پشتیبانی قدیمی، تولید پایدار |
تولید ساده تصویر
در اینجا مثال سادهای از تولید تصویر با Imagen از طریق اندپوینت v1beta AvalAI آورده شده است:
# تولید تصویر با استفاده از Imagen 4.0 Fast
curl -X POST \
"https://api.avalai.ir/v1beta/models/imagen-4.0-fast-generate-001:predict" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [
{
"prompt": "Robot holding a red skateboard"
}
],
"parameters": {
"sampleCount": 1
}
}'import requests
import base64
import json
# پیکربندی
API_KEY = "your-avalai-api-key"
API_URL = "https://api.avalai.ir/v1beta/models/imagen-4.0-fast-generate-001:predict"
# آمادهسازی درخواست
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
payload = {
"instances": [{"prompt": "Robot holding a red skateboard"}],
"parameters": {"sampleCount": 1},
}
# تولید تصویر
response = requests.post(API_URL, headers=headers, json=payload)
result = response.json()
# ذخیره تصویر تولید شده
if "predictions" in result:
for idx, prediction in enumerate(result["predictions"]):
# رمزگشایی تصویر base64
image_data = base64.b64decode(prediction["bytesBase64Encoded"])
# ذخیره در فایل
with open(f"generated_image_{idx}.png", "wb") as f:
f.write(image_data)
print(f"تصویر به عنوان generated_image_{idx}.png ذخیره شد")
# چاپ اطلاعات استفاده
if "usageMetadata" in result:
print(f"\nاستفاده: {result['usageMetadata']}")const fs = require('fs');
// پیکربندی
const API_KEY = 'your-avalai-api-key';
const API_URL = 'https://api.avalai.ir/v1beta/models/imagen-4.0-fast-generate-001:predict';
async function generateImage() {
try {
const response = await fetch(API_URL, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
instances: [
{
prompt: 'Robot holding a red skateboard'
}
],
parameters: {
sampleCount: 1
}
})
});
const result = await response.json();
// ذخیره تصاویر تولید شده
if (result.predictions) {
result.predictions.forEach((prediction, idx) => {
// رمزگشایی تصویر base64
const imageBuffer = Buffer.from(prediction.bytesBase64Encoded, 'base64');
// ذخیره در فایل
fs.writeFileSync(`generated_image_${idx}.png`, imageBuffer);
console.log(`تصویر به عنوان generated_image_${idx}.png ذخیره شد`);
});
// چاپ اطلاعات استفاده
if (result.usageMetadata) {
console.log('\nاستفاده:', result.usageMetadata);
}
}
} catch (error) {
console.error('خطا:', error);
}
}
generateImage();package main
import (
"bytes"
"encoding/base64"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
type ImageRequest struct {
Instances []Instance `json:"instances"`
Parameters Parameters `json:"parameters"`
}
type Instance struct {
Prompt string `json:"prompt"`
}
type Parameters struct {
SampleCount int `json:"sampleCount"`
}
type ImageResponse struct {
Predictions []Prediction `json:"predictions"`
UsageMetadata UsageMetadata `json:"usageMetadata"`
}
type Prediction struct {
BytesBase64Encoded string `json:"bytesBase64Encoded"`
MimeType string `json:"mimeType"`
}
type UsageMetadata struct {
GeneratedImages int `json:"generatedImages"`
Cost float64 `json:"cost"`
}
func main() {
apiKey := "your-avalai-api-key"
apiURL := "https://api.avalai.ir/v1beta/models/imagen-4.0-fast-generate-001:predict"
// آمادهسازی درخواست
reqBody := ImageRequest{
Instances: []Instance{
{Prompt: "Robot holding a red skateboard"},
},
Parameters: Parameters{
SampleCount: 1,
},
}
jsonData, err := json.Marshal(reqBody)
if err != nil {
fmt.Println("Error marshaling JSON:", err)
return
}
// ایجاد درخواست
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
// ارسال درخواست
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error sending request:", err)
return
}
defer resp.Body.Close()
// تجزیه پاسخ
body, _ := io.ReadAll(resp.Body)
var result ImageResponse
json.Unmarshal(body, &result)
// ذخیره تصاویر
for idx, prediction := range result.Predictions {
imageData, err := base64.StdEncoding.DecodeString(prediction.BytesBase64Encoded)
if err != nil {
fmt.Println("Error decoding image:", err)
continue
}
filename := fmt.Sprintf("generated_image_%d.png", idx)
err = os.WriteFile(filename, imageData, 0644)
if err != nil {
fmt.Println("Error saving image:", err)
continue
}
fmt.Printf("تصویر به عنوان %s ذخیره شد\n", filename)
}
// چاپ استفاده
fmt.Printf("\nاستفاده: %+v\n", result.UsageMetadata)
}<?php
// پیکربندی
$apiKey = 'your-avalai-api-key';
$apiUrl = 'https://api.avalai.ir/v1beta/models/imagen-4.0-fast-generate-001:predict';
// آمادهسازی درخواست
$data = [
'instances' => [
[
'prompt' => 'Robot holding a red skateboard'
]
],
'parameters' => [
'sampleCount' => 1
]
];
// مقداردهی اولیه cURL
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
]);
// اجرای درخواست
$response = curl_exec($ch);
curl_close($ch);
// تجزیه پاسخ
$result = json_decode($response, true);
// ذخیره تصاویر تولید شده
if (isset($result['predictions'])) {
foreach ($result['predictions'] as $idx => $prediction) {
// رمزگشایی تصویر base64
$imageData = base64_decode($prediction['bytesBase64Encoded']);
// ذخیره در فایل
$filename = "generated_image_{$idx}.png";
file_put_contents($filename, $imageData);
echo "تصویر به عنوان {$filename} ذخیره شد\n";
}
// چاپ اطلاعات استفاده
if (isset($result['usageMetadata'])) {
echo "\nاستفاده: " . json_encode($result['usageMetadata']) . "\n";
}
}
?>فرمت پاسخ
API پاسخی با ساختار زیر برمیگرداند:
{
"predictions": [
{
"bytesBase64Encoded": "BASE64_ENCODED_IMAGE_DATA...",
"mimeType": "image/png"
}
],
"usageMetadata": {
"generatedImages": 1,
"cost": 0.02,
"inputTokens": 0,
"outputTokens": 1000
}
}پارامترهای پیکربندی
Imagen از پارامترهای پیکربندی زیر از طریق شیء parameters پشتیبانی میکند:
تعداد نمونه
کنترل تعداد تصاویری که باید تولید شوند (1-4):
curl -X POST \
"https://api.avalai.ir/v1beta/models/imagen-4.0-generate-001:predict" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [{"prompt": "A serene mountain landscape"}],
"parameters": {
"sampleCount": 4
}
}'payload = {
"instances": [{"prompt": "A serene mountain landscape"}],
"parameters": {"sampleCount": 4}, # تولید 4 تصویر
}const payload = {
instances: [{ prompt: 'A serene mountain landscape' }],
parameters: {
sampleCount: 4 // تولید 4 تصویر
}
};reqBody := ImageRequest{
Instances: []Instance{
{Prompt: "A serene mountain landscape"},
},
Parameters: Parameters{
SampleCount: 4, // تولید 4 تصویر
},
}$data = [
'instances' => [
['prompt' => 'A serene mountain landscape']
],
'parameters' => [
'sampleCount' => 4 // تولید 4 تصویر
]
];نسبت ابعاد
نسبتهای ابعاد پشتیبانی شده: "1:1", "3:4", "4:3", "9:16", "16:9" (پیشفرض: "1:1"):
curl -X POST \
"https://api.avalai.ir/v1beta/models/imagen-4.0-generate-001:predict" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [{"prompt": "A widescreen cinematic landscape"}],
"parameters": {
"aspectRatio": "16:9",
"sampleCount": 1
}
}'payload = {
"instances": [{"prompt": "A widescreen cinematic landscape"}],
"parameters": {"aspectRatio": "16:9", "sampleCount": 1}, # فرمت عریض
}const payload = {
instances: [{ prompt: 'A widescreen cinematic landscape' }],
parameters: {
aspectRatio: '16:9', // فرمت عریض
sampleCount: 1
}
};type Parameters struct {
SampleCount int `json:"sampleCount"`
AspectRatio string `json:"aspectRatio,omitempty"`
}
reqBody := ImageRequest{
Instances: []Instance{
{Prompt: "A widescreen cinematic landscape"},
},
Parameters: Parameters{
SampleCount: 1,
AspectRatio: "16:9", // فرمت عریض
},
}$data = [
'instances' => [
['prompt' => 'A widescreen cinematic landscape']
],
'parameters' => [
'aspectRatio' => '16:9', // فرمت عریض
'sampleCount' => 1
]
];تولید افراد
کنترل اینکه آیا تصاویر افراد تولید شوند یا نه:
"dont_allow"- مسدود کردن تولید تصاویر افراد"allow_adult"- فقط تولید تصاویر بزرگسالان (پیشفرض)"allow_all"- تولید تصاویر شامل کودکان
توجه
پارامتر "allow_all" در مناطق EU، UK، CH و MENA محدود است.
curl -X POST \
"https://api.avalai.ir/v1beta/models/imagen-4.0-generate-001:predict" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [{"prompt": "Portrait of a professional chef"}],
"parameters": {
"personGeneration": "allow_adult",
"sampleCount": 1
}
}'payload = {
"instances": [{"prompt": "Portrait of a professional chef"}],
"parameters": {"personGeneration": "allow_adult", "sampleCount": 1},
}const payload = {
instances: [{ prompt: 'Portrait of a professional chef' }],
parameters: {
personGeneration: 'allow_adult',
sampleCount: 1
}
};type Parameters struct {
SampleCount int `json:"sampleCount"`
PersonGeneration string `json:"personGeneration,omitempty"`
}
reqBody := ImageRequest{
Instances: []Instance{
{Prompt: "Portrait of a professional chef"},
},
Parameters: Parameters{
SampleCount: 1,
PersonGeneration: "allow_adult",
},
}$data = [
'instances' => [
['prompt' => 'Portrait of a professional chef']
],
'parameters' => [
'personGeneration' => 'allow_adult',
'sampleCount' => 1
]
];راهنمای پرامپت Imagen
منبع: راهنمای نوشتن پرامپت زیر از راهنمای رسمی پرامپت Imagen گوگل اقتباس شده است.
اصول پایه نوشتن پرامپت
حداکثر طول پرامپت: 480 توکن
یک پرامپت خوب توصیفی و واضح است و از کلمات کلیدی و تغییردهندههای معنادار استفاده میکند. به سه عنصر کلیدی فکر کنید:
- سوژه: شیء، شخص، حیوان یا منظرهای که میخواهید
- زمینه و پسزمینه: محیطی که سوژه در آن قرار دارد
- سبک: سبک هنری یا عکاسی که میخواهید

مثال: یک طرح (سبک) از یک ساختمان آپارتمانی مدرن (سوژه) احاطه شده با آسمانخراشها (زمینه)
اصلاح تکراری
ساده شروع کنید و به تدریج جزئیات اضافه کنید:
پرامپت کوتاه:
پارکی در بهار کنار دریاچهپرامپت متوسط:
پارکی در بهار کنار دریاچه، خورشید روی دریاچه غروب میکند، ساعت طلاییپرامپت تفصیلی:
پارکی در بهار کنار دریاچه، خورشید روی دریاچه غروب میکند، ساعت طلایی، گلهای وحشی قرمزنکات کلیدی
- از زبان توصیفی استفاده کنید: از صفتها و قیدهای دقیق استفاده کنید
- زمینه ارائه دهید: اطلاعات پسزمینه را برای درک بهتر شامل کنید
- به سبکهای خاص اشاره کنید: در صورت تمایل به هنرمندان یا جنبشهای هنری اشاره کنید
- جزئیات چهره را بهبود دهید: از کلماتی مانند "پرتره" برای رندر بهتر چهره استفاده کنید
- به آزمایش ادامه دهید: تا زمانی که به نتیجه دلخواه برسید تکرار کنید
تولید متن در تصاویر
Imagen میتواند متن را در تصاویر تولید شده ادغام کند. این دستورالعملها را دنبال کنید:
- متن را کوتاه نگه دارید: به 25 کاراکتر یا کمتر محدود کنید
- عبارات متعدد: از 2-3 عبارت متمایز استفاده کنید، از بیش از سه عبارت اجتناب کنید
- محل قرارگیری را مشخص کنید: راهنمایی کنید که متن کجا باید ظاهر شود (اگرچه موقعیت دقیق ممکن است متفاوت باشد)
- سبک فونت: ویژگیهای کلی فونت را ذکر کنید
- اندازه فونت: اندازه نسبی را مشخص کنید (کوچک، متوسط، بزرگ)
مثال پرامپت:
پوستری با متن "Summerland" با فونت پررنگ به عنوان عنوان،
زیر این متن شعار "Summer never felt so good" قرار داردپرامپتهای عکاسی
برای تصاویر واقعگرایانه، با "A photo of..." شروع کنید و تغییردهندهها اضافه کنید:
فاصله دوربین
- نمای نزدیک
- زوم کرده
- ماکرو
- از فاصله دور گرفته شده
موقعیت دوربین
- عکس هوایی
- از پایین
- سطح چشم
- نمای پرنده
نورپردازی
- نورپردازی طبیعی
- نورپردازی دراماتیک
- تنهای گرم
- تنهای سرد
- ساعت طلایی
- نورپردازی استودیو
تنظیمات دوربین
- تاری حرکت
- فوکوس نرم
- افکت بوکه
- حالت پرتره
- فوکوس تیز
انواع لنز
- 35mm
- 50mm
- چشم ماهی
- زاویه عریض
- لنز ماکرو
- تلهفوتو
انواع فیلم
- سیاه و سفید
- پولاروید
- فیلم قدیمی
- کداکروم
سبکهای نقاشی و هنر
از عبارات "A painting of..." یا "A sketch of..." استفاده کنید و توصیفگرهای سبک اضافه کنید:
سبکهای هنری
- طراحی مدادی فنی
- طراحی زغالی
- طراحی مدادرنگی
- نقاشی آبرنگ
- نقاشی رنگ روغن
- هنر دیجیتال
- آرت دکو
- مینیمالیست
- انتزاعی
ارجاعات هنری تاریخی
- نقاشی امپرسیونیست
- نقاشی رنسانس
- هنر پاپ
- سبک کوبیست
- سبک سورئالیست
تکنیکهای پیشرفته
اشکال و مواد
تصاویر منحصر به فرد با مشخص کردن مواد ایجاد کنید:
کیف ورزشی ساخته شده از پنیر
لولههای نئون به شکل پرنده
صندلی راحتی ساخته شده از کاغذ، سبک اوریگامیتغییردهندههای کیفیت تصویر
کیفیت خروجی را با این کلمات کلیدی بهبود دهید:
- عمومی: با کیفیت بالا، زیبا، سبکدار، دقیق
- عکسها: 4K، HDR، عکس استودیو، عکاس حرفهای
- هنر: توسط یک حرفهای، بسیار دقیق، شاهکار
موارد استفاده واقعگرایانه
| مورد استفاده | نوع لنز | فاصله کانونی | جزئیات اضافی |
|---|---|---|---|
| پرتره | پرایم، زوم | 24-35mm | فیلم سیاه و سفید، عمق میدان |
| اشیاء/طبیعت بیجان | ماکرو | 60-105mm | جزئیات بالا، نورپردازی کنترل شده |
| ورزش/حیات وحش | تلهفوتو | 100-400mm | سرعت شاتر سریع، ردیابی حرکت |
| مناظر | زاویه عریض | 10-24mm | نوردهی طولانی، فوکوس تیز |
بهترین شیوهها
ساده شروع کنید، سپس اصلاح کنید
- با یک مفهوم پایه شروع کنید
- به صورت تکراری جزئیات اضافه کنید
- تنوعها را تست کنید تا بهترین رویکرد را پیدا کنید
با اصطلاحات فنی خاص باشید
- در صورت مرتبط بودن از اصطلاحات عکاسی استفاده کنید
- سبکهای هنری را به وضوح مشخص کنید
- برای نتایج حرفهای، تغییردهندههای کیفیت را شامل کنید
از چندین تصویر استفاده کنید
- 2-4 تنوع با
sampleCountتولید کنید - نتایج را مقایسه کنید تا بهترین خروجی را پیدا کنید
- از پرامپتهای مختلف برای تنوع استفاده کنید
- 2-4 تنوع با
برای مورد استفاده خود بهینهسازی کنید
- نسبتهای ابعاد مناسب را برای پلتفرم خود انتخاب کنید
- نوع مناسب مدل Imagen را انتخاب کنید (استاندارد/اولترا/سریع)
- نیازهای کیفیت را با سرعت تولید متعادل کنید
به سیاستهای محتوا احترام بگذارید
- از پرامپتهایی که محتوای صریح درخواست میکنند اجتناب کنید
- کاراکترها یا برندهای دارای حق نشر را درخواست نکنید
- پارامتر
personGenerationرا به درستی استفاده کنید
رفع مشکلات
مشکلات کیفیت تصویر
مشکل: تصاویر تولید شده فاقد جزئیات هستند یا تار به نظر میرسند
راهحلها:
- تغییردهندههای کیفیت اضافه کنید (4K، HDR، با کیفیت بالا، دقیق)
- از زبان توصیفی خاصتر استفاده کنید
- برای بالاترین کیفیت، مدل Ultra را امتحان کنید
- اصطلاحات فنی عکاسی را شامل کنید
مشکلات تولید متن
مشکل: متن در تصاویر نادرست یا ضعیف رندر میشود
راهحلها:
- متن را زیر 25 کاراکتر نگه دارید
- از عبارات واضح و ساده استفاده کنید
- سبک و اندازه فونت را مشخص کنید
- چندین بار تولید را امتحان کنید
- توضیح متن را در ابتدای پرامپت قرار دهید
نتایج غیرمنتظره
مشکل: تصاویر با پرامپت مورد نظر مطابقت ندارند
راهحلها:
- ساختار پرامپت (سوژه، زمینه، سبک) را بررسی کنید
- جزئیات خاصتری اضافه کنید
- از سبکها یا هنرمندان مرجع استفاده کنید
- عبارات جایگزین را امتحان کنید
- چندین نمونه برای مقایسه تولید کنید
خطاهای API
مشکل: درخواست شکست میخورد یا خطا برمیگرداند
راهحلها:
- تایید کنید که کلید API صحیح است
- طول پرامپت را بررسی کنید (حداکثر 480 توکن)
- اطمینان حاصل کنید
sampleCountبین 1-4 است - مقادیر نسبت ابعاد را تایید کنید
منابع مرتبط
- مرجع API بومی Gemini v1beta - مستندات کامل اندپوینت
- راهنمای تولید تصویر - بررسی کلی تولید تصویر
- مدلهای Gemini - انواع مختلف مدل Gemini موجود
- قیمتگذاری - اطلاعات هزینه و جزئیات قیمتگذاری
- بهترین شیوهها - دستورالعملهای کلی استفاده از API
- مستندات رسمی Imagen گوگل - مرجع منبع
این راهنما بر اساس مستندات رسمی Imagen گوگل با تغییرات برای زیرساخت API AvalAI تهیه شده است. برای اطلاعات بیشتر درباره قابلیتهای Imagen از مستندات رسمی گوگل دیدن کنید.