Google: Nano Banana 2.1
Gemini Nano Banana 2.1 generuje a konverzačne upravuje obrázky z textu a vizuálneho materiálu. Zlepšuje vykresľovanie textu, rozloženie infografiky a konzistentnosť medzi krokmi konverzácie s výstupom 1K–4K a najviac 14 referenčnými obrázkami pre určené vizuálne zadanie.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgoogle/gemini-nano-banana-2.1 - Ailoot Ultra · Obrázky
POST /v1/images/generationsgoogle/gemini-nano-banana-2.1 - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgoogle/gemini-nano-banana-2.1
O modeli
Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.
Gemini Nano Banana 2.1 je model Google na generovanie obrázkov a konverzačné úpravy. Je aktualizáciou Nano Banana 2 so zlepšeniami vizuálnej realistickosti, dodržiavania pokynov, vykresľovania textu a konzistentnosti postáv v následných úpravách. Tabuľka vstupov zahŕňa text, obrázky, video a PDF, zatiaľ čo výstupom sú obrázky a text. Je preto užitočný na produktovú scénu, infografiku alebo vizuálnu sériu rozvíjanú viacerými konkrétnymi úpravami.
Model ponúka výstup 1K, 2K a 4K s predvolenou voľbou 1K. Nepreberá možnosť 0,5K z Nano Banana 2. Dokumentované pomery strán zahŕňajú 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 a 21:9 aj vysoké alebo panoramatické formáty 1:4, 4:1, 1:8 a 8:1. Google uvádza opravy dlaždicových artefaktov v týchto širokých a vysokých formátoch pri 2K a 4K. Označenia rozlíšenia sú veľkostné úrovne, nie jeden pevný obdĺžnik: štvorcový obrázok 4K má 4096 × 4096, zatiaľ čo dokumentovaný výstup 4K s pomerom 16:9 má 5504 × 3072.
Text je podstatnou súčasťou vizuálneho postupu. Model je navrhnutý na vykreslenie čitateľného štylizovaného znenia a presnejšie usporiadanie prvkov infografiky. Pripravte presný nadpis, označenia a poradie čítania a potom požiadajte o obrázok s týmto schváleným textom. Pri menu, diagrame alebo náučnej grafike pomenujte vzťah popisu a jeho vizuálneho prvku. Google odporúča najprv vytvoriť znenie a až potom žiadať obrázok, aby vizuálna kompozícia začínala ustáleným textovým zadaním.
Spájanie referenčných obrázkov podporuje najviac 14 obrázkov. Dokumentovaný profil zahŕňa konzistentnosť najviac štyroch postáv a vernosť najviac desiatich predmetov. Každej referencii priraďte úlohu: produkt, ktorý musí zostať rozpoznateľný, vzhľad postavy, zamýšľané pozadie alebo vizuálny štýl. Príklad produktového zadania je: „Použite obrázok A pre tvar a etiketu fľaše. Obrázok B použite pre povrch a osvetlenie. Produkt nechajte nezmenený, umiestnite ho vedľa zloženého uteráka a nad ním ponechajte voľný priestor na dodaný nadpis.“
Podloženie cez Google Web Search a Image Search môže generovaniu poskytnúť aktuálne informácie a vizuálny kontext. Image Search dodáva vyhľadané webové obrázky ako referencie; bežné podloženie webovým vyhľadávaním dodáva informácie o subjekte. Je to užitočné pri faktickej grafike alebo scéne, ktorej vzhľad závisí od skutočného predmetu. Postup vyhľadávania obrázkov na tento účel nepodporuje získavanie skutočných fotografií ľudí. Podložené odpovede v dokumentovanom postupe Google obsahujú metadáta zdrojov a atribúcie, preto ich aplikácia má uchovať s generovaným výsledkom.
Premýšľanie možno nastaviť na úrovne minimal, medium a high, pričom pre tento presný model je predvolená medium. Pomáha modelu premyslieť kompozíciu a zložitejšie pokyny pred konečným výstupom. Sprievodca obrázkami opisuje priebežné kompozičné obrázky v tomto procese; sú odlišné od zamýšľaného konečného výstupu. Požadované konečné rozloženie, pomer strán a rozlíšenie určite explicitne namiesto očakávania, že samotný opis v prompte pevne nastaví každý výstupný parameter.
Konverzačné úpravy umožňujú nadväzujúcou požiadavkou zmeniť jednu časť existujúceho výsledku: upraviť svetlo, presunúť predmet alebo preložiť označenia pri zachovaní zvyšku kompozície. Skorší obrázok alebo interakciu preneste do ďalšieho kroku konverzácie a určite požadovanú zmenu aj črty, ktoré sa majú zachovať. Pri sérii s postavou ponechajte rovnaké referencie vzhľadu a pri dôležitom novom uhle alebo zložitej póze použite referenciu pózy. Praktické zadanie úpravy môže znieť: „Zachovajte produkt, označenia a rozloženie; iba pozadie zmeňte na teplejšiu sivú.“
Tabuľka modelu uvádza vstupný limit 131 072 tokenov a výstupný limit 32 768 tokenov. Generovanie obrázkov a podloženie vyhľadávaním sú podporované, zatiaľ čo generovanie zvuku, vykonávanie kódu, volanie funkcií, štruktúrované výstupy, vyrovnávacia pamäť, vyhľadávanie súborov, kontext URL a Live API nie sú pre túto edíciu uvedené ako podporované. Video môže poskytnúť podklady pre generovaný statický obrázok; nerobí z tohto modelu generátor videa. Google tiež uvádza, že požiadavka na presný počet obrázkov nemusí tento počet vytvoriť. Všetky generované obrázky obsahujú vodoznak SynthID.
Pri užitočnom prvom zadaní uveďte účel obrázka, subjekt, kompozíciu, osvetlenie, pohľad kamery, požadovaný text a tvar výstupu. Požiadajte napríklad o infografiku na výšku s tromi označenými krokmi, čitateľným nadpisom a určenou farebnou hierarchiou a pred ďalšou úpravou skontrolujte znenie a vzájomné umiestnenie prvkov. Výsledok sa môže stať produktovou ilustráciou, redakčnou grafikou alebo dizajnovou referenciou, pričom vybraný obrázok a jeho vysvetľujúci text zostanú uložené spoločne.
Praktická úloha
Praktická úloha
Technický príklad v angličtine
Refine an approved poster background
Edit the supplied event poster. Preserve every word, the headline hierarchy, illustration placement and portrait composition. Change only the background from cool white to warm ivory, keeping dark text readable and retaining the original accent color. Do not add shapes, badges, textures or extra captions. Return the revised poster image.Očakávaný výsledok
One edited poster with the original wording and layout preserved over a warm ivory background.Overenie výsledku
Compare every word and element position against the supplied poster, then inspect text contrast.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-nano-banana-2.1
google/gemini-nano-banana-2.1Úvod
Gemini Nano Banana 2.1 generuje a konverzačne upravuje obrázky z textu a vizuálneho materiálu. Zlepšuje vykresľovanie textu, rozloženie infografiky a konzistentnosť medzi krokmi konverzácie s výstupom 1K–4K a najviac 14 referenčnými obrázkami pre určené vizuálne zadanie.
- Povolené vstupy
- Text
- Výsledky
- Text
Dostupné v Ailoot · vstupy a metódy
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Vstup
text- Výstup
text- Výstupný formát
- json alebo SSE
| Pole | Typ | Požiadavka | Hodnoty a limity | Predvolené |
|---|---|---|---|---|
Polemodel | Typstring | PožiadavkaPovinné | Hodnoty a limity google/gemini-nano-banana-2.1 | Predvolené— |
Polemessages | Typmessage[] | PožiadavkaPovinné | Hodnoty a limity Minimálny počet položiek: 1 | Predvolené— |
Polemessages[].role | Typstring | PožiadavkaPovinné | Hodnoty a limity Príklady: system, user, assistant, tool, function Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu. Závisí od modelu | Predvolené— |
Polemessages[].content | Typstring|content_part[]|null | PožiadavkaVoliteľné | Hodnoty a limity | Predvolené— |
Polemessages[].tool_calls | Typtool_call[] | PožiadavkaVoliteľné | Hodnoty a limity | Predvolené— |
Polemessages[].tool_call_id | Typstring | PožiadavkaVoliteľné | Hodnoty a limity Platí, keď: role=tool; použite skutočne vrátené ID | Predvolené— |
Polemessages[].name | Typstring | PožiadavkaVoliteľné | Hodnoty a limity | Predvolené— |
Polemessages[].reasoning_content | Typstring | PožiadavkaVoliteľné | Hodnoty a limity Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa | Predvolené— |
Polemessages[].reasoning_details | Typobject|array | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Polemax_tokens | Typinteger | PožiadavkaVoliteľné | Hodnoty a limity Minimum: 1 Závisí od modelu | Predvolené— |
Polemax_completion_tokens | Typinteger | PožiadavkaVoliteľné | Hodnoty a limity Minimum: 1 Závisí od modelu | Predvolené— |
Polestream | Typboolean | PožiadavkaVoliteľné | Hodnoty a limity | Predvolenéfalse |
Polestream_options.include_usage | Typboolean | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poletemperature | Typnumber | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poletop_p | Typnumber | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Polestop | Typstring|string[] | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poletools | Typfunction_tool[] | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poletools[].type | Typstring | PožiadavkaVoliteľné | Hodnoty a limity function Závisí od modelu | Predvolené— |
Poletools[].function.name | Typstring | PožiadavkaPovinné | Hodnoty a limity Platí, keď: poskytnutý nástroj typu funkcia | Predvolené— |
Poletools[].function.description | Typstring | PožiadavkaVoliteľné | Hodnoty a limity | Predvolené— |
Poletools[].function.parameters | TypJSON_schema | PožiadavkaVoliteľné | Hodnoty a limity | Predvolené— |
Poletool_choice | Typstring|object | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poleparallel_tool_calls | Typboolean | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poleresponse_format | Typobject | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Polereasoning_effort | Typstring | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Polereasoning | Typobject | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poleservice_tier | Typstring | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poleinstructions | Typstring | PožiadavkaVoliteľné | Hodnoty a limity Pole kompatibility | Predvolené— |
Polefunctions | Typfunction[] | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Polefunction_call | Typstring|object | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Poleprompt_cache_options | Typobject | PožiadavkaVoliteľné | Hodnoty a limity Závisí od modelu | Predvolené— |
Polemodalities | Typstring[] | PožiadavkaVoliteľné | Hodnoty a limity text | Predvolené— |
Poleprovider | Typobject | PožiadavkaVoliteľné | Hodnoty a limity Podmienky: provider.options sa na tejto textovej trase Ultra odmieta | Predvolené— |
Polecache_control.ttl | Typstring | PožiadavkaVoliteľné | Hodnoty a limity Podmienky: Hodnota 1h sa v skutočne používaných poliach cache promptov odmieta | Predvolené— |
Kombinácie vstupných podkladov
Text · Text UTF8
messages[].content
Parametre a životný cyklus metódy
| Parameter | Špecifikácia |
|---|---|
Parametercontent_type | Špecifikáciaapplication/json |
Parameterrequired | Špecifikáciamodel, messages |
Parametermaterial_types | Špecifikáciatext |
Parametermessages | Špecifikáciapole správ so štruktúrou role/content |
Parameterfile_material | Špecifikáciaskutočný dokument UTF-8 vložený ako doslovný text; ID súboru sa neodvodzuje |
Parameteroptional_controls | Špecifikáciastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | Špecifikáciazávisí od modelu; používateľské nástroje typu funkcia sa líšia od nástrojov prevádzkovaných službou |
Parameteroutput_modalities | Špecifikáciatext |
Parameterhosted_operations | Špecifikáciafalse |
Parametermultimodal_input_binding | Špecifikácianull |
Životný cyklus: synchronous_or_streamed
Pošlite presné ID modelu spolu s messages.
Dĺžka kontextu nie je horná hranica výstupu.
Textový súbor môže poskytnúť doslovný text; obrazové a zvukové vstupy a vstupy so súborovými objektmi potrebujú presné naviazanie.
Cenník
Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.
- Rýchly režim
- Štandardná sadzba Keď je zvolený rýchly režim
- Režim Flex
- Štandardná sadzba Keď je zvolený režim flex
- Maximálna úroveň uvažovania
- Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
- Úroveň uvažovania · vysoká
- Štandardná sadzba Keď je úroveň uvažovania vysoká
- Úroveň uvažovania · minimálna
- Štandardná sadzba Keď je úroveň uvažovania minimálna
- Ceny explicitnej cache
- Nie je zapnuté Keď sa požaduje explicitná cache
Sadzby Ailoot
Ceny podľa konfigurácie
Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.
| Konfigurácia | Sadzobník | Počet tokenov kontextu väčší než | Tokeny kontextu, najviac (vrátane hranice) | Poplatok |
|---|---|---|---|---|
| KonfiguráciaZákladné sadzby za tokeny | SadzobníkZákladná sadzba | Počet tokenov kontextu väčší než— | Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranice | Poplatok Vstup · Vstupné tokeny $0.003 / 1K tokenov Výstup · Výstupné tokeny $0.015 / 1K tokenov Vstup · Čítanie cache — / 1K tokenov Vstup · Zápis do cache — / 1K tokenov Vstup · Zápis do cache, 1 hod — / 1K tokenov Výstup · Tokeny výstupného obrázka $0.06 / 1K obrazových tokenov |
| KonfiguráciaPásmo dĺžky požiadavky 1 | Sadzobník— | Počet tokenov kontextu väčší než0 | Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranice | Poplatok Vstup · Vstupné tokeny $0.003 / 1K tokenov Výstup · Výstupné tokeny $0.015 / 1K tokenov Vstup · Čítanie cache — / 1K tokenov Vstup · Zápis do cache — / 1K tokenov Vstup · Zápis do cache, 1 hod — / 1K tokenov |
Podrobnosti referenčnej tarify
Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.
Google: Nano Banana 2.1
Ceny podľa konfigurácie
| Konfigurácia | Podmienky účtovania | Poplatok |
|---|---|---|
| KonfiguráciaGoogle: Nano Banana 2.1 · Predvolená konfigurácia | Podmienky účtovaniaPredvolená konfigurácia | Poplatok Vstup · Vstupné tokeny 0,003 USD / 1K tokenov Výstup · Výstupné tokeny 0,015 USD / 1K tokenov Výstup · Výstupný obrázok 0,06 USD / 1K tokenov Výstup · Vyhľadávanie na webe 0,028 USD za vyhľadávanie |
Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →
Príklady požiadaviek
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-nano-banana-2.1", "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-nano-banana-2.1',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-nano-banana-2.1',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")
Prijať a uložiť výsledky
Ailoot Ultra · OpenAI Chat
json alebo SSE
Uchovať všetky dokončené výsledky
Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.
Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.
Ak treba overiť pôvodnú odpoveď
Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.
Polia odpovede
| 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 ďalšie kroky
| Odpoveď | Podmienka | Ďalší krok |
|---|---|---|
Odpoveď400 · invalid_request_error | PodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametra | Ďalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia. |
Aliasy
Aliasy modelov
Ailoot Ultra google/gemini-nano-banana-2.1
Aliasy ciest metód
/v1/images
Súvisiace ID na volanie
Ailoot Ultra · Obrázky POST /v1/images/generations google/gemini-nano-banana-2.1
google/gemini-nano-banana-2.1Úvod
Gemini Nano Banana 2.1 generuje a konverzačne upravuje obrázky z textu a vizuálneho materiálu. Zlepšuje vykresľovanie textu, rozloženie infografiky a konzistentnosť medzi krokmi konverzácie s výstupom 1K–4K a najviac 14 referenčnými obrázkami pre určené vizuálne zadanie.
- Povolené vstupy
- Text · Obrázky
- Výsledky
- Obrázky
Dostupné v Ailoot · vstupy a metódy
Ailoot Ultra · Obrázky POST /v1/images/generations
- Vstup
text,image- Výstup
image
| Pole | Typ | Požiadavka | Hodnoty a limity | Predvolené |
|---|---|---|---|---|
Polemodel | Typstring | PožiadavkaPovinné | Hodnoty a limity google/gemini-nano-banana-2.1 | Predvolené— |
Poleprompt | Typstring | PožiadavkaPovinné | Hodnoty a limity Minimálna dĺžka: 1 | Predvolené— |
Poleresolution | Typstring | PožiadavkaVoliteľné | Hodnoty a limity 1K, 2K, 4K | Predvolené— |
Poleaspect_ratio | Typstring | PožiadavkaVoliteľné | 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 | Predvolené— |
Polen | Typinteger | PožiadavkaVoliteľné | Hodnoty a limity Minimum: 1 Maximum: 1 | Predvolené— |
Poleinput_references | Typarray | PožiadavkaVoliteľné | Hodnoty a limity Minimálny počet položiek: 0 Maximálny počet položiek: 14 | Predvolené— |
Poleprovider | Typobject | PožiadavkaVoliteľné | Hodnoty a limity | Predvolené— |
Parametre a životný cyklus metódy
| Parameter | Špecifikácia |
|---|---|
Parametercontent_type | Špecifikáciaapplication/json |
Parameterrequired | Špecifikáciamodel, prompt |
Parametermaterial_types | Špecifikáciatext, image |
Životný cyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · skutočne vrátené task_id alebo záznam v knižnici médií
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Cenník
Ako sa vypočíta konečný poplatok
Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.
Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.
- Rýchly režim
- Neuvedené Keď je zvolený rýchly režim
- Režim Flex
- Neuvedené Keď je zvolený režim flex
- Maximálna úroveň uvažovania
- Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Odhadované sadzby na porovnanie
Ceny podľa konfigurácie
Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.
| Konfigurácia | Sadzobník | Odhadované množstvo | Poplatok |
|---|---|---|---|
| KonfiguráciaZákladné sadzby za tokeny | SadzobníkZákladná sadzba | Odhadované množstvo— | Poplatok Vstup · Vstupné tokeny · Odhad iba na porovnanie — / 1K tokenov Výstup · Výstupné tokeny · Odhad iba na porovnanie — / 1K tokenov Vstup · Čítanie cache · Odhad iba na porovnanie — / 1K tokenov Vstup · Zápis do cache · Odhad iba na porovnanie — / 1K tokenov Vstup · Zápis do cache, 1 hod · Odhad iba na porovnanie — / 1K tokenov |
| KonfiguráciaOdhadované náklady na generovanie | Sadzobník— | Odhadované množstvoodhad pre jedno generovanie | Poplatok Výstup · Odhadované náklady na generovanie · Odhad iba na porovnanie $0.24576 odhad pred generovaním Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie. |
Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →
Príklady požiadaviek
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-nano-banana-2.1', '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
Prijať a uložiť výsledky
Ailoot Ultra · Obrázky
Stiahnite každý vrátený obrázok alebo 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}
Čítanie ďalšieho 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.
Uchovať všetky dokončené výsledky
Uložte každý dokončený obrázok; stiahnite obsah z každej vrátenej URL alebo dekódujte jeho obsah Base64.
Uchovajte úplnú odpoveď a hlavičky, všetky skutočné výstupy, pôvodné vrátené identifikátory a všetky polia s údajmi o spotrebe. Obnovte pôvodnú operáciu bez opätovného odoslania požiadavky na vytvorenie.
Ak treba overiť pôvodnú odpoveď
Uchovajte vrátené X-Client-Request-ID na zosúladenie záznamov. Čítajte iba skutočne vrátené hodnoty task_id/asset_id alebo vlastnú knižnicu médií; nikdy nevytvárajte URL úlohy z ID operácie a nikdy znova neodosielajte požiadavku na vytvorenie.
Polia odpovede
| Pole | Typ |
|---|---|
Polecreated | Typ |
Poledata[].url | Typ |
Poledata[].b64_json | Typ |
Poleusage | Typ |
Aliasy
Aliasy modelov
Ailoot Ultra google/gemini-nano-banana-2.1
Aliasy ciest metód
/v1/images
Súvisiace ID na volanie
Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-nano-banana-2.1
google/gemini-nano-banana-2.1Úvod
Gemini Nano Banana 2.1 generuje a konverzačne upravuje obrázky z textu a vizuálneho materiálu. Zlepšuje vykresľovanie textu, rozloženie infografiky a konzistentnosť medzi krokmi konverzácie s výstupom 1K–4K a najviac 14 referenčnými obrázkami pre určené vizuálne zadanie.
- Povolené vstupy
- Text
- Výsledky
- json · sse
Dostupné v Ailoot · vstupy a metódy
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Vstup
text- Výstup
json,sse- Výstupný formát
- JSON alebo SSE
| Pole | Typ | Požiadavka | Hodnoty a limity | Predvolené |
|---|---|---|---|---|
Polemodel | Typstring | PožiadavkaPovinné | Hodnoty a limity google/gemini-nano-banana-2.1 | Predvolené— |
Polemessages | Typmessage[] | PožiadavkaPovinné | Hodnoty a limity | Predvolené— |
Polemessages[].role | Typstring | PožiadavkaPovinné | Hodnoty a limity user, assistant | Predvolené— |
Polemessages[].content | Typstring | PožiadavkaPovinné | Hodnoty a limity | Predvolené— |
Polemax_tokens | Typinteger | PožiadavkaPovinné | Hodnoty a limity | Predvolené— |
Polestream | Typboolean | PožiadavkaVoliteľné | Hodnoty a limity | Predvolenéfalse |
Kombinácie vstupných podkladov
Text · Text UTF-8
reťazec messages[].content
Parametre a životný cyklus metódy
| Parameter | Špecifikácia |
|---|---|
Parametercontent_type | Špecifikáciaapplication/json |
Parameterrequired | Špecifikáciamodel, messages, max_tokens |
Parameteroptional_controls | Špecifikáciastream |
Parametermaterial_types | Špecifikáciatext |
Parametertext_file_material | ŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy. |
Životný cyklus: synchronous_or_streamed
Cenník
Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.
- Rýchly režim
- Štandardná sadzba Keď je zvolený rýchly režim
- Režim Flex
- Štandardná sadzba Keď je zvolený režim flex
- Maximálna úroveň uvažovania
- Štandardná sadzba Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
- Úroveň uvažovania · vysoká
- Štandardná sadzba Keď je úroveň uvažovania vysoká
- Úroveň uvažovania · minimálna
- Štandardná sadzba Keď je úroveň uvažovania minimálna
- Ceny explicitnej cache
- Nie je zapnuté Keď sa požaduje explicitná cache
Sadzby Ailoot
Ceny podľa konfigurácie
Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.
| Konfigurácia | Sadzobník | Počet tokenov kontextu väčší než | Tokeny kontextu, najviac (vrátane hranice) | Poplatok |
|---|---|---|---|---|
| KonfiguráciaZákladné sadzby za tokeny | SadzobníkZákladná sadzba | Počet tokenov kontextu väčší než— | Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranice | Poplatok Vstup · Vstupné tokeny $0.003 / 1K tokenov Výstup · Výstupné tokeny $0.015 / 1K tokenov Vstup · Čítanie cache — / 1K tokenov Vstup · Zápis do cache — / 1K tokenov Vstup · Zápis do cache, 1 hod — / 1K tokenov Výstup · Tokeny výstupného obrázka $0.06 / 1K obrazových tokenov |
| KonfiguráciaPásmo dĺžky požiadavky 1 | Sadzobník— | Počet tokenov kontextu väčší než0 | Tokeny kontextu, najviac (vrátane hranice)Bez hornej hranice | Poplatok Vstup · Vstupné tokeny $0.003 / 1K tokenov Výstup · Výstupné tokeny $0.015 / 1K tokenov Vstup · Čítanie cache — / 1K tokenov Vstup · Zápis do cache — / 1K tokenov Vstup · Zápis do cache, 1 hod — / 1K tokenov |
Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →
Príklady požiadaviek
Ailoot Ultra · Anthropic Messages
{
"model": "google/gemini-nano-banana-2.1",
"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-nano-banana-2.1', '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-nano-banana-2.1', '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))
Prijať a uložiť výsledky
Ailoot Ultra · Anthropic Messages
JSON alebo SSE
Uchovať všetky dokončené výsledky
Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.
Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.
Ak treba overiť pôvodnú odpoveď
Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.
Polia odpovede
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Chyby a ďalšie kroky
| Odpoveď | Podmienka | Ďalší krok |
|---|---|---|
Odpoveď400 · invalid_request_error | PodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametra | Ďalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia. |
Aliasy
Aliasy modelov
Ailoot Ultra google/gemini-nano-banana-2.1
Aliasy ciest metód
/v1/images
Súvisiace ID na volanie
FAQ · Google: Nano Banana 2.1
- Aké vstupy a výsledky sú dostupné?
POST /v1/chat/completions·google/gemini-nano-banana-2.1:text→textPOST /v1/images/generations·google/gemini-nano-banana-2.1:text,image→imagePOST /v1/messages·google/gemini-nano-banana-2.1:text→json,sse- Aké polia používa požiadavka?
POST /v1/chat/completions·google/gemini-nano-banana-2.1:model,messages,stream,modalities,providerPOST /v1/images/generations·google/gemini-nano-banana-2.1:model,prompt,resolution,aspect_ratio,n,input_references,providerPOST /v1/messages·google/gemini-nano-banana-2.1:model,messages,max_tokens,stream- Aké limity platia?
POST /v1/chat/completions·google/gemini-nano-banana-2.1:messages.min_items:1POST /v1/images/generations·google/gemini-nano-banana-2.1:n.minimum:1;n.maximum:1