models

OpenAI: GPT-5.4 Image 2

Markdown · JSON

OpenAI: GPT-5.4 Image 2

Darbo eiga, jungianti GPT-5.4 tekstinį samprotavimą su GPT Image 2 vaizdų generavimu ir redagavimu. Naudokite rašytinį aprašą bei vaizdinius šaltinius iliustracijai ar pakeitimui parengti, išlaikydami atskirus teksto ir vaizdo komponentų vaidmenis.

Apie modelį

Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.

GPT-5.4 Image 2 apibūdina darbo eigą, jungiančią OpenAI GPT-5.4 tekstinį modelį su GPT Image 2 vaizdų generavimui ir redagavimui. Komponentai turi skirtingus vaidmenis: GPT-5.4 gali interpretuoti užduoties aprašą ir parengti rašytines instrukcijas, o GPT Image 2 sukuria ar pakeičia vaizdą. GPT-5.4 priima tekstą bei vaizdus ir pateikia tekstą; GPT Image 2 priima teksto bei vaizdų įvestis ir pateikia vaizdus.

Naujam vaizdui aprašykite jo paskirtį, pagrindinį objektą, kompoziciją, stilių ir rezultatui svarbias detales. Iliustracinė užduotis — straipsnio iliustracijos rengimas: apibrėžkite mintį, kurią vaizdas turi perteikti, numatytą kadravimą ir vietą, reikalingą lydinčiam puslapio tekstui. Tekstinis etapas gali šiuos reikalavimus sudėti į aiškų aprašą. Vaizdo etapas naudoja užklausą ir šaltinius vaizdiniam artefaktui sukurti.

Redagavimui pateikite pradinį vaizdą ir atskirkite prašomus pakeitimus nuo išlaikytinų elementų. GPT Image 2 automatiškai apdoroja vaizdų įvestis itin tiksliai, palaikydamas detalėms jautrų redagavimą ir darbą pagal vaizdinius šaltinius. Gamintojas dokumentuoja vaizdo sričių atkūrimą ir vaizdų kūrimą pagal šaltinius. Kaukė gali nurodyti redaguotiną sritį, tačiau GPT Image kaukės taikymas grindžiamas užklausa ir gali netiksliai laikytis kaukės formos. Dokumentuota kaukės darbo eiga reikalauja, kad tikslinio vaizdo ir kaukės formatas bei matmenys sutaptų, kaukė turėtų alfa kanalą, o failai būtų mažesni nei 50 MB.

GPT Image 2 palaiko kokybės reikšmes low, medium, high ir automatinį kokybės parinkimą. Pasirinktiniams dydžiams būtina, kad abiejų kraštinių ilgiai būtų 16 pikselių kartotiniai, nė viena kraštinė neviršytų 3 840 pikselių, kraštinių santykis nebūtų ekstremalesnis nei 3:1, o bendras dydis būtų nuo 655 360 iki 8 294 400 pikselių. Dokumentuoti pavyzdžiai yra 1 024 × 1 024, 1 536 × 1 024, 2 048 × 2 048 ir 3 840 × 2 160. Matmenis rinkitės pagal paskirtį, užuot manę, kad kiekvienas vaizdas turi būti kvadratinis. Gamintojo dokumentuotame Image API rezultato profilyje numatytasis formatas yra PNG, taip pat prieinami JPEG ir WebP. JPEG ir WebP palaiko glaudinimo nustatymą nuo 0 iki 100.

Tekstinis komponentas turi atskirą specifikaciją. Paskelbtas GPT-5.4 konteksto langas yra 1 050 000 tokenų, didžiausias rezultatas — 128 000 tokenų, o žinių riba — 2025 m. rugpjūčio 31 d. Jo samprotavimo intensyvumo reikšmės yra none, low, medium, high ir xhigh, o numatytoji — none. Gamintojas vaizdų generavimą įtraukia tarp GPT-5.4 įrankių, o Image API taip pat teikia atskiras generavimo ir redagavimo operacijas. Šie dokumentuoti komponentų vaidmenys nepaverčia jungtinio pavadinimo nauju savarankišku modeliu, turinčiu vieną bendrą teksto bei vaizdo ribą.

Vaizdų vadove aprašomi tikslaus teksto išdėstymo, pasikartojančio vizualinio nuoseklumo ir tikslios kompozicijos apribojimai. Kai svarbūs užrašai, parenkite trumpą ir aiškiai nurodytą tekstą, pasikartojančiam objektui pateikite aktualų vaizdinį šaltinį ir aiškiai įvardykite maketo apribojimus. Sugeneruotą ar redaguotą vaizdą tikrinkite pagal šiuos reikalavimus. Naudingą rezultatą gali sudaryti rašytinis aprašas, vaizdas ir konkretus pakeitimų kitam redagavimui sąrašas, susiejantis vaizdą su pradine redakcine ar produkto paskirtimi.

Praktinė užduotis

Praktinė užduotis

Techninis pavyzdys anglų kalba

Revise an editorial illustration crop

Edit the supplied article illustration for a landscape header. Preserve the central paper boat's shape, folded edges and blue color. Extend the calm water naturally to the left and leave that side visually quiet for page text added later. Keep the existing light direction and add no words, logos, people or extra boats.

Laukiamas rezultatas

An edited landscape image with the original boat preserved and clear composition space on the left.

Rezultato patikra

Compare boat details and light direction with the source, and inspect the added water for repeated or distorted elements.
Ailoot Ultra · OpenAI pokalbis POST /v1/chat/completions openai/gpt-5.4-image-2

openai/gpt-5.4-image-2

OpenAI /openai/gpt-5.4-image-2

Pradžia

Darbo eiga, jungianti GPT-5.4 tekstinį samprotavimą su GPT Image 2 vaizdų generavimu ir redagavimu. Naudokite rašytinį aprašą bei vaizdinius šaltinius iliustracijai ar pakeitimui parengti, išlaikydami atskirus teksto ir vaizdo komponentų vaidmenis.

Leidžiamos įvestys
Tekstas
Rezultatai
Tekstas

Prieinama Ailoot · įvestys ir metodai

Ailoot Ultra · OpenAI pokalbis POST /v1/chat/completions
Įvestis
text
Išvestis
text
Išvesties formatas
json arba SSE
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
openai/gpt-5.4-image-2
Numatyta—
LaukasmessagesTipasmessage[]ReikalavimasPrivalomaReikšmės ir ribos
Mažiausias elementų skaičius: 1
Numatyta—
Laukasmessages[].roleTipasstringReikalavimasPrivalomaReikšmės ir ribos
Pavyzdžiai: system, user, assistant, tool, function
Sąlygos: Šie vaidmenys aiškiai išreikšti šaltinio kodo suderinamumo tipuose; tikslus vaidmenų rinkinys priklauso nuo konkretaus modelio.
Priklauso nuo modelio
Numatyta—
Laukasmessages[].contentTipasstring|content_part[]|nullReikalavimasNeprivalomaReikšmės ir ribosNumatyta—
Laukasmessages[].tool_callsTipastool_call[]ReikalavimasNeprivalomaReikšmės ir ribosNumatyta—
Laukasmessages[].tool_call_idTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Taikoma, kai: role=tool; naudokite tikrąjį grąžintą ID
Numatyta—
Laukasmessages[].nameTipasstringReikalavimasNeprivalomaReikšmės ir ribosNumatyta—
Laukasmessages[].reasoning_contentTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Taikoma, kai: Grąžinkite tikrąjį gautą samprotavimą ten, kur šis modelis jį naudoja
Numatyta—
Laukasmessages[].reasoning_detailsTipasobject|arrayReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasmax_tokensTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Priklauso nuo modelio
Numatyta—
Laukasmax_completion_tokensTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Priklauso nuo modelio
Numatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
Laukasstream_options.include_usageTipasbooleanReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukastemperatureTipasnumberReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukastop_pTipasnumberReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasstopTipasstring|string[]ReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukastoolsTipasfunction_tool[]ReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukastools[].typeTipasstringReikalavimasNeprivalomaReikšmės ir ribos
function
Priklauso nuo modelio
Numatyta—
Laukastools[].function.nameTipasstringReikalavimasPrivalomaReikšmės ir ribos
Taikoma, kai: pateiktas funkcijos tipo įrankis
Numatyta—
Laukastools[].function.descriptionTipasstringReikalavimasNeprivalomaReikšmės ir ribosNumatyta—
Laukastools[].function.parametersTipasJSON_schemaReikalavimasNeprivalomaReikšmės ir ribosNumatyta—
Laukastool_choiceTipasstring|objectReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasparallel_tool_callsTipasbooleanReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasresponse_formatTipasobjectReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasreasoning_effortTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasreasoningTipasobjectReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasservice_tierTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasinstructionsTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Suderinamumo laukas
Numatyta—
LaukasfunctionsTipasfunction[]ReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasfunction_callTipasstring|objectReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasprompt_cache_optionsTipasobjectReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasmodalitiesTipasstring[]ReikalavimasNeprivalomaReikšmės ir ribos
text
Numatyta—
LaukasproviderTipasobjectReikalavimasNeprivalomaReikšmės ir ribos
Sąlygos: provider.options šiame Ultra teksto maršrute atmetamas
Numatyta—
Laukascache_control.ttlTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Sąlygos: 1h atmetamas tikrosiose užklausų podėlio vietose
Numatyta—
Įvesties medžiagos deriniai

Tekstas · UTF8 tekstas

messages[].content

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrascontent_typeSpecifikacijaapplication/json
ParametrasrequiredSpecifikacijamodel, messages
Parametrasmaterial_typesSpecifikacijatext
ParametrasmessagesSpecifikacijapranešimų masyvas su role/content struktūra
Parametrasfile_materialSpecifikacijatikrasis UTF-8 dokumentas įterptas kaip pažodinis tekstas; failo ID nenumanomas
Parametrasoptional_controlsSpecifikacijastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametrascontrol_scopeSpecifikacijapriklauso nuo modelio; naudotojo funkcijų įrankiai skiriasi nuo priglobtų įrankių
Parametrasoutput_modalitiesSpecifikacijatext
Parametrashosted_operationsSpecifikacijafalse
Parametrasmultimodal_input_bindingSpecifikacijanull

Gyvavimo ciklas: synchronous_or_streamed

Siųskite tikslų modelio ID kartu su messages.

Konteksto ilgis nėra išvesties limitas.

Teksto failas gali pateikti pažodinį tekstą; vaizdų / garso / failų objektų įvestims reikia tikslaus susiejimo.

Planai

Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.

Spartusis režimas
Standartinis įkainis Pasirinkus spartųjį režimą
Flex režimas
Standartinis įkainis Pasirinkus flex režimą
Didžiausios samprotavimo pastangos
Standartinis įkainis Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)
Samprotavimo pastangos · high
Standartinis įkainis Kai samprotavimo pastangų lygis yra high
Samprotavimo pastangos · low
Standartinis įkainis Kai samprotavimo pastangų lygis yra low
Samprotavimo pastangos · medium
Standartinis įkainis Kai samprotavimo pastangų lygis yra medium
Samprotavimo pastangos · none
Standartinis įkainis Kai samprotavimo pastangų lygis yra none
Samprotavimo pastangos · xhigh
Standartinis įkainis Kai samprotavimo pastangų lygis yra xhigh

Ailoot įkainiai

Kainos pagal konfigūraciją

Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.

KonfigūracijaĮkainių lentelėKonteksto tokenų daugiau neiKonteksto tokenų iki imtinaiMokestis
KonfigūracijaBaziniai žetonų įkainiaiĮkainių lentelėBazinis įkainisKonteksto tokenų daugiau nei—Konteksto tokenų iki imtinaiBe viršutinės ribosMokestis
Įvestis · Įvesties tokenai $0.016 / 1K tokenų
Išvestis · Išvesties tokenai $0.03 / 1K tokenų
Įvestis · Talpyklos skaitymas $0.004 / 1K tokenų
Įvestis · Rašymas į talpyklą — / 1K tokenų
Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų
Išvestis · Vaizdo išvesties žetonai $0.06 / 1K vaizdo tokenų
KonfigūracijaUžklausos ilgio pakopa 1Įkainių lentelė—Konteksto tokenų daugiau nei0Konteksto tokenų iki imtinaiBe viršutinės ribosMokestis
Įvestis · Įvesties tokenai $0.016 / 1K tokenų
Išvestis · Išvesties tokenai $0.03 / 1K tokenų
Įvestis · Talpyklos skaitymas $0.004 / 1K tokenų
Įvestis · Rašymas į talpyklą — / 1K tokenų
Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų

Informacinio tarifo duomenys

Modelio informacinės lentelės nekeičia metodo pasirinkimo, kainos įverčių ar mokesčių. Galiojantys mokesčiai nustatomi pagal pasirinkto Ailoot metodo įkainius.

OpenAI: GPT-5.4 Image 2

Kainos pagal konfigūraciją

KonfigūracijaApmokestinimo sąlygosMokestis
KonfigūracijaOpenAI: GPT-5.4 Image 2 · Numatytoji konfigūracijaApmokestinimo sąlygosNumatytoji konfigūracijaMokestis
Įvestis · Įvesties tokenai 0,016 USD / 1K tokenų
Išvestis · Išvesties tokenai 0,03 USD / 1K tokenų
Išvestis · Išvesties vaizdas 0,06 USD / 1K tokenų
Išvestis · Paieška žiniatinklyje 0,02 USD už paiešką
Įvestis · Talpyklos skaitymas 0,004 USD / 1K tokenų

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot Ultra · OpenAI pokalbis

curlPython SDKPython srautas
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/gpt-5.4-image-2", "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='openai/gpt-5.4-image-2',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='openai/gpt-5.4-image-2',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")

Gauti ir išsaugoti rezultatus

Ailoot Ultra · OpenAI pokalbis

json arba SSE

Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną visą grąžintą atsakymą, failą ir turinio dalį.

Išsaugokite kiekvieną variantą ir jo turinį / įrankių iškvietimus / samprotavimą. SSE prieaugius surinkite pagal varianto / įrankio indeksą; išsaugokite galutinę užbaigimo priežastį ir naudojimo duomenis.

Jei reikia patikrinti pradinį atsakymą

Išsaugokite užklausų / atsakymų ID ir antraštes. Bendras teksto užduoties gavimo URL nepateikiamas.

Atsakymo laukai
LaukasTipas
Laukaschoices[].indexTipasinteger
Laukaschoices[].message.contentTipasstring|null
Laukaschoices[].message.tool_callsTipastool_call[]
Laukaschoices[].message.reasoning_contentTipasstring
Laukaschoices[].message.reasoning_detailsTipasobject|array
Laukaschoices[].finish_reasonTipasstring|null
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.

Pseudonimai

Modelių pseudonimai

Ailoot Ultra openai/gpt-5.4-image-2

Metodų kelių pseudonimai

/v1/images

Susiję ID iškvietimui

openai/gpt-5.4-image-2

Ailoot Ultra · Vaizdai POST /v1/images/generations openai/gpt-5.4-image-2

openai/gpt-5.4-image-2

OpenAI /openai/gpt-5.4-image-2

Pradžia

Darbo eiga, jungianti GPT-5.4 tekstinį samprotavimą su GPT Image 2 vaizdų generavimu ir redagavimu. Naudokite rašytinį aprašą bei vaizdinius šaltinius iliustracijai ar pakeitimui parengti, išlaikydami atskirus teksto ir vaizdo komponentų vaidmenis.

Leidžiamos įvestys
Tekstas · Vaizdai
Rezultatai
Vaizdai

Prieinama Ailoot · įvestys ir metodai

Ailoot Ultra · Vaizdai POST /v1/images/generations
Įvestis
text, image
Išvestis
image
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
openai/gpt-5.4-image-2
Numatyta—
LaukaspromptTipasstringReikalavimasPrivalomaReikšmės ir ribos
Mažiausias ilgis: 1
Numatyta—
Laukasaspect_ratioTipasstringReikalavimasNeprivalomaReikšmės ir ribos
1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto
Numatyta—
LaukasqualityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
auto, low, medium, high
Numatyta—
LaukasbackgroundTipasstringReikalavimasNeprivalomaReikšmės ir ribos
auto, opaque
Numatyta—
LaukasnTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Didžiausia reikšmė: 10
Numatyta—
Laukasinput_referencesTipasarrayReikalavimasNeprivalomaReikšmės ir ribos
Mažiausias elementų skaičius: 0
Didžiausias elementų skaičius: 16
Numatyta—
Laukasoutput_compressionTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 0
Didžiausia reikšmė: 100
Numatyta—
LaukasproviderTipasobjectReikalavimasNeprivalomaReikšmės ir ribosNumatyta—
Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrascontent_typeSpecifikacijaapplication/json
ParametrasrequiredSpecifikacijamodel, prompt
Parametrasmaterial_typesSpecifikacijatext, image

Gyvavimo ciklas: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · faktiškai grąžinta task_id reikšmė arba medijos bibliotekos įrašas

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Planai

Kaip apskaičiuojamas galutinis mokestis

Rodomi įkainiai leidžia įvertinti kainą prieš generavimą. Galutinė suma apskaičiuojama pagal užfiksuotą pradinio generavimo kainą. Išmatuota rezultato trukmė ir prognozuoti kiekiai nėra galutinis apmokestinamas kiekis.

Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.

Spartusis režimas
Nenurodyta Pasirinkus spartųjį režimą
Flex režimas
Nenurodyta Pasirinkus flex režimą
Didžiausios samprotavimo pastangos
Nenurodyta Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)

Numatomi įkainiai palyginimui

Kainos pagal konfigūraciją

Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.

KonfigūracijaĮkainių lentelėNumatomas kiekisMokestis
KonfigūracijaBaziniai žetonų įkainiaiĮkainių lentelėBazinis įkainisNumatomas kiekis—Mokestis
Įvestis · Įvesties tokenai · Įvertis tik palyginimui — / 1K tokenų
Išvestis · Išvesties tokenai · Įvertis tik palyginimui — / 1K tokenų
Įvestis · Talpyklos skaitymas · Įvertis tik palyginimui — / 1K tokenų
Įvestis · Rašymas į talpyklą · Įvertis tik palyginimui — / 1K tokenų
Įvestis · Rašymas į talpyklą, 1 val · Įvertis tik palyginimui — / 1K tokenų
KonfigūracijaNumatoma generavimo kainaĮkainių lentelė—Numatomas kiekisvieno generavimo įvertisMokestis
Išvestis · Numatoma generavimo kaina · Įvertis tik palyginimui $0.24576 įvertis prieš generavimą

Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot Ultra · Vaizdai

curl
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': 'openai/gpt-5.4-image-2', '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

Gauti ir išsaugoti rezultatus

Ailoot Ultra · Vaizdai

Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Kito turinio skaitymas
Skaityti esamą jums priklausančią medžiagą
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.
Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.

Išsaugokite visą atsakymą ir antraštes, visus faktiškai gautus rezultatus, pradinius grąžintus identifikatorius ir visus naudojimo apskaitos laukus. Atkurkite prieigą prie pradinės operacijos pakartotinai neteikdami kūrimo užklausos.

Jei reikia patikrinti pradinį atsakymą

Išsaugokite grąžintą X-Client-Request-ID duomenims sutikrinti. Tikrinkite tik faktiškai grąžintas task_id/asset_id reikšmes arba jums priklausančią medijos biblioteką; niekada nekurkite užduoties URL iš operacijos ID ir niekada pakartotinai neteikite kūrimo užklausos.

Atsakymo laukai
LaukasTipas
LaukascreatedTipas
Laukasdata[].urlTipas
Laukasdata[].b64_jsonTipas
LaukasusageTipas

Pseudonimai

Modelių pseudonimai

Ailoot Ultra openai/gpt-5.4-image-2

Metodų kelių pseudonimai

/v1/images

Susiję ID iškvietimui

openai/gpt-5.4-image-2

Ailoot Ultra · Anthropic pranešimai POST /v1/messages openai/gpt-5.4-image-2

openai/gpt-5.4-image-2

OpenAI /openai/gpt-5.4-image-2

Pradžia

Darbo eiga, jungianti GPT-5.4 tekstinį samprotavimą su GPT Image 2 vaizdų generavimu ir redagavimu. Naudokite rašytinį aprašą bei vaizdinius šaltinius iliustracijai ar pakeitimui parengti, išlaikydami atskirus teksto ir vaizdo komponentų vaidmenis.

Leidžiamos įvestys
Tekstas
Rezultatai
json · sse

Prieinama Ailoot · įvestys ir metodai

Ailoot Ultra · Anthropic pranešimai POST /v1/messages
Įvestis
text
Išvestis
json, sse
Išvesties formatas
JSON arba SSE
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
openai/gpt-5.4-image-2
Numatyta—
LaukasmessagesTipasmessage[]ReikalavimasPrivalomaReikšmės ir ribosNumatyta—
Laukasmessages[].roleTipasstringReikalavimasPrivalomaReikšmės ir ribos
user, assistant
Numatyta—
Laukasmessages[].contentTipasstringReikalavimasPrivalomaReikšmės ir ribosNumatyta—
Laukasmax_tokensTipasintegerReikalavimasPrivalomaReikšmės ir ribosNumatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
Įvesties medžiagos deriniai

Tekstas · UTF-8 tekstas

messages[].content eilutė

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrascontent_typeSpecifikacijaapplication/json
ParametrasrequiredSpecifikacijamodel, messages, max_tokens
Parametrasoptional_controlsSpecifikacijastream
Parametrasmaterial_typesSpecifikacijatext
Parametrastext_file_materialSpecifikacijaPerskaitykite tikrąjį UTF-8 dokumentą ir įterpkite jo tekstą į nurodytą input lauką arba pranešimo turinio eilutę.

Gyvavimo ciklas: synchronous_or_streamed

Planai

Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.

Spartusis režimas
Standartinis įkainis Pasirinkus spartųjį režimą
Flex režimas
Standartinis įkainis Pasirinkus flex režimą
Didžiausios samprotavimo pastangos
Standartinis įkainis Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)
Samprotavimo pastangos · high
Standartinis įkainis Kai samprotavimo pastangų lygis yra high
Samprotavimo pastangos · low
Standartinis įkainis Kai samprotavimo pastangų lygis yra low
Samprotavimo pastangos · medium
Standartinis įkainis Kai samprotavimo pastangų lygis yra medium
Samprotavimo pastangos · none
Standartinis įkainis Kai samprotavimo pastangų lygis yra none
Samprotavimo pastangos · xhigh
Standartinis įkainis Kai samprotavimo pastangų lygis yra xhigh

Ailoot įkainiai

Kainos pagal konfigūraciją

Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.

KonfigūracijaĮkainių lentelėKonteksto tokenų daugiau neiKonteksto tokenų iki imtinaiMokestis
KonfigūracijaBaziniai žetonų įkainiaiĮkainių lentelėBazinis įkainisKonteksto tokenų daugiau nei—Konteksto tokenų iki imtinaiBe viršutinės ribosMokestis
Įvestis · Įvesties tokenai $0.016 / 1K tokenų
Išvestis · Išvesties tokenai $0.03 / 1K tokenų
Įvestis · Talpyklos skaitymas $0.004 / 1K tokenų
Įvestis · Rašymas į talpyklą — / 1K tokenų
Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų
Išvestis · Vaizdo išvesties žetonai $0.06 / 1K vaizdo tokenų
KonfigūracijaUžklausos ilgio pakopa 1Įkainių lentelė—Konteksto tokenų daugiau nei0Konteksto tokenų iki imtinaiBe viršutinės ribosMokestis
Įvestis · Įvesties tokenai $0.016 / 1K tokenų
Išvestis · Išvesties tokenai $0.03 / 1K tokenų
Įvestis · Talpyklos skaitymas $0.004 / 1K tokenų
Įvestis · Rašymas į talpyklą — / 1K tokenų
Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot Ultra · Anthropic pranešimai

Visas minimalus JSON užklausos turinyscurl · naudokite savo UTF-8 dokumentąPython · išsaugokite visą rezultatą
{
  "model": "openai/gpt-5.4-image-2",
  "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': 'openai/gpt-5.4-image-2', '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': 'openai/gpt-5.4-image-2', '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))

Gauti ir išsaugoti rezultatus

Ailoot Ultra · Anthropic pranešimai

JSON arba SSE

Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną visą grąžintą atsakymą, failą ir turinio dalį.

Išsaugokite visus turinio blokus, mąstymo parašus ir tikruosius įrankių naudojimo ID. Surinkite visus SSE blokų prieaugius; pirmasis teksto blokas nėra visa išvestis.

Jei reikia patikrinti pradinį atsakymą

Išsaugokite užklausų / atsakymų ID ir antraštes. Bendras teksto užduoties gavimo URL nepateikiamas.

Atsakymo laukai
LaukasTipas
LaukasidTipasstring
LaukasmodelTipasstring
Laukascontent[]Tipastext|thinking|tool_use|other content block
Laukasstop_reasonTipasstring|null
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.

Pseudonimai

Modelių pseudonimai

Ailoot Ultra openai/gpt-5.4-image-2

Metodų kelių pseudonimai

/v1/images

Susiję ID iškvietimui

openai/gpt-5.4-image-2

FAQ · OpenAI: GPT-5.4 Image 2
Kokios įvestys ir rezultatai prieinami?

POST /v1/chat/completions · openai/gpt-5.4-image-2: text → text

POST /v1/images/generations · openai/gpt-5.4-image-2: text, image → image

POST /v1/messages · openai/gpt-5.4-image-2: text → json, sse

Kokius laukus naudoja užklausa?

POST /v1/chat/completions · openai/gpt-5.4-image-2: model, messages, stream, modalities, provider

POST /v1/images/generations · openai/gpt-5.4-image-2: model, prompt, aspect_ratio, quality, background, n, input_references, output_compression, provider

POST /v1/messages · openai/gpt-5.4-image-2: model, messages, max_tokens, stream

Kokie apribojimai taikomi?

POST /v1/chat/completions · openai/gpt-5.4-image-2: messages.min_items: 1

POST /v1/images/generations · openai/gpt-5.4-image-2: n.minimum: 1; n.maximum: 10; output_compression.minimum: 0; output_compression.maximum: 100

Išsamiau

Prijunkite Ailoot prie Claude Code, OpenCode, Hermes arba savo programos.

Įmonė ir jos projektų portfelis

Įmonė ir jos projektų portfelis: milijonai klientų; mėnesio pardavimai siekia milijardus.

Pirkite žetonus su nuolaida.

Prenumeratos nuolaida reguliariam darbui. Kodai — iki 50% žetonų pirkimui.

Prenumerata
Pasirinkite planą su nuolaida reguliarioms užklausoms.
Nuolaidos kodas iki 50%
Įveskite kodą perkant. Kaina perskaičiuojama pagal galiojančios akcijos sąlygas.
Išlaidos istorijoje
Kiekvienai užklausai išsaugomi modelis, žetonai ir suma.

Pasirinkti prenumeratą · Peržiūrėti modelių kainas

Prijunkite API prie produkto, kurį parduodate.

SaaS, programos ir botai pagal Ailoot ofertą bei licencijos sutartį. Perpardavimui paprašykite perpardavėjo licencijos.

Komercinė programa
Teksto, vaizdų, video ir garso kūrimą integruokite į mokamas paslaugos funkcijas.
Perpardavėjo licencija
Atsiųskite projekto aprašymą ir prieigos schemą. Paprašykite rašytinių naudojimo ir perpardavimo sąlygų.
Dokumentai svetainėje
Oferta, licencijos sutartis ir duomenų tvarkymo politika prieinamos prieš prisijungiant.

Paprašyti perpardavėjo licencijos · Oferta ir licencijos sutartis