استدعاء واحد، ووسائط جاهزة
يرسل run طلب التوليد، ويستعلم عن حالته بفترات التراجع التي توصي بها الواجهة، ثم يعيد الطلب المكتمل مع result.url.
لمحة سريعة
Mage Python SDK هي العميل الرسمي مفتوح المصدر لـ Mage API، ومنشورة باسم mage-space. ثبّتها بالأمر "pip install mage-space"، واضبط MAGE_API_KEY، ثم استدعِ mage.run مع معرّف النموذج والإعدادات لتحصل على صور أو فيديو أو صوت جاهز من أي نموذج من 28 نموذجًا. تعمل على Python 3.10 أو أحدث، وتُدفع تكلفة كل عملية إنشاء بالـ Gems.
3.10+
Python
httpx
عميل HTTP
28
نماذج مضبوطة الأنواع
MIT
مفتوح المصدر
الإعداد
أضف mage-space إلى مشروعك.
pip install mage-spaceأنشئ مفتاحًا من API ← API Keys على mage.space ثم صدّره. يقرأ العميل المتغير MAGE_API_KEY.
export MAGE_API_KEY="mage_sk_..."استدعِ run مع معرّف النموذج وإعداداته. ينتظر النتيجة ويعيدها، وتجد المخرجات في result.url.
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
request = mage.run("mango", {
"prompt": "Editorial portrait in soft daylight, 35mm film look",
"aspect_ratio": "4:5",
"model_id": "mango-v3",
})
print(request["result"]["url"])أمثلة
يبدأ كل مثال من عميل يقرأ MAGE_API_KEY.
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
submitted = mage.generate("cherry", {
"prompt": "Waves rolling onto a black sand beach at sunset",
"resolution": "720p",
"duration": "5",
})
final = mage.requests.wait(
submitted["request_id"],
timeout=900,
on_update=lambda request: print(request["status"]),
)from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
clip = mage.uploads.upload("clip.mp4") # a path, bytes, or a binary file
mage.run("cherry", {
"prompt": "Restyle this clip as a watercolor painting",
"videos": [clip["url"]],
})from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
mage.characters.create(
name="Ana",
handle="ana",
image="https://example.com/ana.png",
)
mage.run("mango", {"prompt": "@ana walking through a night market"})from mage_space import Mage, MageAPIError, MageGenerationError
mage = Mage() # reads MAGE_API_KEY
try:
mage.run("mango", {"prompt": "A lighthouse at night"})
except MageAPIError as error:
if error.code == "insufficient_gems":
print("Gems needed:", error.body["error"]["gems_required"])
else:
raise
except MageGenerationError as error:
print("No output:", error.code)لماذا SDK
يرسل run طلب التوليد، ويستعلم عن حالته بفترات التراجع التي توصي بها الواجهة، ثم يعيد الطلب المكتمل مع result.url.
يحمل كل طلب مفتاح تكرار آمنًا (idempotency key). تُعاد المحاولة عند أخطاء الشبكة والخادم مع فترات تراجع، ولا يُحتسب الطلب المعاد مرة أخرى.
الملفات الأكبر من أن تُرسل كـ data URL تُرفع عبر رابط رفع موقّع، ونتولى عنك التذكرة وطلب PUT والتحقق من الحجم.
تتضمن حالات رفض الواجهة رمز حالة HTTP ورمز الخطأ ومعرّف الطلب، وللتوليد الفاشل أو الملغى وانتهاء المهلة أنواع أخطاء خاصة بها.
يشترك Mage وAsyncMage في جميع الدوال. ويناسب العميل غير المتزامن خوادم الويب والدفاتر وخطوط المعالجة التي تشغّل عدة عمليات إنشاء في وقت واحد.
لكل نموذج TypedDict، مثل MangoConfig، يُولَّد من مرجع الـ API. أضف هذا النوع إلى إعداداتك ليتحقق مدقّق الأنواع من الحقول.
المرجع
الدوال نفسها تغطي كل النماذج؛ والنموذج هو المعامل الأول.
| الدالة | وظيفتها |
|---|---|
| mage.run(model, config) | يرسل عملية توليد وينتظرها ثم يعيد الطلب المكتمل. |
| mage.generate(model, config) | يرسل عملية توليد ويعيد الطلب فورًا. |
| mage.requests.get / cancel / wait | يقرأ طلبًا أو يوقفه أو ينتظره باستخدام المعرّف. |
| mage.uploads.upload(data) | ارفع مسارًا أو بايتات أو ملفًا بحجم يصل إلى 100 MB واحصل على رابطه. |
| mage.characters / mage.references | يعرض الشخصيات والمراجع المحفوظة وينشئها ويحذفها. |
| mage.account.get() | رصيدك من Gems. |
| mage.architectures.list() | كتالوج النماذج المباشر مع الخيارات والأسعار. |
النماذج
صورة · من 37 Gems
واقعية فائقة تبدو كصورة فوتوغرافية
صورة · من 135 Gems
عائلة الصور الرائدة لدينا
صورة · من 68 Gems
نصوص واضحة ومقروءة حتى 4K
فيديو · من 618 Gems
عائلة الفيديو الرائدة لدينا
فيديو · من 245 Gems
كل ميزات الفيديو بسعر أنسب
صوت · من 19 Gems
أصوات وموسيقى ومؤثرات صوتية من أمر واحد
الأسئلة الشائعة
نعم. يضم AsyncMage الدوال نفسها الموجودة في Mage لكن بانتظارها بـ await، ويعمل كمدير سياق غير متزامن.
Python 3.10 وما بعده. ولا تعتمد إلا على httpx وtyping-extensions.
نعم. استخدم Mage في السكربتات والدفاتر، أو AsyncMage مع asyncio لتشغيل عدة عمليات إنشاء في وقت واحد. يتيح الحساب تشغيل ما يصل إلى 20 عملية إنشاء متزامنة.
نعم. حزم SDK وعُقد ComfyUI مرخّصة بترخيص MIT على GitHub، وتثبيتها مجاني. تدفع فقط مقابل عمليات التوليد التي تشغّلها، بعملة Gems وبالسعر المعروض لكل نموذج.
نعم. مرّر معرّف النموذج الجديد كنص وسيعمل؛ إذ يتحقق SDK من إعداداته بناءً على الحقول التي تشترك فيها كل النماذج. يقوم بوت بتحديث الأنواع كلما تغيّر مرجع API، لذا تصل النماذج الجديدة مع أنواعها الخاصة في الإصدار التالي.
يحمل كل طلب إرسال مفتاح Idempotency-Key. ينشئ SDK مفتاحًا جديدًا لكل استدعاء ويعيد استخدامه عندما يعيد محاولة ذلك الاستدعاء بنفسه، فيُرجع الإرسال المُعاد الطلب الأصلي دون أي رسوم.
هي حاليًا في مرحلة تجريبية (beta) بالإصدار 0.x، لذا قد يغيّرها إصدار فرعي. أما API نفسها فيتم إصدارها بشكل منفصل وتبقى مستقرة ضمن v1.
لا يوجد اشتراك ولا رسوم شهرية. تُدفع كل عملية إنشاء بـ Gems وفق السعر المعلن لنموذجها، وكل 1,000 Gems تكلّف 1$ في الباقة القياسية. تعرض صفحة كل نموذج سعره بالإعدادات الافتراضية، ويذكر كل رد المبلغ المحتسب بدقة. إذا فشلت عملية الإنشاء يُسترد المبلغ، أما إذا حظرتها سياسة المحتوى في Mage فلا يُسترد. أما الطلب الذي لا يغطيه رصيدك فيُرفض قبل خصم أي مبلغ.
لا. تعمل API بـ Gems فقط. لا تنطبق خطط العضوية وميزة الإنشاء غير المحدود داخل التطبيق على طلبات API، لذا يمكن لأي حساب Mage يحتوي على Gems استخدامها.
نعم. يمكنك استخدام المحتوى الذي تنشئه باستخدام Mage، بما في ذلك عبر واجهة API وخادم MCP، لأغراض تجارية. نقدّر ذكر المصدر لكنه ليس إلزاميًا.
حساب واحد، ورصيد Gems واحد، وكل النماذج. ادفع فقط مقابل ما تنشئه.