Recraft: Recraft V3
Recraft V3 kuria fotografijas, iliustracijas ir grafinius maketus, atsižvelgdamas į tekstą kompozicijoje ir siūlydamas stiliaus valdiklius. Atskiros rastrinė ir SVG versijos tinka plakatams, prekės ženklo vaizdų rinkiniams, piktogramoms ir dizainui, kuriame tekstas bei vizualinė struktūra turi veikti kartu.
Apie modelį
Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.
Recraft V3 yra vaizdų generavimo modelis, sukurtas grafiniam dizainui, taip pat fotografinėms ir iliustruotoms scenoms. Rašytinis aprašas nusako objektą, aplinką ir kompoziciją; rezultatas yra vaizdas. V3 tobulina Recraft teksto atvaizdavimą ir fotorealizmą, kartu išlaikydamas stiliaus nuoseklumą pagal pavyzdinius vaizdus be pakartotinio mokymo.
Tekstas kaip kompozicijos dalis
V3 dirba su tekstu vaizde, įskaitant ilgesnį tekstą ir vidutinio dydžio raides. Recraft aprašo maketavimo etapą, kuriame prieš generuojant vaizdą nustatomi žodžiai ir jų vietos. Maketas gali būti automatiškai sukurtas pagal aprašą arba rankiniu būdu išdėstytas Recraft dizaino aplinkoje. Tai padeda vienoje kompozicijoje susieti antraštę, iliustraciją ir papildomą tekstą. Gamintojas taip pat dokumentuoja aiškias teksto išdėstymo koordinates, išreikštas vaizdo atžvilgiu, o ne fiksuotu pikselių tinkleliu. Kiekviename teksto elemente yra vienas žodis ir keturi kampiniai taškai normalizuotomis koordinatėmis: (0, 0) yra viršutinis kairysis, (1, 1) – apatinis dešinysis kampas. Koordinatės gali išeiti už šio intervalo; tokiu atveju forma apkerpama. Aiškiai pateikti teksto išdėstymo žodžiai turi atitikti dokumentuotus simbolių apribojimus.
Plakatui ar viršeliui pateikite tikslų tekstą ir aprašykite hierarchiją: kuri eilutė pagrindinė, kur ji yra ir kaip ją palaiko paveikslas. Rinkdamiesi rezultatą patikrinkite atvaizduotą rašybą ir tarpus.
Stilius, paletė ir meninė kryptis
V3 apima parinktus fotografinius, iliustracijų ir emblemų stilius bei atskirą vektorinių stilių biblioteką. Recraft V3 Raw yra numatytasis rastrinio modelio stilius, o Vector art – vektorinės versijos numatytasis stilius. Photorealism siekia fotografinės išvaizdos, Illustration apima stilizuotas tekstūras, šešėliavimą ir sudėtingesnius spalvų perėjimus. Vektoriniai stiliai teikia pirmenybę formoms, ribotoms paletėms ir plokštiems užpildams ar paprastiems gradientams.
Individualius stilius galima kurti iš etaloninių vaizdų, esamų suderinamų stilių ar jų derinio. Jie suteikia pakartotinai naudojamą vizualinę kryptį vaizdų serijai. Dokumentuoti maišymo valdikliai leidžia etalonams ir šaltinio stiliams turėti atskirus svorius; svorių skaičius atitinka šaltinių skaičių. PaletteMatch ir MaxWeight yra dvi nurodytos maišymo politikos. Gamintojas leidžia iki 10 stiliaus etaloninių vaizdų ir V3 naudoja įprastą stiliaus derinimo režimą. Išsaugotas individualus stilius ir tiesioginiai stiliaus etalonai yra alternatyvios įvestys, o individualus stilius turi atitikti generavimui naudojamą modelį.
Pageidaujamos spalvos ir fono spalva nukreipia paletę. Dokumentuota iki 10 RGB spalvų, kurių kiekvieno komponento reikšmė yra nuo 0 iki 255. Pasirenkami santykiniai svoriai svyruoja nuo 0 iki 1; jie turi būti pateikti kiekvienai spalvai arba nė vienai, o jų suma negali viršyti 1. Meninis lygis svyruoja nuo 0 statiškam, švariam apdorojimui iki 5 dinamiškesnėms, ekscentriškoms kompozicijoms. Neigiama užklausa aprašo nepageidaujamus elementus; atskiras no-text valdiklis išjungia įterptus teksto maketus. Atkuriamumui yra atsitiktinumo sėkla. Šie valdikliai suteikia skirtingus būdus valdyti sceną, jos stilių ir vizualinį išdėstymą.
Rastriniai vaizdai ir atskira SVG versija
Recraft dokumentuoja dvi V3 versijas. Rastrinis modelis pateikia nenuostolingą WebP arba PNG ir tinka fotografinėms detalėms, šešėliavimui bei tekstūrinėms iliustracijoms. Recraft V3 Vector pateikia SVG: kontūrus ir formas, kuriuos galima didinti be fiksuotos raiškos pikseliais. Jis tinka piktogramoms, logotipų koncepcijoms, ženkleliams ir detaliai vektorinei grafikai. Rastro konvertavimas į vektorių yra atskira operacija nuo tiesioginio vektorinės grafikos generavimo.
Abi versijos turi savo tapatybę. Vektorinę išvaizdą turintis vaizdas ir tikra SVG išvestis yra skirtingi pasirinkimai. Rengdami dizaino eigą pasirinkite norimą išvestį, užuot laikę bendrą V3 pavadinimą įrodymu, kad kiekviena operacija pateikia tą patį failo tipą.
Esamos grafikos redagavimas ir užbaigimas
Recraft V3 dokumentacijoje nurodomas vaizdo generavimas pagal vaizdą, inpainting, outpainting ir fono pakeitimas ar generavimas. Darbas pagal vaizdą jungia esamą vaizdą su nauju aprašu. Inpainting regeneruoja pasirinktą sritį naudodamas vaizdą ir atitinkamą kaukę; outpainting prideda turinį už pradinio kadro. Fono operacijos keičia aplinką aplink objektą.
Papildomų įrankių rinkinys taip pat apima trynimą, fono pašalinimą, vektorizavimą ir du raiškos didinimo būdus. Kūrybinis raiškos didinimas gali įvesti naujų detalių; aiškumo raiškos didinimas siekia ryškesnio, didesnio esamo turinio atvaizdo. Tai atskiros operacijos su savais įvesties duomenimis ir rezultatais, o ne papildomos rastrinio ar vektorinio modelio pavadinimo reikšmės.
Užklausos, dydžio ir šaltinio vaizdo ribos
Gamintojo V3 generavimo specifikacija priima iki 1000 simbolių užklausą ir 1–6 vaizdus vienoje užklausoje. Ji palaiko 14 kraštinių santykių: 1:1, 2:1, 1:2, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 6:10, 14:10, 10:14, 16:9 ir 9:16. Dokumentuoti rastriniai pavyzdžiai apima 1024x1024, 1820x1024 ir 1024x1820. Tikslūs rastriniai matmenys turi būti iš palaikomų dydžių sąrašo; SVG naudoja kraštinių santykius be fiksuoto dydžio pikseliais. Kai dydis praleistas, gamintojo sistema jį parenka iš užklausos.
Vaizdo įvesties operacijoms gamintojas nurodo PNG, JPG ir WebP, taip pat SVG ten, kur konkreti operacija jį leidžia. Failai turi būti mažesni nei 20 MB, ne didesni nei 16 MP, su ilgiausia kraštine ne daugiau kaip 4096 pikselių. Trumpiausia kraštinė turi būti bent 256 pikselių, su 32 pikselių išimtimi aiškumo raiškos didinimui. Kaukės turi atitikti vaizdo dydį ir naudoti gryną juodą ir gryną baltą spalvą; stiliaus etalonams taikoma bendra 64 MB riba.
Ailoot API projektui paverskite užduotį tikslingu vaizdo aprašu: tikslus tekstas, objektų išdėstymas, vizualinis stilius ir norima kompozicija. Plakatui, produkto scenai ir piktogramų serijai reikia skirtingų aprašų; spręsdami, kaip naudoti kiekvieną rezultatą, išlaikykite atitinkamos V3 versijos ir operacijos skirtumus.
Ailoot Ultra · Vaizdai POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3Pradžia
Recraft V3 kuria fotografijas, iliustracijas ir grafinius maketus, atsižvelgdamas į tekstą kompozicijoje ir siūlydamas stiliaus valdiklius. Atskiros rastrinė ir SVG versijos tinka plakatams, prekės ženklo vaizdų rinkiniams, piktogramoms ir dizainui, kuriame tekstas bei vizualinė struktūra turi veikti kartu.
- 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- Išvesties formatas
- Vaizdo failas
| Laukas | Tipas | Reikalavimas | Reikšmės ir ribos | Numatyta |
|---|---|---|---|---|
Laukasmodel | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos recraft/recraft-v3 | Numatyta— |
Laukasprompt | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos Mažiausias ilgis: 1 | Numatyta— |
Laukasn | Tipasinteger | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausia reikšmė: 1 Didžiausia reikšmė: 6 | Numatyta— |
Laukasaspect_ratio | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos 1:1, 4:3, 3:4, 16:9, 9:16, auto | Numatyta— |
Laukasinput_references | Tipasarray | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausias elementų skaičius: 0 Didžiausias elementų skaičius: 1 | Numatyta— |
Įvesties medžiagos deriniai
Iš teksto į vaizdą · Privaloma: prompt
Metodo parametrai ir gyvavimo ciklas
| Parametras | Specifikacija |
|---|---|
Parametrascontent_type | Specifikacijaapplication/json |
Parametrasrequired | Specifikacijamodel, prompt |
Parametrasmaterial_types | Specifikacijatext, image |
Parametrasoptional_controls | Specifikacijaaspect_ratio, n, input_references |
Parametrasexact_supported_parameters | Specifikacija{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}} |
Parametrasreference_material_rule | SpecifikacijaTik tikri kliento pavyzdiniai paveikslėliai; jiems taikomos teikėjo galinio taško sąlygos. |
Metodo pseudonimai: /v1/images
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}
Naudokite tikslų modelį ir dokumentacijoje nurodytus įvesties laukus.
Išsaugokite visą atsakymą, kiekvieną tikrą rezultatą ir pradinius grąžintus 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 kiekis | Apskaitos vienetas | Mokestis |
|---|---|---|---|---|
| KonfigūracijaBaziniai žetonų įkainiai | Įkainių lentelėBazinis įkainis | Numatomas kiekis— | Apskaitos vienetas— | 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ūracijaUltra | Įkainių lentelė— | Numatomas kiekis— | Apskaitos vienetasuž išvesties vaizdą | Mokestis Išvestis · vaizdo išvestis · Įvertis tik palyginimui $0.08 už išvesties vaizdą |
| KonfigūracijaNumatoma generavimo kaina | Įkainių lentelė— | Numatomas kiekisvieno generavimo įvertis | Apskaitos vienetas— | Mokestis Išvestis · Numatoma generavimo kaina · Įvertis tik palyginimui $0.08 į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 →
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.
Paveikslėlių kainodaros konfigūracijos
Kainos pagal konfigūraciją
| Konfigūracija | Apmokestinimo sąlygos | Mokestis |
|---|---|---|
| KonfigūracijaIšvesties paveikslėlis | Apmokestinimo sąlygosKainodaros variantas nedeklaruotas. | Mokestis Išvestis · Išvesties vaizdas $0.08 už vaizdą Lygiaverčiai sąrašų įrašai apibūdina tą patį mokestį; jie neprideda antro mokesčio. |
Užklausų pavyzdžiai
Ailoot Ultra · Vaizdai
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': 'recraft/recraft-v3', '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
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")
request={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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": "recraft/recraft-v3", "prompt": "a red panda astronaut floating in space, studio lighting"};
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");
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}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Išsaugoti visus baigtus rezultatus
Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.
Išsaugokite kiekvieną data elementą ir visus naudojimo duomenis; perimkite į savo saugyklą ir išsaugokite visus tikrus grąžintus paveikslėlius. Jokių išgalvotų URL ar ID.
Jei reikia patikrinti pradinį atsakymą
Jei vaizdo generavimo ar redagavimo rezultatą reikia patikrinti, išsaugokite pradinį operation_id/X-Client-Request-ID ir grąžintą informaciją apie rezultatą. Atkurkite prieigą prie esamų jums priklausančių rezultatų per medijos biblioteką, naudodami faktines task_id arba asset_id reikšmes. Pakartotinai neteikite generavimo ar redagavimo užklausos ir nekurkite būsenos tikrinimo URL iš operation_id.
Atsakymo laukai
| Laukas | Tipas |
|---|---|
Laukascreated | Tipasinteger |
Laukasdata[].url | Tipasstring |
Laukasdata[].b64_json | Tipasbase64 string |
Laukasusage | Tipasobject |
Pseudonimai
Modelių pseudonimai
Ailoot Ultra recraft/recraft-v3
Metodų kelių pseudonimai
/v1/images
Susiję ID iškvietimui
FAQ · Recraft: Recraft V3
- Kokios įvestys ir rezultatai prieinami?
POST /v1/images/generations·recraft/recraft-v3:text,image→image- Kokius laukus naudoja užklausa?
POST /v1/images/generations·recraft/recraft-v3:model,prompt,n,aspect_ratio,input_references- Kokie apribojimai taikomi?
POST /v1/images/generations·recraft/recraft-v3:n.minimum:1;n.maximum:6