SPB Git forge

spb/doc-api

Public
2commits 1branches 0releases
15.7 MBsize
maindefault branch
13 days agolast push
Python 88.3% TypeScript 7.6% Shell 4.1%
2.0 KB · 42 lines python
Raw Blame History
1#!/usr/bin/env python32"""Native image generation (Nano Banana) with the google-genai SDK: responseModalities TEXT+IMAGE, imageConfig.34STATUS: UNVERIFIED as a script (ACCOUNT_RESTRICTED): the identical raw request returned 429 RESOURCE_EXHAUSTED5        "free_tier_requests, limit: 0" on 2026-09-18 — image models have no free tier. Paid key: ≈ $0.034 per 1K image6        on gemini-3.1-flash-lite-image (1120 output image tokens at $30/M).7Run:  .venv/bin/python examples/gemini/image-generation/generate.py "a plain white square"8"""9from __future__ import annotations1011import sys12from pathlib import Path1314ROOT = Path(__file__).resolve().parents[3]15sys.path.insert(0, str(ROOT))16from scripts import live  # noqa: E402  loads .env1718from google import genai  # noqa: E40219from google.genai import types  # noqa: E4022021MODEL = "gemini-3.1-flash-lite-image"22prompt = sys.argv[1] if len(sys.argv) > 1 else "a plain white square"23client = genai.Client()24try:25    r = client.models.generate_content(26        model=MODEL, contents=prompt,27        config=types.GenerateContentConfig(response_modalities=["TEXT", "IMAGE"],28                                           image_config=types.ImageConfig(aspect_ratio="1:1", image_size="1K")))29except Exception as e:  # noqa: BLE001  (ClientError 429 on free-tier keys)30    live.log_request("gemini", "POST", "/v1beta/models/{model}:generateContent", getattr(e, "code", 0), 0, "example image generate.py error")31    print("error:", live.mask(str(e))[:400]); sys.exit(1)32live.log_request("gemini", "POST", "/v1beta/models/{model}:generateContent", 200, 0.034, "example image generate.py")33for part in r.candidates[0].content.parts:34    if part.text:35        print("text:", part.text[:200])36    if part.inline_data:37        ext = part.inline_data.mime_type.split("/")[-1]38        out = ROOT / "tmp-live" / f"gemini-image.{ext}"39        out.write_bytes(part.inline_data.data)40        print("image:", part.inline_data.mime_type, len(part.inline_data.data), "bytes ->", out)41print("usage:", r.usage_metadata)42