Nano Banana π
Gemini 2.5 Flash Image Preview (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ Nano Banana) β ΡΡΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ AI ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ°Ρ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ½Π° ΡΠΎΠ·Π΄Π°Π΅Ρ Π³ΠΈΠΏΠ΅Ρ-ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠ΅, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠ½ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ Ρ ΠΏΠ»Π°Π²Π½ΡΠΌΠΈ ΡΡΠΈΠ»Π΅Π²ΡΠΌΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΌΠΈ.
Gemini 2.5 Flash Image Preview (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ Nano Banana) β ΡΡΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ AI ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ°Ρ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ½Π° ΡΠΎΠ·Π΄Π°Π΅Ρ Π³ΠΈΠΏΠ΅Ρ-ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠ΅, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠ½ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ Ρ ΠΏΠ»Π°Π²Π½ΡΠΌΠΈ ΡΡΠΈΠ»Π΅Π²ΡΠΌΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΌΠΈ.
Π‘ΠΎΠ·Π΄Π°ΡΡ
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π·Π΄Π΅ΡΡ
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
Nano Banana β ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Ρ AI-ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΡ Google Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Gemini 2.5 Flash. ΠΠΎΠ΄Π΅Π»Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°ΠΊΠΎΠ½ΠΎΠ², Nano Banana ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ, ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
- ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ (text-to-image) Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (image-to-image) Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΠ»Ρ
- 7 ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ: Realistic, Cartoon, Anime, Fantasy, Sci-Fi, Horror, Oil Painting
- 5 ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΡΠΎΠ½: ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ΅ 1:1, ΠΏΠΎΡΡΡΠ΅Ρ 2:3, Π°Π»ΡΠ±ΠΎΠΌ 3:2, ΡΠΈΡΠΎΠΊΠΎΡΠΊΡΠ°Π½Π½ΠΎΠ΅ 16:9, 9:16
- 2 ΡΡΠΎΠ²Π½Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°: Standard (Π±ΡΡΡΡΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ) ΠΈ High (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ)
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎ 10 ΠΠ Π² ΡΠΎΡΠΌΠ°ΡΠ°Ρ JPG, PNG, WebP
- Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ, ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π½ΠΈ
- ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ
- ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π·Π° 2-5 ΡΠ΅ΠΊΡΠ½Π΄ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ
- Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ ΠΎΡ ~4β½ Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ
API ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Playground API Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Nano Banana π Π² Π²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΡΠ΅Π±ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· API ΠΊΠ»ΡΡ.
Π¨Π°Π³ 1: ΠΠΎΠ»ΡΡΠΈΡΠ΅ API ΠΊΠ»ΡΡ
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ API ΠΊΠ»ΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅.
Π¨Π°Π³ 2: Endpoint
Π¨Π°Π³ 3: ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°
import requests
API_KEY = "YOUR_PTOLEMY_API_KEY"
BASE_URL = "https://ptolemy.ru"
def generate_nano_banana(prompt, image_path=None):
url = f"{BASE_URL}/playground/api/nano-banana/generate/"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"prompt": prompt,
"aspect_ratio": "1:1", # Aspect Ratio
"style": "realistic", # Style
}
# Optional: Add image for image-to-image
if image_path:
import base64
with open(image_path, 'rb') as f:
image_b64 = base64.b64encode(f.read()).decode()
data["image"] = image_b64
response = requests.post(url, headers=headers, json=data)
result = response.json()
if result.get("success"):
print(f"β Generated successfully!")
print(f"Image URL: {result.get('image_url')}")
print(f"Cost: {result.get('cost_rub')} β½")
print(f"Time: {result.get('processing_time_ms')/1000:.1f}s")
# Show model response if available
if result.get('model_response'):
print(f"\nπ Model response:\n{result.get('model_response')}")
return result
else:
print(f"β Error: {result.get('error')}")
return None
# Example usage
result = generate_nano_banana(
"A serene sunset over mountains",
image_path="input.jpg" # Optional
)
Π¨Π°Π³ 4: ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|---|
| prompt | string | ΠΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ (3-2000 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²) |
| image | string (base64) | ΠΠ΅Ρ | ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² base64 (Π΄Π»Ρ image-to-image) |
| aspect_ratio | select | ΠΠ΅Ρ |
Image dimensions
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: 1:1
|
| style | select | ΠΠ΅Ρ |
Visual style of the output
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: realistic
|
Π¨Π°Π³ 5: ΠΡΠ²Π΅Ρ API
Π£ΡΠΏΠ΅ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ (200 OK):
{
"success": true,
"image_url": "data:image/png;base64,iVBORw0KG...",
"image_base64": "iVBORw0KG...",
"prompt": "A serene sunset over mountains",
"cost_kopeks": 390,
"cost_rub": 3.90,
"processing_time_ms": 3250,
"usage_id": "12345",
"request_id": "abc-def-123"
}
ΠΡΠ²Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ (400/401/500):
{
"error": "ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ΅Π΄ΡΡΠ²",
"detail": "ΠΠ° Π±Π°Π»Π°Π½ΡΠ΅ 2.50 β½, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 3.90 β½"
}