Google: Nano Banana 2 (Gemini 3.1 Flash Image)
Nano Banana 2 (Gemini 3.1 Flash Image) диалогта кескіндер жасайды және өңдейді. Ол тауар көріністері, инфографика және қайталанбалы көрнекі жұмыс үшін мәтін мен көрнекі дереккөздерді, 0.5K–4K шығысты, референстік кескіндерді біріктіріп композиция жасауды және іздеу арқылы негіздеуді қолдайды.
- Ailoot · Суреттер
POST /v1/images/generationsgemini-3.1-flash-image - Ailoot Ultra · OpenAI чаты
POST /v1/chat/completionsgoogle/gemini-3.1-flash-image - Ailoot Ultra · Суреттер
POST /v1/images/generationsgoogle/gemini-3.1-flash-image - Ailoot Ultra · Anthropic хабарламалары
POST /v1/messagesgoogle/gemini-3.1-flash-image
Модель туралы
Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.
Nano Banana 2 — кескіндерді тікелей жасауға және диалогтік өңдеуге арналған Google компаниясының Gemini 3.1 Flash Image моделі. Оның дизайны көрнекі материалдарды тиімді жасауға және қайталанатын түзетулерге басымдық береді. Құжатталған API профилі мәтін, кескін, бейне және PDF қабылдап, кескін мен мәтін қайтарады. Бұл кейінгі әр Nano Banana жаңартуының белгісі емес, Gemini Nano Banana 2.1 моделінен бөлек атаулы нұсқа.
Шығыс өлшемдеріне 0.5K, 1K, 2K және 4K кіреді; әдепкісі — 1K. Кіші 0.5K таңдауы осы профильге тән және алғашқы композицияға сай болуы мүмкін; үлкен санаттар таңдалған шығыс пішініне көбірек пиксель береді. Құжатталған арақатынастар шаршы, тік және көлденең пішімдерді, соның ішінде 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 және 21:9, сондай-ақ қосымша 1:4, 4:1, 1:8 және 8:1 пішімдерін қамтиды. Мысалы, шаршы шығыс 0.5K кезіндегі 512 × 512-ден 4K кезіндегі 4096 × 4096-ге дейін өзгереді. Ұсақ бөлшектерді жетілдірмес бұрын көзделген орналастыруға сай пішінді таңдаңыз.
Google осы нұсқаның жаңартулары арасында кескін ені мен биіктігінің арақатынасын жақсырақ сақтау, көрнекі бірізділік және көптілді мәтін бейнелеуді атайды. Постер, мәзір не инфографикаға нақты сөздерді қолданып, қай белгі қай нысанға тиесілі екенін анықтаңыз. Модель картасы ұсақ мәтін не ұзақ үзінді үшін, әсіресе 1K кезінде, оқылым шектеулері қалғанын хабарлайды. Түсіндірме жазуларды қысқа ұстап, салыстырмалы өлшемін айқын беріңіз; тығыз негізгі мәтінде кескінді көрнекі орналасу референсі ретінде қарап, нақты әріптерді мұқият тексеріңіз.
Бір үдерісте 14-ке дейін референстік кескінді біріктіруге болады. Кескін нұсқаулығы онға дейін нысанның дәл сақталуын және төртке дейін кейіпкердің ұқсастығын сипаттайды. Референстерді белгілеп, әрқайсысы не беретінін айтыңыз. Тауар көрінісінде бір кескін нысанды, екіншісі ортаны, үшіншісі жарықты анықтай алады. Кейіпкер тізбегінде алдыңғы шығыстарды келесі промптқа өткізіп, ракурс не дене қалпы өзгергенде сақталуы тиіс сипаттарды атаңыз.
Web Search және Image Search арқылы негіздеу генерацияны өзекті ақпаратпен және табылған көрнекі референстермен толықтыра алады. Image Search іздеу нәтижесінің тек жазбаша сипаттамасын емес, көрнекі контекст қосады. Өндіруші іздеу мүмкіндігін құжатталған ойлау параметрлерінің бәрінде қолдайды. Оның кескін іздеу үдерісі адамдардың нақты өмірдегі кескіндерін іздеуден алынатын референс ретінде қолданбайды және негізделген нәтижелермен атрибуция метадеректерін қайтарады; нәтижені қолданбада қолданғанда сол метадеректерді сақтаңыз.
Gemini 3.1 Flash Image үшін құжатталған ойлау басқарулары — minimal және high; әдепкісі — minimal. Бұл Nano Banana 2.1 моделінің үш деңгейлі, әдепкісі medium профилінен өзгеше. Ойлау күрделірек композиция мен нұсқау өңдеуді қолдайды. Модель Gemini 3 Flash негізінде жасалған, бірақ бұл қатынас оны жалпы код орындау не функция шақыру моделіне айналдырмайды: сол мүмкіндіктер осы кескін нұсқасы кестесінде қолдау таппайды деп белгіленген.
Диалогтік өңдеу берілген кескінді өзгертуге немесе алдыңғы генерацияны жетілдіруге мүмкіндік береді. Нақты тапсырма: «Бөтелкенің пішінін, жапсырма мәтінін және камера бұрышын сақта. Фонды ашық тас бетімен алмастырып, жұмсақтау көлеңкелер қос». Сақталатын элементтерді өзгеретіндері сияқты мұқият сипаттаңыз. Модель картасы кейіпкер бірізділігі, сол/оң орналасуы және қолмен салынған нобайға негізделген түзетулер мінсіз болмауы мүмкін екенін айтады, сондықтан көрнекі тізбекті жалғастырмас бұрын сол бөлшектерді салыстырыңыз.
API модель кестесі 131,072 кіріс және 32,768 шығыс токенін береді. Ол кескін генерациясын, іздеу арқылы негіздеуді, ойлауды және пакеттік өңдеуді қолдайды; аудио генерациясы, кэштеу, құрылымдалған шығыс, файл іздеу, Live API және URL контексті қолдау таппайды. Кескін үдерісі аудио кіріс қабылдамайды. Осы API профилінде бейне не PDF статикалық кескін тапсырмасына ақпарат бере алады; шығыс кескін мен мәтін болып қалады. Жасалған кескіндерде SynthID бар, ал сұралған кескін саны әрдайым дәл орындалмайды.
Іс жүзіндегі инфографикаға бекітілген белгілерді, мақсатты аудиторияны, оқу ретін, референстік материалды және мақсатты арақатынасты беріңіз. Бір анық көрнекі түсіндірме сұрап, келесі кезекте қалыптасқан композицияны сақтап, сөздерді не аралықтарды түзетіңіз. Тауар макетінде геометрияны, бетті, жарықты және тауарды анықтайтын көрнекі бөлшектерді көрсетіңіз. Пайдалы нәтиже — бақыланатын тізбекте қарауға, таңдауға және жетілдіруге болатын, байланысты мәтіні бар кескін.
Практикалық тапсырма
Практикалық тапсырма
Ағылшын тіліндегі техникалық мысал
Create a simple bicycle-care infographic
Create one portrait infographic teaching three bicycle checks before a short ride: tires, brakes and chain. Use three large illustrated steps in that order, a warm ivory background and dark green accents. Include only these headings: 'TIRES', 'BRAKES', 'CHAIN'. Leave generous space around each heading and keep the illustrations clearly separated.Күтілетін нәтиже
One portrait image with three ordered illustrated steps and the three exact, readable headings.Нәтижені тексеру
Inspect the rendered image for heading spelling, order and clear separation of the three checks.Ailoot · Суреттер POST /v1/images/generations gemini-3.1-flash-image
gemini-3.1-flash-imageБастау
Nano Banana 2 (Gemini 3.1 Flash Image) диалогта кескіндер жасайды және өңдейді. Ол тауар көріністері, инфографика және қайталанбалы көрнекі жұмыс үшін мәтін мен көрнекі дереккөздерді, 0.5K–4K шығысты, референстік кескіндерді біріктіріп композиция жасауды және іздеу арқылы негіздеуді қолдайды.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Суреттер · Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot · Суреттер POST /v1/images/generations
- Кіріс
text- Шығыс
image,text- Контекст
- 131 072 tokens
- Ең үлкен шығыс
- 32 768 tokens
- Шығыс пішімі
- Сурет файлы
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер gemini-3.1-flash-image | Әдепкі— |
Өрісprompt | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Ең аз ұзындық: 1 | Әдепкі— |
Өрісn | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 | Әдепкі1 |
Өрісresponse_format | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер url, b64_json | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісsize | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісquality | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісbackground | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_format | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісoutput_compression | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmoderation | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinput_fidelity | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstyle | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісpartial_images | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтіннен сурет жасау · Міндетті: prompt
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрmaterial_types | Параметр талаптарыtext |
Параметрrequired | Параметр талаптарыmodel, prompt |
Параметрoptional_controls | Параметр талаптарыnull |
Параметрcontent_type | Параметр талаптарыapplication/json |
Өмірлік цикл: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Нақты қайтарылған task_id немесе медиатека жазбасы
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.
Тарифтер
Ailoot әдістерінің мөлшерлемелері
POST /v1/images/generations- Мәтіндік кіріс
- 0,0005 $ / 1K
- Мәтіндік шығыс
- 0,003 $ / 1K
- Шығыс, сурет
- 0,06 $ / 1K tokens
- Кіріс
- 0,0005 $ / 1K сурет токені
- Шығыс
- ≈0,0448 $ 0.5K өлшеміндегі сурет үшін
- Шығыс
- 0,0672 $ 1K өлшеміндегі сурет үшін
- Шығыс
- ≈0,101 $ 2K өлшеміндегі сурет үшін
- Шығыс
- ≈0,151 $ 4K өлшеміндегі сурет үшін
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Модельдің анықтамалық кестелері
Баптаулар бойынша бағалар
| Баптау | Мөлшерлемелер кестесі | Төлем |
|---|---|---|
| БаптауUltra | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Төлем Кіріс · Кіріс токендері $0.0010000 / 1K токен Шығыс · Шығыс токендері $0.006000 / 1K токен Шығыс · кескін шығысы $0.12000 / 1K токен Шығыс · веб-іздеу $0.028 интернеттен іздеу үшін |
Сұрау мысалдары
Ailoot · Суреттер
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-3.1-flash-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
from openai import OpenAI
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")
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gemini-3.1-flash-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gemini-3.1-flash-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
if(!encoded && uri.startsWith("data:image/")) {
const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
encoded=uri.slice(comma+1);
}
if(encoded) {
if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
raw=Buffer.from(encoded,"base64");
} else if(uri) {
const u=new URL(uri,"https://api.ailoot.ai");
if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
if(!response.ok) throw new Error("Image content download failed: "+response.status);
raw=Buffer.from(await response.arrayBuffer());
} else throw new Error("Image has neither bytes nor URL");
if(!raw.length) throw new Error("Empty image result");
const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
Нәтижелерді алу және сақтау
Ailoot · Суреттер
Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Барлық дайын нәтижені сақтау
Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.
Әрбір дерек элементін сақтаңыз. Әрбір b64_json мәнін декодтаңыз немесе қайтарылған әрбір қолтаңбаланған URL мекенжайынан жүктеп алыңыз. Файл атауының кеңейтімін нақты MIME түріне/байттарға қарап таңдаңыз.
Бастапқы жауапты тексеру қажет болса
Кескінді генерациялау немесе өңдеу нәтижесін тексеру қажет болса, бастапқы operation_id/X-Client-Request-ID мәнін және қайтарылған нәтиже туралы ақпаратты сақтаңыз. Нақты task_id немесе asset_id мәндерін қолданып, өзіңізге тиесілі бұрыннан бар нәтижелерді медиатека арқылы қалпына келтіріңіз. Генерациялау/өңдеу сұрауын қайта жібермеңіз және operation_id мәнінен күйді сұратуға арналған URL мекенжайын құрастырмаңыз.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісcreated | Түріinteger |
Өрісdata[].url | Түріstring |
Өрісdata[].b64_json | Түріbase64 string |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Жауапserver_error | ШартҚайтарылған жауапта операцияны немесе нәтижені тексеру қажет екені көрсетілген | Келесі қадамБастапқыда қайтарылған операцияның/тапсырманың ID мәнін, сұрау тақырыптарын және жауабын сақтаңыз; сол бастапқы операцияны қолдау көрсетілетін тәсілдермен оқуды жалғастырыңыз. Жасау сұрауын қайта жібермеңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image
Әдіс жолдарының балама атаулары
/v1/images
Шақыруға арналған байланысты ID
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions google/gemini-3.1-flash-image
google/gemini-3.1-flash-imageБастау
Nano Banana 2 (Gemini 3.1 Flash Image) диалогта кескіндер жасайды және өңдейді. Ол тауар көріністері, инфографика және қайталанбалы көрнекі жұмыс үшін мәтін мен көрнекі дереккөздерді, 0.5K–4K шығысты, референстік кескіндерді біріктіріп композиция жасауды және іздеу арқылы негіздеуді қолдайды.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- Мәтін
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · OpenAI чаты POST /v1/chat/completions
- Кіріс
text- Шығыс
text- Шығыс пішімі
- json немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер google/gemini-3.1-flash-image | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
Өрісmessages[].content | Түріstring|content_part[]|null | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_calls | Түріtool_call[] | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].tool_call_id | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
Өрісmessages[].name | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].reasoning_content | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
Өрісmessages[].reasoning_details | Түріobject|array | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісmax_completion_tokens | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Өрісstream_options.include_usage | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtemperature | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtop_p | Түріnumber | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісstop | Түріstring|string[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools | Түріfunction_tool[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісtools[].type | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер function Модельге байланысты | Әдепкі— |
Өрісtools[].function.name | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
Өрісtools[].function.description | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtools[].function.parameters | ТүріJSON_schema | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Өрісtool_choice | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісparallel_tool_calls | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісresponse_format | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning_effort | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісreasoning | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісservice_tier | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісinstructions | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
Өрісfunctions | Түріfunction[] | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісfunction_call | Түріstring|object | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісprompt_cache_options | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
Өрісmodalities | Түріstring[] | ТалапМіндетті емес | Мәндер мен шектеулер text | Әдепкі— |
Өрісprovider | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Осы Ultra мәтіндік бағытында provider.options қабылданбайды | Әдепкі— |
Өрісcache_control.ttl | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Сұрау кэшінің нақты орындарында 1h қабылданбайды | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтін · UTF8 мәтіні
messages[].content
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрmessages | Параметр талаптарыrole/content құрылымы бар хабарламалар жиымы |
Параметрfile_material | Параметр талаптарынақты UTF-8 құжаты сөзбе-сөз мәтін ретінде енгізіледі; файл ID-і болжанбайды |
Параметрoptional_controls | Параметр талаптарыstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Параметрcontrol_scope | Параметр талаптарымодельге байланысты; пайдаланушының функция құралдары қызмет жағында орындалатын құралдардан өзгеше |
Параметрoutput_modalities | Параметр талаптарыtext |
Параметрhosted_operations | Параметр талаптарыfalse |
Параметрmultimodal_input_binding | Параметр талаптарыnull |
Өмірлік цикл: synchronous_or_streamed
Модельдің дәл ID мәнін messages деректерімен бірге жіберіңіз.
Контекст ұзындығы шығыстың жоғарғы шегі емес.
Мәтіндік файл сөзбе-сөз мәтінді бере алады; кіріс суреттері, аудио және файл нысандары дәл байланыстыруды қажет етеді.
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · minimal
- Стандартты тариф Ой қорыту деңгейі minimal болғанда
- Айқын кэштеу бағасы
- Қосылмаған Айқын кэштеу сұралғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.001 / 1K токен Шығыс · Шығыс токендері $0.006 / 1K токен Кіріс · Кэшті оқу — / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен Шығыс · Шығыс кескін токендері $0.12 / 1K сурет токені |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.001 / 1K токен Шығыс · Шығыс токендері $0.006 / 1K токен Кіріс · Кэшті оқу — / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Google: Nano Banana 2 (Gemini 3.1 Flash Image)
Баптаулар бойынша бағалар
| Баптау | Төлемді есептеу шарттары | Төлем |
|---|---|---|
| БаптауGoogle: Nano Banana 2 (Gemini 3.1 Flash Image) · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс токендері 0,001 $ / 1K токен Шығыс · Шығыс токендері 0,006 $ / 1K токен Шығыс · Шығыс кескін 0,12 $ / 1K токен Шығыс · Веб-іздеу 0,028 $ әр іздеу үшін |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · OpenAI чаты
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", "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',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',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")
Нәтижелерді алу және сақтау
Ailoot Ultra · OpenAI чаты
json немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісchoices[].index | Түріinteger |
Өрісchoices[].message.content | Түріstring|null |
Өрісchoices[].message.tool_calls | Түріtool_call[] |
Өрісchoices[].message.reasoning_content | Түріstring |
Өрісchoices[].message.reasoning_details | Түріobject|array |
Өрісchoices[].finish_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image
Әдіс жолдарының балама атаулары
/v1/images
Шақыруға арналған байланысты ID
Ailoot Ultra · Суреттер POST /v1/images/generations google/gemini-3.1-flash-image
google/gemini-3.1-flash-imageБастау
Nano Banana 2 (Gemini 3.1 Flash Image) диалогта кескіндер жасайды және өңдейді. Ол тауар көріністері, инфографика және қайталанбалы көрнекі жұмыс үшін мәтін мен көрнекі дереккөздерді, 0.5K–4K шығысты, референстік кескіндерді біріктіріп композиция жасауды және іздеу арқылы негіздеуді қолдайды.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Суреттер
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Суреттер POST /v1/images/generations
- Кіріс
text,image- Шығыс
image
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер google/gemini-3.1-flash-image | Әдепкі— |
Өрісprompt | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Ең аз ұзындық: 1 | Әдепкі— |
Өрісresolution | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер 512, 1K, 2K, 4K | Әдепкі— |
Өрісaspect_ratio | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер 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 | Әдепкі— |
Өрісn | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Ең көбі: 1 | Әдепкі— |
Өрісinput_references | Түріarray | ТалапМіндетті емес | Мәндер мен шектеулер Элементтердің ең аз саны: 0 Элементтердің ең көп саны: 14 | Әдепкі— |
Өрісprovider | Түріobject | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, prompt |
Параметрmaterial_types | Параметр талаптарыtext, image |
Өмірлік цикл: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Нақты қайтарылған task_id немесе медиатека жазбасы
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Тарифтер
Қорытынды төлем қалай есептеледі
Көрсетілген тарифтер генерация басталғанға дейінгі құнын бағалауға арналған. Соңғы төлем бастапқы генерация үшін тіркелген құннан есептеледі. Нәтиженің өлшенген ұзақтығы мен болжамды көлемдер төлемге негіз болатын түпкілікті көлем болып саналмайды.
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Көрсетілмеген Жылдам режим таңдалғанда
- Икемді режим
- Көрсетілмеген flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Көрсетілмеген Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
Салыстыруға арналған болжамды мөлшерлемелер
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Болжамды мөлшер | Төлем |
|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Болжамды мөлшер— | Төлем Кіріс · Кіріс токендері · Тек салыстыруға арналған бағалау — / 1K токен Шығыс · Шығыс токендері · Тек салыстыруға арналған бағалау — / 1K токен Кіріс · Кэшті оқу · Тек салыстыруға арналған бағалау — / 1K токен Кіріс · Кэшке жазу · Тек салыстыруға арналған бағалау — / 1K токен Кіріс · Кэшке жазу, 1 сағ · Тек салыстыруға арналған бағалау — / 1K токен |
| БаптауГенерацияның болжамды құны | Мөлшерлемелер кестесі— | Болжамды мөлшербір генерацияға арналған болжам | Төлем Шығыс · Генерацияның болжамды құны · Тек салыстыруға арналған бағалау $0.49152 жасауға дейінгі бағалау Бұл бағалау қосымша төлем де, аяқталған генерация үшін белгіленген тұрақты тариф те емес. |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · Суреттер
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', '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
Нәтижелерді алу және сақтау
Ailoot Ultra · Суреттер
Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Басқа мазмұнды оқу
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.
Барлық дайын нәтижені сақтау
Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.
Толық жауапты және тақырыптарды, алынған әрбір нәтижені, бастапқыда қайтарылған идентификаторларды және пайдалану туралы барлық өрістерді сақтаңыз. Жасау сұрауын қайта жібермей, бастапқы операцияны қалпына келтіріңіз.
Бастапқы жауапты тексеру қажет болса
Есептерді салыстырып тексеру үшін қайтарылған X-Client-Request-ID мәнін сақтаңыз. Тек нақты қайтарылған task_id/asset_id мәндері арқылы немесе өзіңізге тиесілі медиатекадан оқыңыз; операция ID мәнінен тапсырманың URL мекенжайын ешқашан құрастырмаңыз және жасау сұрауын ешқашан қайта жібермеңіз.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісcreated | Түрі |
Өрісdata[].url | Түрі |
Өрісdata[].b64_json | Түрі |
Өрісusage | Түрі |
Балама атаулар
Модельдердің балама атаулары
Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image
Әдіс жолдарының балама атаулары
/v1/images
Шақыруға арналған байланысты ID
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages google/gemini-3.1-flash-image
google/gemini-3.1-flash-imageБастау
Nano Banana 2 (Gemini 3.1 Flash Image) диалогта кескіндер жасайды және өңдейді. Ол тауар көріністері, инфографика және қайталанбалы көрнекі жұмыс үшін мәтін мен көрнекі дереккөздерді, 0.5K–4K шығысты, референстік кескіндерді біріктіріп композиция жасауды және іздеу арқылы негіздеуді қолдайды.
- Қабылданатын кіріс деректері
- Мәтін
- Нәтижелер
- json · sse
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Anthropic хабарламалары POST /v1/messages
- Кіріс
text- Шығыс
json,sse- Шығыс пішімі
- JSON немесе SSE
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер google/gemini-3.1-flash-image | Әдепкі— |
Өрісmessages | Түріmessage[] | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmessages[].role | Түріstring | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
Өрісmessages[].content | Түріstring | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісmax_tokens | Түріinteger | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
Өрісstream | Түріboolean | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
Кіріс материалдарының үйлесімдері
Мәтін · UTF-8 мәтіні
messages[].content жолы
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, messages, max_tokens |
Параметрoptional_controls | Параметр талаптарыstream |
Параметрmaterial_types | Параметр талаптарыtext |
Параметрtext_file_material | Параметр талаптарыНақты UTF-8 құжатын оқып, оның мәтінін көрсетілген кіріс жолына немесе хабарлама мазмұнының жолына қойыңыз. |
Өмірлік цикл: synchronous_or_streamed
Тарифтер
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Стандартты тариф Жылдам режим таңдалғанда
- Икемді режим
- Стандартты тариф flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
- Ой қорыту деңгейі · high
- Стандартты тариф Ой қорыту деңгейі high болғанда
- Ой қорыту деңгейі · minimal
- Стандартты тариф Ой қорыту деңгейі minimal болғанда
- Айқын кэштеу бағасы
- Қосылмаған Айқын кэштеу сұралғанда
Ailoot мөлшерлемелері
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.001 / 1K токен Шығыс · Шығыс токендері $0.006 / 1K токен Кіріс · Кэшті оқу — / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен Шығыс · Шығыс кескін токендері $0.12 / 1K сурет токені |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері $0.001 / 1K токен Шығыс · Шығыс токендері $0.006 / 1K токен Кіріс · Кэшті оқу — / 1K токен Кіріс · Кэшке жазу — / 1K токен Кіріс · Кэшке жазу, 1 сағ — / 1K токен |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Сұрау мысалдары
Ailoot Ultra · Anthropic хабарламалары
{
"model": "google/gemini-3.1-flash-image",
"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', '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', '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))
Нәтижелерді алу және сақтау
Ailoot Ultra · Anthropic хабарламалары
JSON немесе SSE
Барлық дайын нәтижені сақтау
Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.
Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.
Бастапқы жауапты тексеру қажет болса
Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.
Жауап өрістері
| Өріс | Түрі |
|---|---|
Өрісid | Түріstring |
Өрісmodel | Түріstring |
Өрісcontent[] | Түріtext|thinking|tool_use|other content block |
Өрісstop_reason | Түріstring|null |
Өрісusage | Түріobject |
Қателер және келесі қадамдар
| Жауап | Шарт | Келесі қадам |
|---|---|---|
Жауап400 · invalid_request_error | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |
Балама атаулар
Модельдердің балама атаулары
Ailoot gemini-3.1-flash-image
Ailoot Ultra google/gemini-3.1-flash-image
Әдіс жолдарының балама атаулары
/v1/images
Шақыруға арналған байланысты ID
FAQ · Google: Nano Banana 2 (Gemini 3.1 Flash Image)
- Қандай кіріс деректері мен нәтижелер қолжетімді?
POST /v1/images/generations·gemini-3.1-flash-image:text→image,textPOST /v1/chat/completions·google/gemini-3.1-flash-image:text→textPOST /v1/images/generations·google/gemini-3.1-flash-image:text,image→imagePOST /v1/messages·google/gemini-3.1-flash-image:text→json,sse- Сұрау қандай өрістерді пайдаланады?
POST /v1/images/generations·gemini-3.1-flash-image:model,prompt,n,response_format,streamPOST /v1/chat/completions·google/gemini-3.1-flash-image:model,messages,stream,modalities,providerPOST /v1/images/generations·google/gemini-3.1-flash-image:model,prompt,resolution,aspect_ratio,n,input_references,providerPOST /v1/messages·google/gemini-3.1-flash-image:model,messages,max_tokens,stream- Қандай шектеулер қолданылады?
POST /v1/images/generations·gemini-3.1-flash-image:ctx:131072;max_out:32768;n.minimum:1POST /v1/chat/completions·google/gemini-3.1-flash-image:messages.min_items:1POST /v1/images/generations·google/gemini-3.1-flash-image:n.minimum:1;n.maximum:1