Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)
Nano Banana 2 (Gemini 3.1 Flash Image Preview) vytváří a upravuje obrázky z textu a vizuálních referencí. Mezi dokumentované silné stránky patří konzistence námětu, text v obrázku a lokalizace, konverzační změny a tvůrčí ovládání kompozice, poměru stran a rozlišení.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgoogle/gemini-3.1-flash-image-preview - Ailoot Ultra · Obrázky
POST /v1/images/generationsgoogle/gemini-3.1-flash-image-preview - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgoogle/gemini-3.1-flash-image-preview
O modelu
Tento popis zahrnuje schopnosti modelu. Vstupy, výstupy a možnosti dostupné v Ailoot jsou uvedeny níže pro vybranou metodu.
Nano Banana 2 je model Gemini 3.1 Flash Image od Googlu pro generování obrázků a konverzační úpravy. Tato položka zachovává přesnou identitu Preview. Písemný popis může definovat nový vizuál, zatímco vstupní obrázek může stanovit námět, vzhled nebo kompozici k úpravě. Výsledek může obsahovat obrázek a doprovodný text. Materiály Googlu k uvedení zdůrazňují znalosti světa, vykreslování textu a konzistenci námětu spolu se schopností zdokonalovat scénu prostřednictvím navazujících kroků konverzace.
Při ukotvené vizuální tvorbě může dokumentovaný model využívat informace z webového vyhledávání a vyhledávání obrázků jako podklady pro generování. To podporuje úlohy jako ilustraci inspirovanou místem nebo diagram založený na dodaných informacích. Definujte zdrojová fakta, která musí být reprezentována, a odlište je od uměleckých voleb. Generování založené na informacích z vyhledávání nečiní z každého detailu konečného obrázku ověřené tvrzení. Pokud musí být produkt, památka nebo diagram přesné, poskytněte autoritativní referenci a výstup podle ní zkontrolujte.
Uvedení popisuje vylepšené vykreslování textu v obrázku a lokalizaci. U plakátu, infografiky nebo marketingového návrhu dodejte přesné znění, jazyk a roli každého textového prvku. Nejprve uzavřete text a poté požádejte o vizuál, který jej obsahuje, jak doporučuje průvodce obrázky. Vysvětlete pořadí čtení a relativní důraz, aby se nezaměnil nadpis, popisek a označení diagramu. Před použitím obrázku v publikaci zkontrolujte pravopis, interpunkci a propojení popisku s ilustrovaným prvkem.
Tvůrčí ovládací prvky zahrnují poměr stran a rozlišení. Vydání přidává výstup o velikosti 512 pixelů vedle možností 1K, 2K a 4K a přidává poměry stran 4:1, 1:4, 8:1 a 1:8. Vývojářský průvodce uvádí přemýšlení minimal jako výchozí a přemýšlení high jako možnost pro složitější kompozice. Zamýšlené použití zvolte před kompozicí: story na výšku, široký banner a kompaktní diagram potřebují různý prostor pro námět a případný text. Tato nastavení popisují postup generování výrobce pro tuto řadu, nikoli automatickou změnu velikosti existujícího hotového výstupu.
Pro konzistenci námětu označte roli každé reference: vzhled produktu, identitu postavy, pozadí nebo vizuální styl. Uveďte detaily, které se mají zachovat, a poté pojmenujte prvky, které se mají změnit. Originální úloha může umístit dodanou produktovou fotografii do nové scény při zachování tvaru, materiálu a viditelné značky produktu. U ilustrované posloupnosti zachovejte stejné reference a definujte, které detaily specifické pro scénu se mění. Více referencí nenahrazuje jasný pokyn k tomu, čím každý obrázek přispívá.
Konverzační úpravy jsou užitečné pro konkrétní revizi. Požadujte úpravu jednoho objektu, pozadí nebo osvětlení se zachováním přijaté kompozice. Průvodce výrobce popisuje sémantické maskování, při němž se upravovaná oblast určuje slovy. Při práci s více konverzačními kroky zachovejte konverzaci a potřebná metadata kontextu uvažování ve vybraném rozhraní; průvodce Gemini 3 vysvětluje, že podpisy myšlenek pomáhají tento kontext přenášet. Popis nezměněné oblasti je pokyn ke kontrole podle originálu, nikoli záruka, že každý pixel zůstane totožný.
Vývojářská tabulka Gemini 3 výslovně uvádí gemini-3.1-flash-image-preview s prostorem 128K pro vstup a 32K pro výstup. Při zaznamenávání generování zachovejte přesný název modelu Preview. Dostupná nastavení referencí, výstupu a rozlišení uchovávejte se zdrojovými obrázky a požadavkem, aby bylo možné revizi konzistentně reprodukovat. U revize zachovejte stejné zdrojové reference a určete přesnou vizuální změnu při zachování přijaté role každého vstupu.
Průvodce obrázky upozorňuje, že požadovaný počet obrázků nemusí být vždy dodržen, a uvádí značení SynthID pro generované obrázky. Zkontrolujte všechny vrácené obrázky i případný doprovodný text, místo abyste předpokládali, že výsledkem je jediný pevný obrázek. Při zamýšlené zobrazovací velikosti zkontrolujte identitu námětu, počet objektů, znění v obrázku, kompozici a věrnost referencím. U složité scény určete součásti v logickém pořadí a požadovaný vzhled popište pozitivně. Užitečným výsledkem je zkontrolovaný vizuální výstup se zdrojovými referencemi a přesnou identitou modelu uchovanými pro další úpravu.
Praktická úloha
Praktická úloha
Technický příklad v angličtině
Create a four-stage growing guide
Create a friendly flat illustration for a gardening guide showing four tomato-growing stages from left to right: seed in soil, small seedling, leafy plant, mature plant with red tomatoes. Use a warm cream background, consistent pots and simple green shapes. Keep each stage clearly separated. Include no text, numbers, labels or decorative extra plants.Očekávaný výsledek
An image with four distinct growing stages in the specified order and a consistent illustration style.Ověření výsledku
Inspect the actual image for exactly four stages, the left-to-right progression and absence of text or extra plants.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-image-previewÚvod
Nano Banana 2 (Gemini 3.1 Flash Image Preview) vytváří a upravuje obrázky z textu a vizuálních referencí. Mezi dokumentované silné stránky patří konzistence námětu, text v obrázku a lokalizace, konverzační změny a tvůrčí ovládání kompozice, poměru stran a rozlišení.
- Přijímané vstupy
- Text
- Výsledky
- Text
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Vstup
text- Výstup
text- Výstupní formát
- json nebo SSE
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity google/gemini-3.1-flash-image-preview | Výchozí— |
Polemessages | Typmessage[] | PožadavekPovinné | Hodnoty a limity Minimální počet položek: 1 | Výchozí— |
Polemessages[].role | Typstring | PožadavekPovinné | Hodnoty a limity Příklady: system, user, assistant, tool, function Podmínky: Tyto role jsou výslovně zastoupeny typy kompatibility zdrojového kódu; přesná sada rolí zůstává specifická pro daný model. Závisí na modelu | Výchozí— |
Polemessages[].content | Typstring|content_part[]|null | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Polemessages[].tool_calls | Typtool_call[] | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Polemessages[].tool_call_id | Typstring | PožadavekVolitelné | Hodnoty a limity Platí, když: role=tool; použijte skutečně vrácené ID | Výchozí— |
Polemessages[].name | Typstring | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Polemessages[].reasoning_content | Typstring | PožadavekVolitelné | Hodnoty a limity Platí, když: Předávejte zpět skutečně vrácené uvažování tam, kde je tento model používá | Výchozí— |
Polemessages[].reasoning_details | Typobject|array | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polemax_tokens | Typinteger | PožadavekVolitelné | Hodnoty a limity Minimum: 1 Závisí na modelu | Výchozí— |
Polemax_completion_tokens | Typinteger | PožadavekVolitelné | Hodnoty a limity Minimum: 1 Závisí na modelu | Výchozí— |
Polestream | Typboolean | PožadavekVolitelné | Hodnoty a limity | Výchozífalse |
Polestream_options.include_usage | Typboolean | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poletemperature | Typnumber | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poletop_p | Typnumber | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polestop | Typstring|string[] | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poletools | Typfunction_tool[] | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poletools[].type | Typstring | PožadavekVolitelné | Hodnoty a limity function Závisí na modelu | Výchozí— |
Poletools[].function.name | Typstring | PožadavekPovinné | Hodnoty a limity Platí, když: nástroj typu funkce je dodán | Výchozí— |
Poletools[].function.description | Typstring | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Poletools[].function.parameters | TypJSON_schema | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Poletool_choice | Typstring|object | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poleparallel_tool_calls | Typboolean | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poleresponse_format | Typobject | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polereasoning_effort | Typstring | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polereasoning | Typobject | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poleservice_tier | Typstring | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poleinstructions | Typstring | PožadavekVolitelné | Hodnoty a limity Pole kompatibility | Výchozí— |
Polefunctions | Typfunction[] | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polefunction_call | Typstring|object | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Poleprompt_cache_options | Typobject | PožadavekVolitelné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polemodalities | Typstring[] | PožadavekVolitelné | Hodnoty a limity text | Výchozí— |
Poleprovider | Typobject | PožadavekVolitelné | Hodnoty a limity Podmínky: provider.options je na této textové trase Ultra odmítáno | Výchozí— |
Polecache_control.ttl | Typstring | PožadavekVolitelné | Hodnoty a limity Podmínky: Hodnota 1h je ve skutečných umístěních mezipaměti promptů odmítána | Výchozí— |
Kombinace vstupních materiálů
Text · text UTF8
messages[].content
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages |
Parametrmaterial_types | Kontrakttext |
Parametrmessages | Kontraktpole zpráv se strukturou role/content |
Parametrfile_material | Kontraktskutečný dokument UTF-8 vložený jako doslovný text; ID souboru se neodvozuje |
Parametroptional_controls | Kontraktstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametrcontrol_scope | Kontraktspecifické pro model; nástroje uživatelských funkcí se liší od hostovaných nástrojů |
Parametroutput_modalities | Kontrakttext |
Parametrhosted_operations | Kontraktfalse |
Parametrmultimodal_input_binding | Kontraktnull |
Životní cyklus: synchronous_or_streamed
Odešlete přesné ID modelu spolu s messages.
Délka kontextu není limitem výstupu.
Textový soubor může dodat doslovný text; obrazové/zvukové vstupy a vstupy v podobě souborových objektů vyžadují přesnou vazbu.
Tarify
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Standardní sazba Při výběru rychlého režimu
- Režim flex
- Standardní sazba Při výběru režimu flex
- Maximální intenzita uvažování
- Standardní sazba Když se při maximální intenzitě uvažování použije výchozí úprava (default)
- Intenzita uvažování · vysoká
- Standardní sazba Při vysoké intenzitě uvažování
- Intenzita uvažování · minimální
- Standardní sazba Při minimální intenzitě uvažování
- Ceny explicitní mezipaměti
- Není zapnuto Při požadavku na explicitní mezipaměť
Sazby Ailoot
Ceny podle konfigurace
Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.
| Konfigurace | Tabulka sazeb | Tokeny kontextu, více než | Tokeny kontextu, do uvedené hodnoty včetně | Poplatek |
|---|---|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Tokeny kontextu, více než— | Tokeny kontextu, do uvedené hodnoty včetněBez horní meze | Poplatek Vstup · Vstupní tokeny $0.001 / 1K tokenů Výstup · Výstupní tokeny $0.006 / 1K tokenů Vstup · Čtení z mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů Výstup · Tokeny výstupního obrázku $0.12 / 1K obrazových tokenů |
| KonfiguracePásmo délky požadavku 1 | Tabulka sazeb— | Tokeny kontextu, více než0 | Tokeny kontextu, do uvedené hodnoty včetněBez horní meze | Poplatek Vstup · Vstupní tokeny $0.001 / 1K tokenů Výstup · Výstupní tokeny $0.006 / 1K tokenů Vstup · Čtení z mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů |
Podrobnosti referenčního tarifu
Referenční tabulky modelu nemění výběr metody, cenové nabídky ani poplatky. Skutečné poplatky používají sazby vybrané metody Ailoot.
google/gemini-3.1-flash-image-preview
Ceny podle konfigurace
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| Konfiguracegoogle/gemini-3.1-flash-image-preview · Výchozí konfigurace | Podmínky účtováníVýchozí konfigurace | Poplatek Vstup · Vstup 0,001 US$ / 1K tokenů Výstup · Výstup 0,12 US$ / 1K tokenů |
google/gemini-3.1-flash-image-preview
Ceny podle konfigurace
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| Konfiguracegoogle/gemini-3.1-flash-image-preview · Výchozí konfigurace | Podmínky účtováníVýchozí konfigurace | Poplatek Vstup · Vstup 0,001 US$ / 1K tokenů Výstup · Výstup 0,12 US$ / 1K tokenů |
google/gemini-3.1-flash-image-preview
Ceny podle konfigurace
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| Konfiguracegoogle/gemini-3.1-flash-image-preview · Výchozí konfigurace | Podmínky účtováníVýchozí konfigurace | Poplatek Vstup · Vstup 0,00 US$ za volání Výstup · Výstup 0,16 US$ za volání |
google/gemini-3.1-flash-image-preview
Ceny podle konfigurace
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| Konfiguracegoogle/gemini-3.1-flash-image-preview · Výchozí konfigurace | Podmínky účtováníVýchozí konfigurace | Poplatek Vstup · Vstup 0,00 US$ za volání Výstup · Výstup 0,32 US$ za volání |
google/gemini-3.1-flash-image-preview
Ceny podle konfigurace
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| Konfiguracegoogle/gemini-3.1-flash-image-preview · Výchozí konfigurace | Podmínky účtováníVýchozí konfigurace | Poplatek Vstup · Vstup 0,00 US$ za volání Výstup · Výstup 0,00 US$ za volání |
Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)
Ceny podle konfigurace
| Konfigurace | Podmínky účtování | Poplatek |
|---|---|---|
| KonfiguraceGoogle: Nano Banana 2 (Gemini 3.1 Flash Image Preview) · Výchozí konfigurace | Podmínky účtováníVýchozí konfigurace | Poplatek Vstup · Vstupní tokeny 0,001 US$ / 1K tokenů Výstup · Výstupní tokeny 0,006 US$ / 1K tokenů Výstup · Výstupní obrázek 0,12 US$ / 1K tokenů Výstup · Vyhledávání na webu 0,028 US$ za vyhledání |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-3.1-flash-image-preview", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-3.1-flash-image-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
with client.chat.completions.stream(model='google/gemini-3.1-flash-image-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Přijímání a ukládání výsledků
Ailoot Ultra · OpenAI Chat
json nebo SSE
Uchovejte všechny dokončené výsledky
Uchovejte každou úplnou vrácenou odpověď, soubor i část obsahu.
Zachovejte každou volbu a její obsah/volání nástrojů/uvažování. V SSE sestavujte přírůstky podle indexu volby/nástroje a zachovejte konečný důvod ukončení i údaje o využití.
Pokud je nutné ověřit původní odpověď
Zachovejte ID požadavků/odpovědí a hlavičky. Není dodána obecná URL pro načtení textové úlohy.
Pole odpovědi
| Pole | Typ |
|---|---|
Polechoices[].index | Typinteger |
Polechoices[].message.content | Typstring|null |
Polechoices[].message.tool_calls | Typtool_call[] |
Polechoices[].message.reasoning_content | Typstring |
Polechoices[].message.reasoning_details | Typobject|array |
Polechoices[].finish_reason | Typstring|null |
Poleusage | Typobject |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Aliasy
Aliasy modelu
Ailoot Ultra google/gemini-3.1-flash-image-preview
Aliasy cest metod
/v1/images
Související ID modelů
Ailoot Ultra · Obrázky POST /v1/images/generations google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-image-previewÚvod
Nano Banana 2 (Gemini 3.1 Flash Image Preview) vytváří a upravuje obrázky z textu a vizuálních referencí. Mezi dokumentované silné stránky patří konzistence námětu, text v obrázku a lokalizace, konverzační změny a tvůrčí ovládání kompozice, poměru stran a rozlišení.
- Přijímané vstupy
- Text · Obrázky
- Výsledky
- Obrázky
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · Obrázky POST /v1/images/generations
- Vstup
text,image- Výstup
image
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity google/gemini-3.1-flash-image-preview | Výchozí— |
Poleprompt | Typstring | PožadavekPovinné | Hodnoty a limity Minimální délka: 1 | Výchozí— |
Poleresolution | Typstring | PožadavekVolitelné | Hodnoty a limity 512, 1K, 2K, 4K | Výchozí— |
Poleaspect_ratio | Typstring | PožadavekVolitelné | Hodnoty a limity 1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9 | Výchozí— |
Polen | Typinteger | PožadavekVolitelné | Hodnoty a limity Minimum: 1 Maximum: 1 | Výchozí— |
Poleinput_references | Typarray | PožadavekVolitelné | Hodnoty a limity Minimální počet položek: 0 Maximální počet položek: 14 | Výchozí— |
Poleprovider | Typobject | PožadavekVolitelné | Hodnoty a limity | Výchozí— |
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, prompt |
Parametrmaterial_types | Kontrakttext, image |
Životní cyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · skutečně vrácené task_id nebo záznam v knihovně médií
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Tarify
Jak se vypočítá konečný poplatek
Zobrazené sazby slouží k odhadu ceny před generováním. Konečný poplatek se vypočítá z nákladů zaznamenaných u původního generování. Naměřená délka výstupu ani odhadovaná množství nejsou konečným účtovaným množstvím.
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Neuvedeno Při výběru rychlého režimu
- Režim flex
- Neuvedeno Při výběru režimu flex
- Maximální intenzita uvažování
- Neuvedeno Když se při maximální intenzitě uvažování použije výchozí úprava (default)
Odhadované sazby pro srovnání
Ceny podle konfigurace
Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.
| Konfigurace | Tabulka sazeb | Předpokládané množství | Poplatek |
|---|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Předpokládané množství— | Poplatek Vstup · Vstupní tokeny · Odhad pouze pro srovnání — / 1K tokenů Výstup · Výstupní tokeny · Odhad pouze pro srovnání — / 1K tokenů Vstup · Čtení z mezipaměti · Odhad pouze pro srovnání — / 1K tokenů Vstup · Zápis do mezipaměti · Odhad pouze pro srovnání — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina · Odhad pouze pro srovnání — / 1K tokenů |
| KonfiguraceOdhadovaná cena generování | Tabulka sazeb— | Předpokládané množstvíodhad pro jedno generování | Poplatek Výstup · Odhadovaná cena generování · Odhad pouze pro srovnání $0.49152 odhad před generováním Tento odhad není dodatečným poplatkem ani pevnou sazbou za dokončené generování. |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot Ultra · Obrázky
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'google/gemini-3.1-flash-image-preview', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Přijímání a ukládání výsledků
Ailoot Ultra · Obrázky
Stáhněte každý vrácený obrázek nebo uložte jeho obsah Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Další načtení obsahu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Uchovejte všechny dokončené výsledky
Uložte každý dokončený obrázek; stáhněte obsah každé vrácené URL nebo dekódujte obsah Base64.
Uchovejte úplnou odpověď a hlavičky, všechny skutečné výstupy, původní vrácené identifikátory a všechna pole s údaji o využití. Obnovte původní operaci bez opětovného odeslání požadavku na vytvoření.
Pokud je nutné ověřit původní odpověď
Uchovejte vrácené X-Client-Request-ID pro spárování záznamů. Načítejte pouze skutečně vrácené hodnoty task_id/asset_id nebo vlastní knihovnu médií; nikdy nevytvářejte URL úlohy z ID operace a nikdy znovu neodesílejte požadavek na vytvoření.
Pole odpovědi
| Pole | Typ |
|---|---|
Polecreated | Typ |
Poledata[].url | Typ |
Poledata[].b64_json | Typ |
Poleusage | Typ |
Aliasy
Aliasy modelu
Ailoot Ultra google/gemini-3.1-flash-image-preview
Aliasy cest metod
/v1/images
Související ID modelů
Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-image-preview
google/gemini-3.1-flash-image-previewÚvod
Nano Banana 2 (Gemini 3.1 Flash Image Preview) vytváří a upravuje obrázky z textu a vizuálních referencí. Mezi dokumentované silné stránky patří konzistence námětu, text v obrázku a lokalizace, konverzační změny a tvůrčí ovládání kompozice, poměru stran a rozlišení.
- Přijímané vstupy
- Text
- Výsledky
- json · sse
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Vstup
text- Výstup
json,sse- Výstupní formát
- JSON nebo SSE
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity google/gemini-3.1-flash-image-preview | Výchozí— |
Polemessages | Typmessage[] | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polemessages[].role | Typstring | PožadavekPovinné | Hodnoty a limity user, assistant | Výchozí— |
Polemessages[].content | Typstring | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polemax_tokens | Typinteger | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polestream | Typboolean | PožadavekVolitelné | Hodnoty a limity | Výchozífalse |
Kombinace vstupních materiálů
Text · text UTF-8
řetězec messages[].content
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages, max_tokens |
Parametroptional_controls | Kontraktstream |
Parametrmaterial_types | Kontrakttext |
Parametrtext_file_material | KontraktPřečtěte skutečný dokument UTF-8 a vložte jeho text do uvedeného pole input nebo do řetězce obsahu zprávy. |
Životní cyklus: synchronous_or_streamed
Tarify
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Standardní sazba Při výběru rychlého režimu
- Režim flex
- Standardní sazba Při výběru režimu flex
- Maximální intenzita uvažování
- Standardní sazba Když se při maximální intenzitě uvažování použije výchozí úprava (default)
- Intenzita uvažování · vysoká
- Standardní sazba Při vysoké intenzitě uvažování
- Intenzita uvažování · minimální
- Standardní sazba Při minimální intenzitě uvažování
- Ceny explicitní mezipaměti
- Není zapnuto Při požadavku na explicitní mezipaměť
Sazby Ailoot
Ceny podle konfigurace
Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.
| Konfigurace | Tabulka sazeb | Tokeny kontextu, více než | Tokeny kontextu, do uvedené hodnoty včetně | Poplatek |
|---|---|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Tokeny kontextu, více než— | Tokeny kontextu, do uvedené hodnoty včetněBez horní meze | Poplatek Vstup · Vstupní tokeny $0.001 / 1K tokenů Výstup · Výstupní tokeny $0.006 / 1K tokenů Vstup · Čtení z mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů Výstup · Tokeny výstupního obrázku $0.12 / 1K obrazových tokenů |
| KonfiguracePásmo délky požadavku 1 | Tabulka sazeb— | Tokeny kontextu, více než0 | Tokeny kontextu, do uvedené hodnoty včetněBez horní meze | Poplatek Vstup · Vstupní tokeny $0.001 / 1K tokenů Výstup · Výstupní tokeny $0.006 / 1K tokenů Vstup · Čtení z mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti — / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot Ultra · Anthropic Messages
{
"model": "google/gemini-3.1-flash-image-preview",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3.1-flash-image-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3.1-flash-image-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Přijímání a ukládání výsledků
Ailoot Ultra · Anthropic Messages
JSON nebo SSE
Uchovejte všechny dokončené výsledky
Uchovejte každou úplnou vrácenou odpověď, soubor i část obsahu.
Zachovejte všechny bloky obsahu, podpisy uvažování a skutečná ID použití nástrojů. Sestavte všechny přírůstky bloků SSE; první textový blok není úplný výstup.
Pokud je nutné ověřit původní odpověď
Zachovejte ID požadavků/odpovědí a hlavičky. Není dodána obecná URL pro načtení textové úlohy.
Pole odpovědi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Aliasy
Aliasy modelu
Ailoot Ultra google/gemini-3.1-flash-image-preview
Aliasy cest metod
/v1/images
Související ID modelů
FAQ · Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)
- Jaké vstupy a výsledky jsou dostupné?
POST /v1/chat/completions·google/gemini-3.1-flash-image-preview:text→textPOST /v1/images/generations·google/gemini-3.1-flash-image-preview:text,image→imagePOST /v1/messages·google/gemini-3.1-flash-image-preview:text→json,sse- Jaká pole požadavek používá?
POST /v1/chat/completions·google/gemini-3.1-flash-image-preview:model,messages,stream,modalities,providerPOST /v1/images/generations·google/gemini-3.1-flash-image-preview:model,prompt,resolution,aspect_ratio,n,input_references,providerPOST /v1/messages·google/gemini-3.1-flash-image-preview:model,messages,max_tokens,stream- Jaké limity platí?
POST /v1/chat/completions·google/gemini-3.1-flash-image-preview:messages.min_items:1POST /v1/images/generations·google/gemini-3.1-flash-image-preview:n.minimum:1;n.maximum:1