Ana içeriğe atla
Bu rehber, Google Gen AI SDK kullanarak CometAPI üzerinden Gemini görüntü modellerinin nasıl kullanılacağını gösterir. Şunları kapsar:
  • Metinden görüntü üretimi
  • Görüntüden görüntü düzenleme
  • Çoklu görüntü kompozisyonu
  • Üretilen görüntüleri kaydetme
  • Base URL: https://api.cometapi.com
  • SDK’yı yükleyin: pip install google-genai (Python) veya npm install @google/genai (Node.js)

Kurulum

İstemciyi CometAPI’nin base URL’si ile başlatın:
from google import genai
from google.genai import types
import os

COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=COMETAPI_KEY,
)

Metinden görsel üretimi

Bir metin prompt’undan bir görsel üretin ve bunu bir dosyaya kaydedin.
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents="Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("generated_image.png")
        print("Image saved to generated_image.png")
Yanıt yapısı: Görsel verisi, metin ve/veya görsel parçaları içerebilen candidates[0].content.parts içinde yer alır:
{
  "candidates": [{
    "content": {
      "parts": [
        { "text": "Here is your image..." },
        {
          "inlineData": {
            "mimeType": "image/png",
            "data": "<base64-encoded-image>"
          }
        }
      ]
    }
  }]
}

Görüntüden görüntü üretimi

Bir giriş görüntüsü yükleyin ve bunu bir metin promptu ile dönüştürün.
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

# Load the source image
source_image = Image.open("source.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=["Transform this into a watercolor painting", source_image],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("watercolor_output.png")
  • Python SDK, PIL.Image nesnelerini doğrudan kabul eder — manuel Base64 kodlaması gerekmez.
  • Ham Base64 dizeleri geçirirken data:image/jpeg;base64, önekini eklemeyin.

Çoklu görsel kompozisyonu

Birden fazla giriş görselinden yeni bir görsel oluşturun. CometAPI iki yaklaşımı destekler:

Yöntem 1: Tek kolaj görseli

Birden fazla kaynak görseli tek bir kolajda birleştirin, ardından istenen çıktıyı açıklayın.
Giriş kolajı örneği
Oluşturulan çıktı
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

collage = Image.open("collage.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=[
        "A model is posing and leaning against a pink BMW with a green alien keychain attached to a pink handbag, a pink parrot on her shoulder, and a pug wearing a pink collar and gold headphones",
        collage,
    ],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.inline_data is not None:
        part.as_image().save("composition_output.png")

Yöntem 2: Birden fazla ayrı görsel (14 adede kadar)

Birden fazla görseli doğrudan iletin. Gemini 3 modelleri en fazla 14 referans görseli destekler (nesneler + karakterler):
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")
image3 = Image.open("image3.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=["Merge the three images", image1, image2, image3],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.inline_data is not None:
        part.as_image().save("merged_output.png")
Çoklu görsel oluşturma sonucu

4K görsel oluşturma

Yüksek çözünürlüklü çıktı için aspect_ratio ve image_size içeren image_config belirtin:
from google import genai
from google.genai import types
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents="Da Vinci style anatomical sketch of a Monarch butterfly on textured parchment",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
        image_config=types.ImageConfig(
            aspect_ratio="1:1",
            image_size="4K",
        ),
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("butterfly_4k.png")

Çok turlu görsel düzenleme (chat)

Görselleri yinelemeli olarak iyileştirmek için SDK’nın chat özelliğini kullanın:
from google import genai
from google.genai import types
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

chat = client.chats.create(
    model="gemini-3.1-flash-image-preview",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

## First turn: Generate
response = chat.send_message(
    "Create a vibrant infographic explaining photosynthesis as a recipe, styled like a colorful kids cookbook"
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("photosynthesis.png")

İpuçları

Stil anahtar kelimelerini (ör. “cyberpunk, film grain, low contrast”), en-boy oranını, konuyu, arka planı, ışıklandırmayı ve ayrıntı seviyesini belirtin.
Ham HTTP kullanırken data:image/png;base64, önekini eklemeyin — yalnızca ham Base64 dizesini kullanın. Python SDK bunu PIL.Image nesneleriyle otomatik olarak yönetir.
Metin olmadan görüntü çıktısını garanti etmek için "responseModalities" değerini yalnızca ["IMAGE"] olarak ayarlayın.
Daha fazla ayrıntı için bkz. API Reference. Resmi dokümantasyon: Gemini Image Generation