Skip to main content
@acedatacloud/sdk هو SDK رسمي من Ace Data Cloud لـ TypeScript / JavaScript، يقوم بتغليف جميع الخدمات الموجودة على api.acedata.cloud في طرق من نوع client.openai.chat.completions.create(...)، client.images.generate(...)، client.search.google(...) وغيرها، ويأتي مع تدفق SSE، وإعادة المحاولة مع التراجع، واستثناءات من نوع محدد. يمكن استخدامه في Node.js وDeno وBun والمتصفحات الحديثة (مع bundler). عنوان المصدر والحزمة:

التثبيت

إذا كنت بحاجة إلى الدفع على سلسلة X402 (بدون مسار API Token)، قم بتثبيت واحد آخر:
إخراج فحص الإصدار لمشروع npm نظيف:
تفسير النتائج:
  • إصدار الحزمة هو 2026.504.2 (CalVer، الإصدار الثاني من الأسبوع ISO 504 في عام 2026).
  • AceDataCloud هو الفئة الرئيسية المستخدمة لبناء العميل، ويمكن الوصول إليها من التصدير الافتراضي.

إعداد API Token

راجع نظرة عامة على SDK - طلب API Token للحصول على الرمز، ثم في shell قم بـ export:
عند بناء العميل، إذا لم يتم تمرير apiToken، سيقوم SDK بقراءة متغير البيئة ACEDATACLOUD_API_TOKEN تلقائيًا. إذا كان لديك بالفعل ACEDATACLOUD_API_KEY في بيئتك (وفقًا لاتفاقية مستودع المشروع)، يمكنك تمريره بشكل صريح: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).

مثال 1: chat.completions (غير متدفق)

نتيجة تشغيل البرنامج:
تفسير النتائج:
  • id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQA هو معرف استجابة متوافق مع OpenAI، يمكن العثور على السجل المقابل في استخدامات وحدة التحكم.
  • content ADC_TS_SDK_OK هو المعرف الثابت الذي تم إرجاعه فعليًا من النموذج، مما يثبت أن الاستجابة لم يتم تعديلها بواسطة SDK.
  • تستهلك عملية chat completion واحدة حوالي 22 توكن، وفقًا لسعر gpt-4o-mini.
  • يعلن SDK عن الاستجابة كـ Record<string, unknown>، وفي وقت التشغيل تكون كائن JSON، يمكن الوصول إليها باستخدام .id / .choices[0].message.content، وهذا يعمل في .mjs، Node REPL، وBun؛ قد تحتاج المشاريع الصارمة في TypeScript إلى (res as any).id أو إيقاف noImplicitAny في tsconfig.

مثال 2: chat.completions (SSE متدفق)

عند فتح stream: true، تعيد create مكررًا غير متزامن، كل إطار هو ChatCompletionChunk.
نتيجة تشغيل البرنامج:
تفسير النتائج:
  • تأخير الإطار الأول 2481 مللي ثانية هو الوقت الذي استغرقه النموذج لتوليد أول توكن؛ وصلت الإطارات الـ 12 التالية جميعها في 135 مللي ثانية.
  • الإطارات الـ 13 مجتمعة هي "1 2 3 4 5"، كل توكن في إطار منفصل + الإطار الأخير يحمل finish_reason.
  • التدفق المتزامن لا يوفر توكن أكثر من غير المتزامن، لكن تأخير الحرف الأول ينخفض بشكل ملحوظ، مما يجعله مناسبًا لإنشاء واجهات مستخدم حية.

مثال 3: images.generate (NanoBanana)

client.images.generate({ provider: 'nano-banana', ... }) تعيد مباشرة بشكل متزامن، لا تحتاج إلى تمرير معلمة wait - واجهة برمجة تطبيقات NanoBanana نفسها تولد بشكل متزامن.
نتيجة تشغيل البرنامج:
تفسير النتائج:
  • image_url هو عنوان ثابت على CDN، يمكن استخدامه مباشرة في <img src /> أو تنزيله.
  • معظم الوقت في 16.6 ثانية هو وقت استدلال النموذج، ويمكن تجاهل تكلفة SDK المحلية.
  • trace_id هو معرف الطلب المخصص من المنصة، إذا حدثت مشكلة، يمكنك لصق هذا المعرف لخدمة العملاء لتحديد الموقع بسرعة.
  • بالنسبة للخدمات غير المتزامنة (مثل Midjourney وSora وVeo وغيرها) تحتاج إلى استعلام TaskHandle، راجع استعلام SDK والردود المتدفقة.

مثال 4: معالجة الأخطاء من نوع محدد

سيقوم SDK برمي الأخطاء كفئات فرعية محددة حسب حالة HTTP (AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError وغيرها)، ويمكن استخدام instanceof لتحديد الفروع بدقة.
نتيجة تشغيل البرنامج:
تفسير النتيجة:
  • 401 يتم تحويلها تلقائيًا إلى AuthenticationError، يمكن لرمز العمل استخدام instanceof لتحديد الفروع بدقة.
  • code: invalid_token يأتي من PlatformGateway، مما يسهل المقارنة مع سجلات الخلفية.
  • بالمثل 429 → RateLimitError، 400 → BadRequestError، 5xx → InternalServerError.

مثال 5: توجيه نماذج متعددة

يمكن للعميل نفسه التبديل بحرية بين خدمات متعددة، طالما أن أسماء النماذج متطابقة.
نتيجة تشغيل البرنامج:
تفسير النتيجة:
  • كود واحد، توكن واحد، يغطي خدمات نماذج OpenAI / Google / DeepSeek / xAI الأربعة.
  • gemini-2.5-flash لم يعد ADC_OK هذه المرة، بسبب اختلاف أسلوب إخراج النموذج نفسه - لم يقم SDK بإسكات أي شيء، بل نقل كلام النموذج بأمانة إلى العمل.
  • يتم احتساب الأسعار وفقًا لسعر التوكن الحقيقي لكل منها، والطريق يمر مرة واحدة فقط عبر PlatformGateway.

مثال 6: بحث Google

نتيجة تشغيل البرنامج:
تفسير النتيجة:
  • تم الحصول على 10 نتائج عضوية من طلب واحد، اسم الحقل هو organic (ليس organic_results).
  • البحث يتم عبر خدمة Serp ويتم احتسابه حسب الطلب.
  • يمكن لنموذج العميل نفسه إجراء الدردشة والبحث، توكن واحد يكفي.

خيارات التكوين

استخدام المتصفح

@acedatacloud/sdk هو حزمة ESM + ISO (متجانسة)، يمكن استخدامها مباشرة في المتصفحات الحديثة التي تحتوي على bundler. ملاحظة: لا تقم بتشفير توكن API في كود الواجهة الأمامية. يوصى في الواجهة الأمامية:
  1. استخدام X402 paymentHandler - محفظة المستخدم تدفع USDC حسب الطلب، دون الحاجة إلى توكن.
  2. أو استخدام SDK على خادمك الخاص، حيث يقوم المتصفح فقط باستدعاء الخلفية الخاصة بك.

متقدم: استعلام المهام والتجاوب المتدفق

  • خدمات المهام (Midjourney، Sora، Veo، Suno): استخدم TaskHandle للاستعلام، التفاصيل المتعلقة بالوحدات، المهلة وإعادة المحاولة انظر SDK استعلام المهام والتجاوب المتدفق.
  • الدردشة المتدفقة: تم عرضها في المثال 2 في هذه الصفحة؛ تدفق الصوت / الفيديو مدعوم أيضًا.

متقدم: خطاف دفع X402

إذا كنت لا ترغب في طلب توكن API، وترغب في الدفع حسب الطلب على السلسلة، يمكنك استخدام paymentHandler:
createX402PaymentHandler في جانب TypeScript يقبل { network, evmProvider, evmAddress, preferScheme? } (سلسلة EVM) أو { network: 'solana', solanaWallet } (Solana). في خادم Node عندما لا يوجد window.ethereum، يرجى استخدام viem لإنشاء createWalletClient (استنادًا إلى المفتاح الخاص) لتغليف مزود متوافق مع EIP-1193 ثم تمريره؛ انظر التفاصيل والطريقة الحقيقية والنتائج على السلسلة في SDK + خطاف دفع X402.

كيفية عرض الرصيد المتبقي

يمكنك عرض الرصيد المتبقي الحالي لحسابك من خلال لوحة تحكم Ace Data Cloud - قائمة التطبيقات. يمكنك عرض جميع سجلات الاستخدام وتفاصيل الخصم من خلال لوحة تحكم Ace Data Cloud - تاريخ الاستخدام.

لمعرفة المزيد