Recraft: Recraft V3
ينشئ Recraft V3 صورًا فوتوغرافية ورسومًا توضيحية وتخطيطات جرافيكية بتكوين يراعي النص وعناصر تحكّم أسلوبية. وتلائم نسخه النقطية وSVG المستقلة الملصقات ومجموعات صور العلامات التجارية والأيقونات والتصاميم التي يجب أن تعمل فيها الصياغة والبنية البصرية معًا.
عن النموذج
يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.
Recraft V3 نموذج لتوليد الصور صُمّم للتصميم الجرافيكي والمشاهد الفوتوغرافية والمرسومة. يصف توجيه مكتوب العنصر والمكان والتكوين؛ والناتج صورة. يطوّر V3 رسم النص والواقعية الفوتوغرافية لدى Recraft، مع الحفاظ على اتساق الأسلوب من الصور النموذجية من دون إعادة تدريب.
النص جزء من التكوين
يعمل V3 مع النص داخل الصورة، بما فيه النص الأطول والحروف متوسطة الحجم. تصف Recraft مرحلة تخطيط تحدّد الكلمات ومواضعها قبل توليد الصورة. ويمكن إنتاج التخطيط تلقائيًا من التوجيه أو ترتيبه يدويًا في بيئة التصميم لدى Recraft. ويساعد ذلك في ربط عنوان ورسم ونص مساند داخل تكوين واحد. وتوثّق الجهة المصنّعة أيضًا إحداثيات صريحة لتخطيط النص، معبَّرًا عنها نسبةً إلى الصورة لا كشبكة بكسلات ثابتة. يحتوي كل عنصر نصي على كلمة واحدة وأربع نقاط زوايا بإحداثيات مطبَّعة: (0, 0) أعلى اليسار و(1, 1) أسفل اليمين. ويمكن للإحداثيات تجاوز ذلك النطاق، وعندها يُقتطع الشكل. ويجب أن تتبع كلمات التخطيط النصي الصريح قيود المحارف الموثّقة.
لملصق أو غلاف، قدّم الصياغة الدقيقة وصِف تسلسلها الهرمي: السطر المتصدّر ومكانه وكيف تدعمه الصورة. تحقّق من الإملاء والتباعد المرسومين عند اختيار النتيجة.
الأسلوب والألوان والاتجاه الفني
يتضمّن V3 أساليب فوتوغرافية وتوضيحية وشعارية منسّقة، إضافة إلى مكتبة مستقلة للأساليب المتجهية. Recraft V3 Raw الأسلوب الافتراضي للنموذج النقطي؛ وVector art الافتراضي للنسخة المتجهية. تستهدف Photorealism مظهرًا فوتوغرافيًا، بينما تستوعب Illustration الملامس الفنية والتظليل والانتقالات اللونية الأكثر تعقيدًا. وتفضّل الأساليب المتجهية الأشكال والألوان المحدودة والتعبئات المسطّحة أو التدرّجات البسيطة.
يمكن بناء أساليب مخصّصة من صور مرجعية أو أساليب متوافقة موجودة أو مزيج منها. وتوفّر اتجاهًا بصريًا قابلًا لإعادة الاستخدام عبر سلسلة صور. وتتيح عناصر المزج الموثّقة للمراجع والأساليب المصدرية حمل أوزان مستقلة؛ وتتطابق أعداد الأوزان مع المصادر. وسياسَتا المزج المذكورتان هما PaletteMatch وMaxWeight. تسمح الجهة المصنّعة بما يصل إلى 10 صور مرجعية للأسلوب وتستخدم وضع مطابقة الأسلوب regular لV3. والأسلوب المخصّص المخزّن والمراجع الأسلوبية المباشرة مدخلان بديلان، ويجب أن يتوافق الأسلوب المخصّص مع النموذج المستخدم للتوليد.
توجّه الألوان المفضّلة ولون الخلفية لوحة الألوان. ويوثّق الدليل ما يصل إلى 10 ألوان RGB، بكل مكوّن من 0 إلى 255. وتتراوح الأوزان النسبية الاختيارية من 0 إلى 1؛ ويجب تقديمها لكل الألوان أو عدم تقديمها لأي منها، ويجب ألّا يتجاوز مجموعها 1. ويتراوح المستوى الفني من 0 لمعالجة ثابتة ونظيفة إلى 5 لتكوينات أكثر حيوية وغرابة. ويصف التوجيه السلبي العناصر غير المرغوبة؛ ويعطّل عنصر مستقل لمنع النص تخطيطات النص المضمّنة. وتتوفر بذرة عشوائية لقابلية إعادة الإنتاج. تمنح هذه العناصر وسائل مختلفة للمشهد وأسلوبه وتخطيطه البصري.
الصور النقطية ونسخة SVG مستقلة
توثّق Recraft نسختين من V3. ينتج النموذج النقطي WebP من دون فقدان أو PNG، ويلائم التفاصيل الفوتوغرافية والتظليل والرسوم ذات الملمس. وينتج Recraft V3 Vector صيغة SVG: مسارات وأشكال يمكن تكبيرها من دون دقة بكسلات ثابتة. ويلائم الرموز التصويرية ومفاهيم الشعارات والشارات والأعمال المتجهية التفصيلية. وتحويل الصور النقطية إلى متجهية عملية مستقلة عن توليد عمل متجهي مباشرة.
لكل نسخة هويتها الخاصة. فصورة ذات مظهر متجهي ومخرج SVG فعلي خياران مختلفان. اختر المخرج المقصود عند تجهيز مسار التصميم، بدلًا من اعتبار الاسم المشترك V3 دليلًا على أن كل عملية تعيد نوع الملف نفسه.
تحرير الأعمال الموجودة وإنهاؤها
تسرد وثائق V3 لدى Recraft التوليد من صورة إلى صورة والترميم داخل المناطق والتوسيع خارج الإطار واستبدال الخلفية أو توليدها. يجمع العمل من صورة إلى صورة صورة موجودة بتوجيه جديد. ويعيد الترميم توليد المنطقة المختارة باستخدام صورة وقناع مطابق؛ ويضيف التوسيع محتوى خارج الإطار الأصلي. وتتعامل عمليات الخلفية مع محيط العنصر.
تتضمّن الأدوات المصاحبة أيضًا المسح وإزالة الخلفية والتحويل إلى متجهات وطريقتين لرفع الدقة. ويمكن لرفع الدقة الإبداعي إدخال تفاصيل جديدة؛ ويستهدف رفع الدقة الحاد نسخة أكبر وأكثر وضوحًا للمحتوى الموجود. وهذه عمليات مستقلة بمدخلاتها ونتائجها الخاصة، وليست معاني إضافية لاسم النموذج النقطي أو المتجهي.
حدود التوجيه والحجم والصورة المصدرية
تقبل مواصفات توليد V3 لدى الجهة المصنّعة توجيهًا حتى 1000 حرف و1–6 صور لكل طلب. وتدعم 14 نسبة أبعاد: 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 و9:16. وتشمل الأمثلة النقطية الموثّقة 1024x1024 و1820x1024 و1024x1820. ويجب أن تكون الأبعاد النقطية الدقيقة من القائمة المدعومة؛ ويستخدم SVG نسب الأبعاد من دون حجم بكسلات ثابت. وعند إغفال الحجم، يختاره نظام الجهة المصنّعة من التوجيه.
لعمليات إدخال الصور، تسرد الجهة المصنّعة PNG وJPG وWebP، مع SVG عندما تسمح به العملية المحدّدة. يجب أن تكون الملفات أقل من 20 MB، وألّا تتجاوز 16 MP، وألّا يزيد الضلع الأطول على 4096 بكسل. ويكون الضلع الأقصر 256 بكسل على الأقل، مع استثناء 32 بكسل لرفع الدقة الحاد. وتطابق الأقنعة حجم الصورة وتستخدم الأسود والأبيض الخالصين؛ وللمراجع الأسلوبية حد إجمالي 64 MB.
لمشروع Ailoot API، حوّل المهمة إلى توجيه صوري مركّز: النص الدقيق وترتيب الأجسام والأسلوب البصري والتكوين المطلوب. يحتاج الملصق ومشهد المنتج وسلسلة الأيقونات إلى توجيهات مختلفة؛ وحافظ على الفروق ذات الصلة بين نسخ V3 وعملياته عند تحديد كيفية استخدام كل نتيجة.
Ailoot Ultra · الصور POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3البداية
ينشئ Recraft V3 صورًا فوتوغرافية ورسومًا توضيحية وتخطيطات جرافيكية بتكوين يراعي النص وعناصر تحكّم أسلوبية. وتلائم نسخه النقطية وSVG المستقلة الملصقات ومجموعات صور العلامات التجارية والأيقونات والتصاميم التي يجب أن تعمل فيها الصياغة والبنية البصرية معًا.
- المدخلات المقبولة
- النص · الصور
- النتائج
- الصور
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · الصور POST /v1/images/generations
- الإدخال
text,image- الإخراج
image- صيغة الإخراج
- ملف صورة
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود recraft/recraft-v3 | القيمة الافتراضية— |
الحقل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.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-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");
استلام النتائج وحفظها
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-v3
الأسماء البديلة لمسارات الطرائق
/v1/images
معرّفات النماذج ذات الصلة IDs
FAQ · Recraft: Recraft V3
- ما المدخلات والنتائج المتاحة؟
POST /v1/images/generations·recraft/recraft-v3:text,image→image- ما الحقول التي يستخدمها الطلب؟
POST /v1/images/generations·recraft/recraft-v3:model,prompt,n,aspect_ratio,input_references- ما الحدود المطبقة؟
POST /v1/images/generations·recraft/recraft-v3:n.minimum:1;n.maximum:6