Recraft: Recraft V4
Recraft V4 generoi 1K-rasterikuvia keskittyen sommitteluun, värisuhteisiin ja yksityiskohtaiseen luovaan ohjeeseen. Se kattaa kuvituksen, fotorealistiset kohtaukset ja graafiset suunnittelukonseptit sekä valinnaiset tyylisyötteet ja erillisen kuvasta kuvaksi -työnkulun.
Tietoa mallista
Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.
Recraft V4 on Recraftin V4-sukupolven tavallinen rasterimalli. Valmistaja painottaa suunnitteluharkintaa: tasapainoista sommittelua, yhtenäisiä värisuhteita ja visuaalista tarkoitusta tukevaa yksityiskohtaisuutta. Se voi työskennellä tyylitellyn kuvituksen, valokuvakohtausten ja graafisten suunnittelukonseptien parissa. Käytä sitä, kun ohje vaatii esteettiset valinnat ja kehotetarkkuuden yhdistävää kuvaa, olipa tavoitteena tunnelman tutkiminen lyhyestä ohjeesta tai tarkoituksellisen asettelun tarkka määrittely.
Nimenomainen mallikoodi on recraftv4. Valmistajan viite luettelee 1K-rasterituloksen häviöttömänä WebP:nä tai PNG:nä. Neliökuva on 1024 × 1024 pikseliä, 16:9 on 1344 × 768 ja 2:3 on 832 × 1280; muut tuetut suhteet käyttävät omia mittojaan. V4 Pro on erillinen 2K-rasteriversio, kun taas V4 Vector ja Pro Vector palauttavat muokattavan SVG:n. Valitse toimitukseen tarkka V4-muunnelma näiden erilaisten tulosominaisuuksien yhdistämisen sijaan.
Valmistajan opas erottaa lyhyet tulkinnalliset kehotteet rakenteisesta luovasta ohjeesta. Lyhyt ilmaus voi jättää tilaa muodon, tunnelman ja rajauksen tutkimiselle. Rakenteinen ohje voi nimetä kohteen, ympäristön, asennon, materiaalin, toissijaiset elementit, valaistuksen ja visuaalisen hierarkian. Kuvaile kerronnalliseen kuvitukseen pienen sillan ylittävä pyöräilijä, rohkeat pelkistetyt muodot, lämpimät hillityt värit ja selkeä liike vasemmalta oikealle. Nämä sisältö- ja sommitteluvalinnat ovat toteutuskelpoisempia kuin pitkä irrallisten tyyliadjektiivien luettelo.
V4:n alue sisältää kuvituksen, tilallisen kuvaston ja fotorealistiset kuvat. Opas suosittelee kuvitukseen piirustuslogiikan ja 3D:n näköiseen kuvaan materiaalin, valon, kameran ja syvyyden kuvaamista. Jälkimmäinen pysyy rasterikuvana eikä muokattavana meshinä. Kerro juliste- tai pakkauskonseptissa, mitkä sanat ovat ensisijaisia, mihin ne kuuluvat ja miten kuva ja typografia toimivat yhdessä. Valmistaja korostaa luettavaa lyhyttä ja keskipitkää tekstiä; tarkasta palautetusta kuvasta todellinen sanamuoto ja järjestely ennen käyttöä.
Generointi tukee enintään 10 000 merkin kehotteita, satunnaissiementä, yhdestä kuuteen tulosta, toivottuja värejä ja haluttua taustaväriä. Valinnaiset yhteensopivat omat tyylit ja viitekuvat voivat ohjata visuaalista käsittelyä joustavalla tai tarkalla vastaavuudella. Valitse selkeä viite tai samaan visuaaliseen maailmaan kuuluva joukko ja anna sitten kehotteen kuvailla uusi kohde ja kohtaus. Viitteen ja tuloksen värivastaavuutta ei taata, joten määrittele tarvittava paletti selvästi ja vertaa tulosta siihen. Käytä viitetyyligenerointiin yhdestä kymmeneen PNG-, JPG- tai WebP-kuvaa, yhteensä enintään 64 MB ja kukin alle 20 MB. Jokaisen viitteen lyhyemmän sivun on oltava vähintään 256 pikseliä, pidemmän enintään 4 096 pikseliä ja tarkkuuden enintään 16 megapikseliä. Käytä joko näitä viitteitä tai yhteensopivaa tallennettua tyyliä, älä molempia.
Dokumentoitu kuvasta kuvaksi -operaatio yhdistää olemassa olevan kuvan ja kehotteen; voimakkuus 0–1 määrittelee uuden tuloksen etäisyyden lähteestä. Se ei hyväksy V4-tyyliasetuksia kyseisessä operaatiossa. Nykyinen generointiviite sulkee pois myös kuratoidut tyylinimet sekä negative_prompt-, text_layout-, artistic_level- ja no_text-asetukset. Valmistele myönteinen kuvaus halutusta tuloksesta ja arvioi kuvaa kohdesommitelmassa. Tavallinen V4 tarjoaa kohdennetun rasterimuotoisen suunnittelutulkinnan tietyllä versiolla, muodolla ja tuloskoolla. Anna kuvasta kuvaksi -työhön PNG, JPG, WebP tai SVG alle 20 MB:n koossa, enintään 16 megapikseliä ja molemmat sivut 256–4 096 pikseliä.
Ailoot Ultra · Kuvat POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Aloitus
Recraft V4 generoi 1K-rasterikuvia keskittyen sommitteluun, värisuhteisiin ja yksityiskohtaiseen luovaan ohjeeseen. Se kattaa kuvituksen, fotorealistiset kohtaukset ja graafiset suunnittelukonseptit sekä valinnaiset tyylisyötteet ja erillisen kuvasta kuvaksi -työnkulun.
- Hyväksytyt syötteet
- Teksti · Kuvat
- Tulokset
- Kuvat
Saatavilla Ailootissa · syötteet & menetelmät
Ailoot Ultra · Kuvat POST /v1/images/generations
- Syötetyypit
text,image- Tulostyypit
image- Tulosteen muoto
- Kuvatiedosto
| Kenttä | Tyyppi | Vaatimus | Arvot & rajat | Oletus |
|---|---|---|---|---|
Kenttämodel | Tyyppistring | VaatimusPakollinen | Arvot & rajat recraft/recraft-v4 | Oletus— |
Kenttäprompt | Tyyppistring | VaatimusPakollinen | Arvot & rajat Vähimmäispituus: 1 | Oletus— |
Kenttän | Tyyppiinteger | VaatimusValinnainen | Arvot & rajat Vähimmäismäärä: 1 Enimmäismäärä: 6 | Oletus— |
Kenttäaspect_ratio | Tyyppistring | VaatimusValinnainen | Arvot & rajat 1:1, 4:3, 3:4, 16:9, 9:16, auto | Oletus— |
Kenttäinput_references | Tyyppiarray | VaatimusValinnainen | Arvot & rajat Kohteiden vähimmäismäärä: 0 Kohteiden enimmäismäärä: 1 | Oletus— |
Syöteaineistojen yhdistelmät
Tekstistä kuvaksi · Pakollinen: prompt
reference_guided_image · Pakollinen: prompt, actual image reference
Menetelmän parametrit ja elinkaari
| Parametri | Sopimus |
|---|---|
Parametricontent_type | Sopimusapplication/json |
Parametrirequired | Sopimusmodel, prompt |
Parametrimaterial_types | Sopimustext, image |
Parametrioptional_controls | Sopimusn, aspect_ratio, input_references |
Parametrin | Sopimus{"minimum":1,"maximum":6} |
Parametrireference_images | Sopimus{"minimum":0,"maximum":1,"source":"asiakkaan todellisuudessa toimittama aineisto"} |
Parametriprovider_specific_options | SopimusVain tallennettu täsmällinen rajapintapisteen sallittujen arvojen luettelo: style/controls/text_layout; rakenteita ei arvata. |
Menetelmien aliakset: /v1/images
Elinkaari: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · todellisuudessa palautettu task_id tai mediakirjaston tietue
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Pelkkää kehotetta käyttävä esimerkki säilyttää virallisen ImageGenerationRequest-rakenteen.
Säilytä jokainen palautettu kuva ja koko vastaus; tulosmäärä on todellinen määrä, ei pyydetty n.
Hinnoittelu
Lopullisen veloituksen laskenta
Näytettyjen hintojen avulla arvioidaan kustannukset ennen generointia. Lopullinen veloitus lasketaan alkuperäiselle generoinnille kirjatun kustannuksen perusteella. Lopullisena laskutettavana määränä ei käytetä tulosteen mitattua kestoa eikä ennustettuja määriä.
Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.
- Nopea tila
- Ei määritetty Kun nopea tila on valittu
- Flex-tila
- Ei määritetty Kun flex-tila on valittu
- Päättelyn enimmäisteho
- Ei määritetty Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä
Arvioidut vertailuhinnat
Hinnat asetusten mukaan
Kohdista kukin veloitus näytettyihin ehtoihin. Käytä yhtä hintaa kutakin vaihtoehtoisten asetusten ryhmää kohden.
| Asetukset | Hinnasto | Ennustettu määrä | Laskutusyksikkö | Veloitus |
|---|---|---|---|---|
| AsetuksetTokenien perushinnat | HinnastoPerushinta | Ennustettu määrä— | Laskutusyksikkö— | Veloitus Syöte · Syötetokenit · Arvio vain vertailua varten — / 1K tokenia Tuloste · Tulostokenit · Arvio vain vertailua varten — / 1K tokenia Syöte · Välimuistin luku · Arvio vain vertailua varten — / 1K tokenia Syöte · Välimuistiin kirjoitus · Arvio vain vertailua varten — / 1K tokenia Syöte · Välimuistiin kirjoitus, 1 tunti · Arvio vain vertailua varten — / 1K tokenia |
| AsetuksetUltra | Hinnasto— | Ennustettu määrä— | Laskutusyksikkötuloskuvaa kohden | Veloitus Tuloste · kuvatuloste · Arvio vain vertailua varten $0.08 tuloskuvaa kohden |
| AsetuksetArvioitu luontikustannus | Hinnasto— | Ennustettu määräyhden generoinnin arvio | Laskutusyksikkö— | Veloitus Tuloste · Arvioidut generointikustannukset · Arvio vain vertailua varten $0.08 arvio ennen generointia Tämä arvio ei ole lisämaksu eikä valmistuneen generoinnin kiinteä hinta. |
Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →
Viitehinnaston tiedot
Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.
Kuvahinnoittelun kokoonpanot
Hinnat asetusten mukaan
| Asetukset | Laskutusehdot | Veloitus |
|---|---|---|
| AsetuksetTuloskuva | LaskutusehdotHinnoitteluvaihtoehtoa ei ole määritelty. | Veloitus Tuloste · Kuvatuloste $0.08 kuvaa kohden Vastaavat luettelomerkinnät kuvaavat samaa veloitusta; ne eivät lisää toista maksua. |
Esimerkkipyynnöt
Ailoot Ultra · Kuvat
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-v4', '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-v4', '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-v4", "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");
Vastaanota ja tallenna tulokset
Ailoot Ultra · Kuvat
Lataa jokainen palautettu kuva tai tallenna sen Base64-sisältö
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Säilytä kaikki valmistuneet tulokset
Tallenna jokainen valmistunut kuva; nouda jokainen palautettu URL tai pura sen Base64-sisältö.
Säilytä jokainen data-alkio ja kaikki käyttötiedot; ota hallintaan ja tallenna kaikki todellisuudessa palautetut kuvat. Älä keksi osoitteita tai tunnisteita.
Jos alkuperäinen vastaus on tarkistettava
Jos kuvan generoinnin tai muokkauksen tulos edellyttää tarkistusta, säilytä alkuperäinen operation_id/X-Client-Request-ID ja palautetut tulostiedot. Hae olemassa olevat omistamasi tulokset mediakirjastosta käyttämällä todellisia task_id- tai asset_id-arvoja. Älä lähetä generointi- tai muokkauspyyntöä uudelleen äläkä muodosta tilakyselyn URL-osoitetta operation_id-arvosta.
Vastauksen kentät
| Kenttä | Tyyppi |
|---|---|
Kenttäcreated | Tyyppiinteger |
Kenttädata[].url | Tyyppistring |
Kenttädata[].b64_json | Tyyppibase64 string |
Kenttäusage | Tyyppiobject |
Virheet ja seuraavat vaiheet
| Vastaus | Ehto | Seuraava vaihe |
|---|---|---|
Vastaus400 · invalid_request_error | EhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo | Seuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä. |
Vastausserver_error | EhtoPalautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta | Seuraava vaiheSäilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen. |
Aliakset
Mallin aliakset
Ailoot Ultra recraft/recraft-v4
Menetelmäpolkujen aliakset
/v1/images
Liittyvät kutsujan ID:t
FAQ · Recraft: Recraft V4
- Mitä syötteitä ja tuloksia on saatavilla?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- Mitä kenttiä pyyntö käyttää?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Mitä rajoja sovelletaan?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6