Recraft: Recraft V4.1 Flash
يولّد Recraft V4.1 Flash صورًا نقطية 1K من النص للتكرار البصري السريع. يدعم التصوير والصور الشخصية والمشاهد المعقّدة ومفاهيم الشعارات، بمخرجات PNG أو WebP من دون فقدان وتفضيلات ألوان صريحة.
عن النموذج
يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.
Recraft V4.1 Flash نموذج Recraft لتحويل النص إلى صورة من أجل التكرار السريع والعمل البصري واسع الحجم. تحدّد الجهة المصنّعة التصوير والصور الشخصية والأجواء والمشاهد المعقّدة والوسائط المختلطة ومفاهيم الشعارات كاستخدامات قوية. يتحوّل توجيه مكتوب إلى صورة نقطية يمكن مقارنتها باتجاهات إبداعية أخرى قبل تطوير الصورة النهائية. وFlash عضو محدّد في عائلة V4.1، بحجم إخراجه وعناصر تحكّمه المدعومة الخاصة.
المخرجات الأصلية ضمن فئة الصور النقطية 1K لدى Recraft. اختر اللوحة بحسب موضع الاستخدام المقصود: رسم أفقي لترويسة صفحة أو صورة شخصية رأسية أو مرئية مربعة لبطاقة صغيرة. وصيغ الإخراج WebP من دون فقدان وPNG.
ابدأ التوجيه بالعنصر الرئيسي والغرض البصري، ثم صِف التأطير والمكان والإضاءة والوسيط. ولمفهوم منتج، تعليمة مفيدة هي: «راديو صغير بلون كريمي على مكتب جوز، منظر أمامي بزاوية ثلاثة أرباع، ضوء نافذة ناعم، صورة تحريرية هادئة، مساحة فارغة واسعة على اليسار». ولرسم توضيحي، حدّد لغة الأشكال والألوان والعلاقة بين العناصر. أبقِ التفاصيل المعرِّفة للفكرة صريحة بدلًا من إضافة صفات غير مرتبطة. ويسمح توجيه Flash الموثّق بما يصل إلى 10,000 حرف، لذا يمكن وصف مشهد تفصيلي عندما تحتاجه المهمة.
تشمل عناصر التحكّم لدى الجهة المصنّعة الألوان المفضّلة ولون الخلفية المطلوب. ويمكن تقديم بذرة لنتائج قابلة لإعادة الإنتاج، وتوثّق واجهة التوليد من صورة واحدة إلى ست صور في الطلب. وتدعم هذه العناصر مهمة مقارنة مفيدة: تثبيت العنصر والتكوين وتغيير اتجاه بصري واحد ومراجعة الصور الناتجة للتخطيط المقصود. تصف تفضيلات اللون النتيجة المطلوبة؛ قارن ألوان العلامة المهمة بالصورة النهائية قبل جمعها مع نظام تصميم موجود.
ينتج Flash رسومًا نقطية. وقد يساعد مفهوم شعار على اختيار شكل خارجي أو مزاج أو ترتيب، بينما تخص المسارات القابلة للتحرير نماذج Vector المسمّاة بصورة مستقلة. ولا يوجد لFlash إصدار Pro أيضًا. ويوفّر خط V4.1 الكامل تلك الخيارات المستقلة عندما يكون التحرير المتجهي أو التفاصيل الأعلى دقة محور التسليم. تصف الجهة المصنّعة خطوة تنقيح لاحقة لنقل مسودة مختارة نحو صورة أكثر تفصيلًا؛ وتلك خطوة مستقلة لا حجم إخراج أصلي مختلف لFlash.
لا يدعم هذا الإصدار مدخلات صورة إلى صورة أو الأساليب المخصّصة أو معرّفات الأسلوب أو مطابقة الأسلوب أو الصور المرجعية للأسلوب. كما تستبعد واجهته الموثّقة التوجيهات السلبية وعناصر التخطيط النصي الصريح. ضع المظهر والتكوين المطلوبين في التوجيه الإيجابي. وعندما تكون الحروف جزءًا من مفهوم، ضع النص المقصود بين علامتي اقتباس وافحص الحروف المرسومة؛ واستخدم مرحلة تخطيط مستقلة عندما تكون الطباعة والمواضع الدقيقة أساسية.
النتيجة العملية من Flash اتجاه بصري مختار بتوجيه واضح ونسبة أبعاد مناسبة وملف نقطي قابل للاستخدام. قارن العنصر والتأطير والخلفية والتفاصيل المهمة بالحجم الذي ستظهر فيه الصورة. احتفظ بالتوجيه الناجح والملف المختار معًا كي تتبع الخطوة الإبداعية التالية الاتجاه المختار. يساعد التكرار السريع في استكشاف التصميم؛ وتبقى المخرجات المتجهية الأصلية ومطابقة أسلوب المراجع ودقة إصدار V4.1 آخر خيارات نماذج مستقلة.
Ailoot Ultra · الصور POST /v1/images/generations recraft/recraft-v4.1-flash
recraft/recraft-v4.1-flashالبداية
يولّد Recraft V4.1 Flash صورًا نقطية 1K من النص للتكرار البصري السريع. يدعم التصوير والصور الشخصية والمشاهد المعقّدة ومفاهيم الشعارات، بمخرجات PNG أو WebP من دون فقدان وتفضيلات ألوان صريحة.
- المدخلات المقبولة
- النص
- النتائج
- الصور
متاح في Ailoot · المدخلات والطرائق
Ailoot Ultra · الصور POST /v1/images/generations
- الإدخال
text- الإخراج
image- صيغة الإخراج
- ملف صورة
- عدد المخرجات
- 1 إخراج
| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
|---|---|---|---|---|
الحقلmodel | النوعstring | المتطلبمطلوب | القيم والحدود recraft/recraft-v4.1-flash | القيمة الافتراضية— |
الحقلprompt | النوعstring | المتطلبمطلوب | القيم والحدود الحد الأدنى للطول: 1 الشروط: موجّه UTF8 غير فارغ. لا يُختلَق حد لعدد الأحرف يسري على جميع نماذج الشركة المصنّعة. | القيمة الافتراضية— |
الحقلn | النوعinteger | المتطلباختياري | القيم والحدود 1 | القيمة الافتراضية1 |
الحقلresponse_format | النوعstring | المتطلباختياري | القيم والحدود url, b64_json | القيمة الافتراضية— |
الحقلstream | النوعboolean | المتطلباختياري | القيم والحدود false | القيمة الافتراضيةfalse |
تركيبات مواد الإدخال
تحويل النص إلى صورة · مطلوب: prompt
معلمات الطريقة ودورة حياتها
| المعلمة | المواصفات |
|---|---|
المعلمةcontent_type | المواصفاتapplication/json |
المعلمةrequired | المواصفاتmodel, prompt |
المعلمةmaterial_types | المواصفاتtext |
المعلمةoptional | المواصفاتn, response_format, stream |
المعلمةn | المواصفات1 |
المعلمةstream | المواصفاتfalse |
المعلمةresponse_format | المواصفاتurl, b64_json |
المعلمةreference_images | المواصفاتfalse |
المعلمةedit | المواصفاتfalse |
المعلمةoutput_format_optional | المواصفات |
المعلمةresolution_control | المواصفاتnull |
المعلمةaspect_ratio_control | المواصفاتnull |
المعلمةother_fields | المواصفاتمرفوض، باستثناء توجيه المزوّد الداخلي الدقيق المثبّت |
دورة الحياة: 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}
ولّد صورة واحدة من الموجّه النصي.
احفظ كل عنصر بيانات؛ فالحقلان url/b64_json يحددان صيغ ترميز النتائج.
الباقات
كيفية احتساب الرسوم النهائية
تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.
مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.
- الوضع السريع
- غير محدد عند اختيار الوضع السريع
- الوضع المرن
- غير محدد عند اختيار وضع flex
- أقصى جهد للاستدلال
- غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال
تعرفات تقديرية للمقارنة
الأسعار حسب الإعدادات
طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.
| الإعدادات | جدول التعرفة | الكمية المتوقعة | وحدة الفوترة | الرسوم |
|---|---|---|---|---|
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | الكمية المتوقعة— | وحدة الفوترة— | الرسوم الإدخال · رموز الإدخال · تقدير للمقارنة فقط — / 1K من الرموز الإخراج · رموز الإخراج · تقدير للمقارنة فقط — / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت · تقدير للمقارنة فقط — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت · تقدير للمقارنة فقط — / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة · تقدير للمقارنة فقط — / 1K من الرموز |
| الإعداداتUltra | جدول التعرفة— | الكمية المتوقعة— | وحدة الفوترةلكل صورة مُخرجة | الرسوم الإخراج · إخراج الصور · تقدير للمقارنة فقط $0.014 لكل صورة مُخرجة |
| الإعداداتتكلفة التوليد التقديرية | جدول التعرفة— | الكمية المتوقعةتقدير لتوليد واحد | وحدة الفوترة— | الرسوم الإخراج · تكلفة التوليد التقديرية · تقدير للمقارنة فقط $0.014 تقدير قبل الإنشاء هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة. |
تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. كيفية عمل حجز المبلغ وتسوية الرسوم →
تفاصيل التعرفة المرجعية
لا تغيّر جداول التعرفة المرجعية على مستوى النموذج اختيار الطريقة أو عروض الأسعار أو الرسوم. وتستخدم الرسوم الفعلية تعرفات طريقة Ailoot المحددة.
إعدادات تسعير الصور
الأسعار حسب الإعدادات
| الإعدادات | شروط الفوترة | الرسوم |
|---|---|---|
| الإعداداتصورة المخرجات | شروط الفوترةلم يُعلَن أي خيار تسعير بديل. | الرسوم الإخراج · صورة المخرجات $0.014 لكل صورة تصف البنود المتكافئة الرسم نفسه؛ ولا تضيف رسماً ثانياً. |
أمثلة للطلبات
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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')
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.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
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.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
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.
احفظ كل عنصر بيانات. فك ترميز كل b64_json أو اجلب محتوى كل عنوان URL موقّع مُعاد. اختر امتداد اسم الملف بناءً على نوع MIME والبايتات الفعلية.
عند الحاجة إلى التحقق من الاستجابة الأصلية
إذا تطلبت نتيجة توليد صورة أو تعديلها التحقق، فاحتفظ بقيمة 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 |
الأخطاء والخطوات التالية
| الاستجابة | الشرط | الخطوة التالية |
|---|---|---|
الاستجابة400 · invalid_request_error | الشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة | الخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد. |
الاستجابةserver_error | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |
الأسماء البديلة
الأسماء البديلة للنموذج
Ailoot Ultra recraft/recraft-v4.1-flash
الأسماء البديلة لمسارات الطرائق
استخدم مسارات الطرائق المعروضة أعلاه.
معرّفات النماذج ذات الصلة IDs
FAQ · Recraft: Recraft V4.1 Flash
- ما المدخلات والنتائج المتاحة؟
POST /v1/images/generations·recraft/recraft-v4.1-flash:text→image- ما الحقول التي يستخدمها الطلب؟
POST /v1/images/generations·recraft/recraft-v4.1-flash:model,prompt,n,response_format,stream