acedatacloud هو SDK الرسمي لـ Ace Data Cloud بلغة Python، حيث يقوم بتغليف جميع الخدمات المتاحة على api.acedata.cloud في طرق من نوع client.openai.chat.completions.create(...)، client.images.generate(...)، client.search.google(...)، وغيرها، كما يوفر مجموعتين من العملاء: متزامنة وغير متزامنة.
يعتمد في الأساس على httpx، ويدعم تدفق SSE، وإعادة المحاولة التلقائية، والاستثناءات المخصصة، والتحقق من الأنواع باستخدام pydantic.
عنوان المصدر والحزمة:
- مستودع SDK: https://github.com/AceDataCloud/SDK
- PyPI: https://pypi.org/project/acedatacloud/
التثبيت
- إصدار الحزمة هو
2026.4.26.1(CalVer، تم التعديل في 26 أبريل 2026). AceDataCloudهو عميل متزامن، وAsyncAceDataCloudهو عميل غير متزامن باستخدام asyncio.- لا يعتمد هذا SDK على
pydantic، حيث يتم إرجاع جسم الاستجابة بشكل موحد كـdict. هذه النقطة تختلف عنopenai-python، لذا يجب الانتباه عند الانتقال.
إعداد API Token
راجع نظرة عامة على SDK - طلب API Token للحصول على الرمز، ثم قم بتصديره في shell:api_token، حيث سيقوم SDK بقراءة متغير البيئة ACEDATACLOUD_API_TOKEN تلقائيًا. إذا كان لديك بالفعل ACEDATACLOUD_API_KEY في بيئتك (وفقًا لاتفاقية مستودع المشروع)، يرجى تمريره بشكل صريح: AceDataCloud(api_token=os.environ["ACEDATACLOUD_API_KEY"]).
المثال 1: chat.completions (متزامن)
idهو معرف الاستجابة، ويمكن العثور عليه في سجل الاستخدام.content ADC_PY_SDK_OKهو المعرف الثابت الذي تم إرجاعه فعليًا من النموذج.res["usage"]يعيدdict، وليس نموذج pydantic؛ تستهلك المكالمة الواحدة حوالي 24 توكن.
المثال 2: chat.completions (تدفق SSE)
عند استخدامstream=True، تعيد create مولدًا عاديًا، حيث يتم إرجاع كل جزء كـ dict تم تحليله.
- تأخير الإطار الأول 2104 مللي ثانية، بينما استغرق 11 إطارًا لاحقًا 7 مللي ثانية فقط للوصول - بمجرد بدء الخدمة في التدفق، يمكن استهلاكها بسهولة محليًا.
- الجزء هو dict عادي، ويمكن الحصول على القيم بشكل آمن باستخدام
.get()وفقًا لتنسيق OpenAI SSE. - في الإنتاج الفعلي، يُوصى بإرسال SSE إلى الواجهة الأمامية أثناء عملية الإرجاع، حيث يكون التأخير الإجمالي قريبًا من 2 ثانية.
المثال 3: AsyncAceDataCloud (غير متزامن)
واجهة برمجة التطبيقات لـAsyncAceDataCloud متطابقة تمامًا مع النسخة المتزامنة، ولكن جميع طرق الإدخال/الإخراج تعيد coroutine. مناسبة لخدمات FastAPI / aiohttp / asyncio.
- النسخة غير المتزامنة والنسخة المتزامنة تسيران على نفس مسار HTTP، ولكن تنفيذ مجموعة الاتصال مختلف (
httpx.AsyncClient). - عند الخروج، يجب أن تقوم صراحةً بـ
await client.close()لإغلاق مجموعة الاتصال؛ في خدمات ذات عمر طويل، يكفي إغلاقها مرة واحدة قبل انتهاء العملية. - التأخير في كل مرة مشابه تقريبًا للنسخة المتزامنة، وفي سيناريوهات التزامن، تظهر المزايا الحقيقية - يمكن لدورة حدث واحدة تشغيل عشرات أو مئات الطلبات في الهواء.
المثال 4: images.generate (NanoBanana)
واجهة برمجة التطبيقات NanoBanana هي خدمة توليد الصور المتزامنة، لا تقم بتمريرwait - ستنتظر مكالمات SDK حتى تعيد الخدمة 200.
image_urlهو عنوان ثابت على CDN، يمكن تنزيله مباشرة أو تضمينه في صفحة الويب.- 18.9 ثانية كانت تقريبًا كلها من استدلال النموذج؛ تكلفة SDK المحلية كانت فقط بضع مللي ثانية.
- بالنسبة لمهام مثل Midjourney وSora وVeo وSuno التي هي مهام غير متزامنة حقيقية، يجب استخدام
wait=TrueأوTaskHandle.wait()للاستطلاع يدويًا، انظر استطلاع المهام واستجابة التدفق في SDK.
مثال 5: معالجة الأخطاء المخصصة
AuthenticationError (401)، TokenMismatchError (التوكن لا يتطابق مع الخدمة)، InsufficientBalanceError (الرصيد غير كاف)، ResourceDisabledError (الخدمة معطلة)، ValidationError (400)، RateLimitError (429)، ModerationError (403 مراجعة المحتوى)، APIError (خطأ شامل)، TimeoutError (مهلة)، TransportError (طبقة الشبكة).
خيارات التكوين
وحدةtimeoutفي SDK Python وpoll_interval/max_waitفي TaskHandle هي ثواني، بينما تستخدم SDK TypeScript مللي ثانية، يجب الانتباه عند الانتقال بين اللغات. انظر استطلاع المهام واستجابة التدفق في SDK.
يقوم SDK افتراضيًا بقراءة متغير البيئةACEDATACLOUD_API_TOKEN؛ في هذه المقالة، ولتوحيدها مع دليل Claude Code VS Code ودروس أخرى، المثال يستخدمACEDATACLOUD_API_KEY، يحتاج إلىapi_token=os.environ["ACEDATACLOUD_API_KEY"]للحقن الصريح.

