Recraft: Recraft V4 Pro
يولّد Recraft V4 Pro صورًا نقطية 2K للتكوينات التفصيلية والواقعية الفوتوغرافية والرسوم التوضيحية والعمل الإبداعي الموجّه للطباعة. وهو إصدار V4 الأعلى دقة، بتوجيهات نصية ومدخلات أسلوبية اختيارية ومسار مستقل للتحويل من صورة إلى صورة.
عن النموذج
يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.
Recraft V4 Pro النموذج النقطي الأعلى دقة في عائلة V4 لدى Recraft. يركّز V4 على الحكم البصري والتكوين المتوازن والألوان المترابطة والتفسير المتأني للاتجاه الإبداعي. ويضع المنتج Pro للتفاصيل الأدق والمشاهد المعقّدة الأكثر واقعية والمرئيات الإنتاجية الكبيرة. استخدمه لرسم تفصيلي أو صورة تحريرية أو مفهوم ملصق أو صورة أخرى تستفيد من نتيجة نقطية أكبر. ويبقى مستقلًا عن نموذج V4.1 اللاحق وعن مخرجات SVG في V4 Pro Vector.
رمز المنتج المحدّد recraftv4_pro. المخرجات الموثّقة نقطية 2K بصيغة WebP من دون فقدان أو PNG: 2048 × 2048 بكسل للمربع و2688 × 1536 ل16:9 و1664 × 2560 ل2:3. وللنسب المدعومة الأخرى أبعادها الخاصة. اختر نسبة أبعاد للتخطيط المقصود أو حجمًا دقيقًا مسموحًا؛ فحجم البكسلات الاعتباطي ليس جزءًا من عقد التوليد الموثّق. ولV4 القياسي مخرجات نقطية 1K أصغر، بينما لا تملك النماذج المتجهية دقة بكسلات ثابتة.
يمكن لV4 تفسير توجيه قصير للاستكشاف أو توجيه منظم لنتيجة منضبطة. وللاتجاه الفني المحدّد، ينتقل دليل الجهة المصنّعة من العنصر والبيئة إلى التأطير والصفات والعلاقات المكانية والإضاءة والعمق والمزاج. ولصورة منتج تحريرية، اطلب صورة رأسية درامية لكرسي نحتي بأسطح معدنية مصقولة بالفرشاة وإضاءة جانبية وخلفية داكنة هادئة ومساحة فوق الجسم لعنوان. تسمية هذه العلاقات تجعل التكوين المقصود أوضح من طلب عام لصورة فاخرة.
يشمل المجال الإبداعي للعائلة الرسوم السردية والمشاهد الواقعية والمرئيات المجسّمة بإشارات للمادة والإضاءة. وتظل النتيجة ذات المظهر الثلاثي الأبعاد صورة، لا مشهدًا ثلاثي الأبعاد قابلًا للتحرير. ولملصق جرافيكي، حدّد الطبقات البصرية وتفاعلها: الخلفية والرسم أو الصورة والتسلسل الهرمي للعناوين والنص المساند. يُقدَّم V4 لعبارات قصيرة ومتوسطة الطول مقروءة، لكن ينبغي فحص الإملاء والتسلسل النهائيين بدلًا من استنتاجهما من اسم النموذج.
يسمح مرجع التوليد الحالي بتوجيهات حتى 10,000 حرف ومخرج واحد إلى ستة مخرجات وبذرة عشوائية وعناصر للألوان المفضّلة ولون الخلفية. ويمكن لأساليب مخصّصة اختيارية أو صور مرجعية متوافقة توجيه المظهر بمطابقة مرنة أو دقيقة. ولا يقبل النموذج عناصر V3 الأقدم negative_prompt أو الأساليب المنسّقة أو text_layout أو artistic_level أو no_text. صِف الصورة النهائية المقصودة في التوجيه الإيجابي وأبقِ متطلبات العنصر والتخطيط والألوان صريحة. وللتوليد بأسلوب مرجعي، استخدم من صورة واحدة إلى عشر صور PNG أو JPG أو WebP، بإجمالي لا يتجاوز 64 MB وحجم أقل من 20 MB لكل صورة. ويحتاج كل مرجع إلى ضلع أقصر لا يقل عن 256 بكسل وضلع أطول لا يزيد على 4,096 بكسل ودقة لا تتجاوز 16 ميغابكسل. استخدم هذه المراجع أو أسلوبًا محفوظًا متوافقًا، لا كليهما.
توثّق Recraft عملية مستقلة من صورة إلى صورة لV4. تجمع صورة موجودة وتوجيهًا مع قوة من 0 إلى 1 للتحكّم بدرجة التغيير، ولا تقبل عناصر أسلوب V4 المخصّص في تلك العملية. جهّز المصدر ضمن حدود إدخال الصور لدى المنتج واذكر الصفات التي يجب أن تنتقل إلى النتيجة الجديدة. ولصورة نهائية أكبر، افحص التفاصيل الدقيقة والاقتصاص والحروف بالحجم المقصود. تدعم التفاصيل النقطية الإضافية في Pro ذلك الفحص، بينما تبقى الصورة تفسيرًا مولَّدًا للتوجيه الإبداعي المقدَّم. وللتحويل من صورة إلى صورة، قدّم PNG أو JPG أو WebP أو SVG بحجم أقل من 20 MB، ودقة لا تتجاوز 16 ميغابكسل، وكلا الضلعين بين 256 و4,096 بكسل.
Ailoot Ultra · الصور POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proالبداية
يولّد Recraft V4 Pro صورًا نقطية 2K للتكوينات التفصيلية والواقعية الفوتوغرافية والرسوم التوضيحية والعمل الإبداعي الموجّه للطباعة. وهو إصدار V4 الأعلى دقة، بتوجيهات نصية ومدخلات أسلوبية اختيارية ومسار مستقل للتحويل من صورة إلى صورة.
- المدخلات المقبولة
- النص · الصور
- النتائج
- الصور
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · الصور POST /v1/images/generations
- الإدخال
text,image- الإخراج
image- صيغة الإخراج
- ملف صورة
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود recraft/recraft-v4-pro | القيمة الافتراضية— |
الحقل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
معلمات الطريقة ودورة حياتها
| المعلمة | المواصفات |
|---|---|
المعلمةcontent_type | المواصفاتapplication/json |
المعلمةrequired | المواصفاتmodel, prompt |
المعلمةmaterial_types | المواصفاتtext, image |
المعلمةoptional_controls | المواصفاتaspect_ratio, n, input_references |
المعلمةexact_supported_parameters | المواصفات{"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}} |
المعلمةreference_material_rule | المواصفاتمراجع الصور الفعلية الخاصة بالعميل فقط؛ وتخضع لشروط نقطة النهاية لدى المزوّد. |
الأسماء البديلة للطريقة: /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}
استخدم النموذج الدقيق وحقول الإدخال الموثّقة.
احتفظ بالاستجابة كاملة، وكل مخرج فعلي، والمعرّفات الأصلية المُعادة.
الباقات
كيفية احتساب الرسوم النهائية
تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.
مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.
- الوضع السريع
- غير محدد عند اختيار الوضع السريع
- الوضع المرن
- غير محدد عند اختيار وضع flex
- أقصى جهد للاستدلال
- غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال
تعرفات تقديرية للمقارنة
الأسعار حسب الإعدادات
طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.
| الإعدادات | جدول التعرفة | الكمية المتوقعة | وحدة الفوترة | الرسوم |
|---|---|---|---|---|
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | الكمية المتوقعة— | وحدة الفوترة— | الرسوم الإدخال · رموز الإدخال · تقدير للمقارنة فقط — / 1K من الرموز الإخراج · رموز الإخراج · تقدير للمقارنة فقط — / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت · تقدير للمقارنة فقط — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت · تقدير للمقارنة فقط — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة · تقدير للمقارنة فقط — / 1K من الرموز |
| الإعداداتUltra | جدول التعرفة— | الكمية المتوقعة— | وحدة الفوترةلكل صورة مُخرجة | الرسوم الإخراج · إخراج الصور · تقدير للمقارنة فقط $0.5 لكل صورة مُخرجة |
| الإعداداتتكلفة التوليد التقديرية | جدول التعرفة— | الكمية المتوقعةتقدير لتوليد واحد | وحدة الفوترة— | الرسوم الإخراج · تكلفة التوليد التقديرية · تقدير للمقارنة فقط $0.5 تقدير قبل الإنشاء هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة. |
تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →
تفاصيل التعرفة المرجعية
لا تغيّر جداول التعرفة المرجعية على مستوى النموذج اختيار الطريقة أو عروض الأسعار أو الرسوم. وتستخدم الرسوم الفعلية تعرفات طريقة Ailoot المحددة.
إعدادات تسعير الصور
الأسعار حسب الإعدادات
| الإعدادات | شروط الفوترة | الرسوم |
|---|---|---|
| الإعداداتصورة المخرجات | شروط الفوترةلم يُعلَن أي خيار تسعير بديل. | الرسوم الإخراج · صورة المخرجات $0.5 لكل صورة تصف البنود المتكافئة الرسم نفسه؛ ولا تضيف رسماً ثانياً. |
أمثلة للطلبات
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-pro', '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-pro', '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-pro", "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 أو معرّفات.
عند الحاجة إلى التحقق من الاستجابة الأصلية
إذا تطلبت نتيجة توليد صورة أو تعديلها التحقق، فاحتفظ بقيمة operation_id/X-Client-Request-ID الأصلية ومعلومات النتيجة المُعادة. استعد النتائج الموجودة والمملوكة لك عبر مكتبة الوسائط باستخدام قيم task_id أو asset_id الفعلية. لا تُعِد إرسال طلب التوليد أو التعديل، ولا تنشئ عنوان URL للاستعلام الدوري من operation_id.
حقول الاستجابة
| الحقل | النوع |
|---|---|
الحقلcreated | النوعinteger |
الحقلdata[].url | النوعstring |
الحقلdata[].b64_json | النوعbase64 string |
الحقلusage | النوعobject |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot Ultra recraft/recraft-v4-pro
الأسماء البديلة لمسارات الطرائق
/v1/images
معرّفات النماذج ذات الصلة IDs
FAQ · Recraft: Recraft V4 Pro
- ما المدخلات والنتائج المتاحة؟
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- ما الحقول التي يستخدمها الطلب؟
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- ما الحدود المطبقة؟
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6