Recraft: Recraft V4
Recraft V4 композицияға, түс байланыстарына және егжей-тегжейлі шығармашылық бағытқа назар аударып, 1K растрлық кескіндер жасайды. Ол иллюстрацияны, фотореалистік көріністер мен графикалық дизайн тұжырымдамаларын қамтиды; қосымша стиль кірістері және бөлек image-to-image үдерісі бар.
Модель туралы
Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.
Recraft V4 — Recraft V4 буынындағы стандартты растрлық модель. Өндіруші дизайн пайымын: теңгерімді композицияны, үйлесімді түс байланыстарын және визуалдық ниетті қолдайтын бөлшектерді атап көрсетеді. Ол стильденген иллюстрациялармен, фотографиялық көріністермен және графикалық дизайн тұжырымдамаларымен жұмыс істей алады. Тапсырма эстетикалық таңдау мен сұрау дәлдігін біріктіретін кескінді қажет еткенде, қысқа бағыттан көңіл күйді іздестіру үшін де, ойластырылған орналасуды егжей-тегжейлі көрсету үшін де оны пайдаланыңыз.
Нақты модель коды — recraftv4. Өндіруші анықтамасында шығынсыз WebP немесе PNG пішіміндегі 1K растрлық нәтиже берілген. Шаршы кескін 1024 × 1024 пиксель, 16:9 өлшемі 1344 × 768, 2:3 өлшемі 832 × 1280; басқа қолдау көрсетілетін арақатынастар өз өлшемдерін қолданады. V4 Pro — бөлек 2K растрлық нұсқа, ал V4 Vector және Pro Vector өңделетін SVG қайтарады. Осы әртүрлі нәтиже қасиеттерін біріктірмей, қажетті материалға сай нақты V4 нұсқасын таңдаңыз.
Өндіруші нұсқаулығы қысқа, түсіндіруге ерік беретін сұраулар мен құрылымды шығармашылық бағытты ажыратады. Қысқа тіркес пішінді, көңіл күй мен кадрлауды зерттеуге орын қалдырады. Құрылымды тапсырма нысанды, ортаны, қалыпты, материалды, қосымша элементтерді, жарық пен визуалдық иерархияны атай алады. Оқиғалы иллюстрация үшін шағын көпірден өтіп бара жатқан велосипедшіні, батыл ықшам пішіндерді, жылы бәсең түстерді және солдан оңға анық қозғалысты сипаттаңыз. Бұл мазмұн мен композиция шешімдері қатыссыз стиль сын есімдерінің ұзын тізімінен гөрі іске жарамды.
V4 ауқымына иллюстрация, көлемді бейнелер және фотореалистік кескіндер кіреді. Нұсқаулық иллюстрация үшін сурет салу логикасын, 3D тәрізді кескін үшін материалды, жарықты, камера мен тереңдікті сипаттауды ұсынады. Соңғысы өңделетін тор емес, растрлық кескін болып қалады. Постер немесе қаптама тұжырымдамасында қай сөздер негізгі екенін, олардың қайда орналасатынын және кескін мен типографияның қалай байланысатынын көрсетіңіз. Өндіруші оқылатын қысқа және орташа ұзындықтағы мәтінді атап өтеді; қолданар алдында алынған кескіндегі нақты сөздер мен орналасуды тексеріңіз.
Генерация 10 000 таңбаға дейінгі сұрауды, кездейсоқ seed мәнін, бірден алтыға дейін нәтижені, қалаулы түстер мен қажетті фон түсін қолдайды. Қосымша үйлесімді жеке стильдер мен үлгі кескіндер икемді не дәл сәйкестендіру арқылы визуалдық өңдеуді бағыттай алады. Таза үлгіні немесе бір визуалдық әлемге жататын жиынтықты таңдап, жаңа нысан мен көріністі сұрауда сипаттаңыз. Үлгі мен нәтиже түстерінің сәйкестігіне кепілдік жоқ, сондықтан қажетті палитраны нақты беріп, нәтижемен салыстырыңыз. Үлгі стилімен генерациялау үшін PNG, JPG немесе WebP пішіміндегі бірден онға дейін кескін пайдаланыңыз: жалпы көлемі 64 МБ-тан аспасын, әрқайсысы 20 МБ-тан кіші болсын. Әр үлгінің қысқа жағы кемінде 256 пиксель, ұзын жағы 4 096 пиксельден аспайтын, ажыратымдылығы 16 мегапиксельден аспайтын болуы керек. Осы үлгілерді немесе үйлесімді сақталған стильді пайдаланыңыз, екеуін бірге бермеңіз.
Құжатталған image-to-image операциясы бар кескін мен сұрауды біріктіреді; 0-ден 1-ге дейінгі strength мәні жаңа нәтиженің түпнұсқадан қаншалықты ауытқитынын анықтайды. Ол бұл операцияда V4 стиль басқару параметрлерін қабылдамайды. Қазіргі генерация анықтамасы дайын стиль атаулары, negative_prompt, text_layout, artistic_level және no_text параметрлерін де қамтымайды. Қажетті нәтижені оң сипаттамамен дайындап, материалды мақсатты композицияда бағалаңыз. Стандартты V4 нақты нұсқасы, пішімі және нәтиже өлшемі бар маманданған растрлық дизайн түсіндірмесін ұсынады. Image-to-image үшін 20 МБ-тан кіші, 16 мегапиксельден аспайтын, екі жағы да 256–4 096 пиксель аралығындағы PNG, JPG, WebP немесе SVG беріңіз.
Ailoot Ultra · Суреттер POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Бастау
Recraft V4 композицияға, түс байланыстарына және егжей-тегжейлі шығармашылық бағытқа назар аударып, 1K растрлық кескіндер жасайды. Ол иллюстрацияны, фотореалистік көріністер мен графикалық дизайн тұжырымдамаларын қамтиды; қосымша стиль кірістері және бөлек image-to-image үдерісі бар.
- Қабылданатын кіріс деректері
- Мәтін · Суреттер
- Нәтижелер
- Суреттер
Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер
Ailoot Ultra · Суреттер POST /v1/images/generations
- Кіріс
text,image- Шығыс
image- Шығыс пішімі
- Сурет файлы
| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
|---|---|---|---|---|
Өрісmodel | Түріstring | ТалапМіндетті | Мәндер мен шектеулер recraft/recraft-v4 | Әдепкі— |
Өрісprompt | Түріstring | ТалапМіндетті | Мәндер мен шектеулер Ең аз ұзындық: 1 | Әдепкі— |
Өрісn | Түріinteger | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Ең көбі: 6 | Әдепкі— |
Өрісaspect_ratio | Түріstring | ТалапМіндетті емес | Мәндер мен шектеулер 1:1, 4:3, 3:4, 16:9, 9:16, auto | Әдепкі— |
Өрісinput_references | Түріarray | ТалапМіндетті емес | Мәндер мен шектеулер Элементтердің ең аз саны: 0 Элементтердің ең көп саны: 1 | Әдепкі— |
Кіріс материалдарының үйлесімдері
Мәтіннен сурет жасау · Міндетті: prompt
reference_guided_image · Міндетті: prompt, actual image reference
Әдіс параметрлері мен өмірлік циклі
| Параметр | Параметр талаптары |
|---|---|
Параметрcontent_type | Параметр талаптарыapplication/json |
Параметрrequired | Параметр талаптарыmodel, prompt |
Параметрmaterial_types | Параметр талаптарыtext, image |
Параметрoptional_controls | Параметр талаптарыn, aspect_ratio, input_references |
Параметрn | Параметр талаптары{"minimum":1,"maximum":6} |
Параметрreference_images | Параметр талаптары{"minimum":0,"maximum":1,"source":"клиент ұсынған нақты материал"} |
Параметрprovider_specific_options | Параметр талаптарыТек нақты эндпоинт үшін сақталған рұқсат тізіміндегі style/controls/text_layout; жорамал құрылымдар қолданылмайды. |
Әдістің балама атаулары: /v1/images
Өмірлік цикл: 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}
Тек промпт қолданылатын мысал ресми ImageGenerationRequest құрылымын сақтайды.
Қайтарылған әрбір суретті және толық жауапты сақтаңыз; шығыс саны сұралған n бойынша емес, нақты нәтиже бойынша анықталады.
Тарифтер
Қорытынды төлем қалай есептеледі
Көрсетілген тарифтер генерация басталғанға дейінгі құнын бағалауға арналған. Соңғы төлем бастапқы генерация үшін тіркелген құннан есептеледі. Нәтиженің өлшенген ұзақтығы мен болжамды көлемдер төлемге негіз болатын түпкілікті көлем болып саналмайды.
Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.
- Жылдам режим
- Көрсетілмеген Жылдам режим таңдалғанда
- Икемді режим
- Көрсетілмеген flex режимі таңдалғанда
- Ой қорытудың ең жоғары деңгейі
- Көрсетілмеген Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда
Салыстыруға арналған болжамды мөлшерлемелер
Баптаулар бойынша бағалар
Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.
| Баптау | Мөлшерлемелер кестесі | Болжамды мөлшер | Есептеу бірлігі | Төлем |
|---|---|---|---|---|
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Болжамды мөлшер— | Есептеу бірлігі— | Төлем Кіріс · Кіріс токендері · Тек салыстыруға арналған бағалау — / 1K токен Шығыс · Шығыс токендері · Тек салыстыруға арналған бағалау — / 1K токен Кіріс · Кэшті оқу · Тек салыстыруға арналған бағалау — / 1K токен Кіріс · Кэшке жазу · Тек салыстыруға арналған бағалау — / 1K токен Кіріс · Кэшке жазу, 1 сағ · Тек салыстыруға арналған бағалау — / 1K токен |
| БаптауUltra | Мөлшерлемелер кестесі— | Болжамды мөлшер— | Есептеу бірлігішығыс суреті үшін | Төлем Шығыс · шығыс кескін · Тек салыстыруға арналған бағалау $0.08 шығыс суреті үшін |
| БаптауГенерацияның болжамды құны | Мөлшерлемелер кестесі— | Болжамды мөлшербір генерацияға арналған болжам | Есептеу бірлігі— | Төлем Шығыс · Генерацияның болжамды құны · Тек салыстыруға арналған бағалау $0.08 жасауға дейінгі бағалау Бұл бағалау қосымша төлем де, аяқталған генерация үшін белгіленген тұрақты тариф те емес. |
Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. Резервтеу мен төлемді есептеу тәртібі →
Анықтамалық тариф мәліметтері
Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.
Суреттердің баға конфигурациялары
Баптаулар бойынша бағалар
| Баптау | Төлемді есептеу шарттары | Төлем |
|---|---|---|
| БаптауШығыс суреті | Төлемді есептеу шарттарыБаға нұсқасы мәлімделмеген. | Төлем Шығыс · Шығыс кескін $0.08 сурет үшін Баламалы жазбалар бір төлемді сипаттайды; олар екінші алым қоспайды. |
Сұрау мысалдары
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': '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");
Нәтижелерді алу және сақтау
Ailoot Ultra · Суреттер
Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Барлық дайын нәтижені сақтау
Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.
Әрбір дерек элементін және пайдалану деректерін толық сақтаңыз; нақты қайтарылған барлық суретті өз иелігіңізге алып, сақтаңыз. URL мекенжайларын немесе ID мәндерін ойдан қоспаңыз.
Бастапқы жауапты тексеру қажет болса
Кескінді генерациялау немесе өңдеу нәтижесін тексеру қажет болса, бастапқы 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 Ultra recraft/recraft-v4
Әдіс жолдарының балама атаулары
/v1/images
Шақыруға арналған байланысты ID
FAQ · Recraft: Recraft V4
- Қандай кіріс деректері мен нәтижелер қолжетімді?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- Сұрау қандай өрістерді пайдаланады?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Қандай шектеулер қолданылады?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6