/aichat2/conversations) واجهة المحادثة من الجيل الجديد، وهو إصدار مطوّر بشكل شامل من AI Chat API. يستند إلى بساطة v1 وإدارة المحادثات متعددة الجولات، ويوسّعها عبر:
- إدخال مستخدم متعدد الوسائط: أرسل النص + الصور + كتل الملفات مباشرةً عبر حقل
messageالمنظّم، دون الحاجة إلى إرفاقها بشكل غير مباشر باستخدامreferencesأولًا. - استدعاء أدوات بأسلوب Agent: يتضمن مجموعة أدوات مدمجة للبحث عبر الإنترنت وجلب صفحات الويب وقراءة الملفات وغيرها، كما يمكن إرفاق خوادم MCP المصرّح بها من المستخدم (Google Drive وNotion وSlack وGitHub وغيرها)، بحيث يستطيع النموذج استدعاء الأدوات ذاتيًا عدة مرات ضمن طلب واحد لإكمال المهام المعقدة.
- أحداث تدفق منظّمة: عبر
accept: text/event-streamأوapplication/x-ndjson، يمكنك الحصول على أحداث مثلtext_deltaوtool_useوtool_resultوthinkingوcitationوcardوartifactلكل token، مما يسهّل عرض كل نوع على حدة في الواجهة الأمامية. - قابل للمقاطعة / الاستئناف: عندما يحتاج النموذج إلى معلومات إضافية من المستخدم، سيصدر حدث
ask_user_questionويتوقف مؤقتًا؛ وفي الاستدعاء التالي، يكفي إعادة ملء الإجابة عبرtool_resultsللمتابعة. - إجراءات CRUD جديدة: أكمل
retrieve/retrieve_batch/update/deleteعبر حقلactionعلى نفس endpoint، دون الحاجة إلى API إضافية لإدارة المحادثات. - قائمة نماذج يتم تحديثها باستمرار: يتصل افتراضيًا بنماذج معاصرة مثل GPT-5.4 وClaude Opus 4.8 وClaude Sonnet 4.6 وGemini 3.1 Pro وGLM 5.1 وDeepSeek V4 وKimi K3 وغيرها.
model + question (+ اختياريًا stateful / id / references / preset) للحصول على استجابة JSON من {answer, id} مكافئة لـ v1، لذا لا تحتاج إلى إعادة كتابة العميل عند الترحيل من /aichat/conversations، بل يكفي تغيير المسار إلى /aichat2/conversations.
إذا كنت تستخدم حاليًا /aichat/conversations، فستستمر الواجهة القديمة في تقديم الخدمة، ويمكنك الترحيل بالوتيرة التي تناسبك.
عملية التقديم
لاستخدام AI Chat v2 API، انتقل أولًا إلى لوحة تحكم Ace Data Cloud للحصول على API Token الخاص بك، واحتفظ به للاستخدام لاحقًا.
إذا لم تكن قد سجلت الدخول أو أنشأت حسابًا بعد، فسيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك إلى التسجيل وتسجيل الدخول، وبعد الإكمال ستعود تلقائيًا إلى الصفحة الحالية.
يمكن لـ API Token واحد استدعاء جميع خدمات المنصة، ولا حاجة للتقديم بشكل منفصل لكل خدمة. ستحصل عند التقديم لأول مرة على رصيد مجاني لتجربة الخدمة مجانًا؛ وعند عدم كفاية الرصيد، يمكنك شحن الرصيد العام من لوحة التحكم.
📘 الوثائق الكاملة: AI Chat v2 API →
الاستخدام الأساسي
أبسط استخدام مطابق تمامًا لـ v1: مرّرmodel + question، واحصل على {answer, id}.
مثال CURL:
model المتاحة من القائمة المنسدلة في لوحة Try على اليمين، وتشمل الفئات الشائعة:
- OpenAI:
gpt-5.4-miniوgpt-5.4-nanoوgpt-5.2-proوgpt-5.1-allوgpt-5-allوgpt-4.1وgpt-4oوgpt-4o-imageوo3وo4-miniوغيرها - Anthropic:
claude-opus-4-8وclaude-opus-4-7وclaude-opus-4-6وclaude-opus-4-5-20251101وclaude-sonnet-4-6وclaude-sonnet-4-5-20250929وclaude-haiku-4-5-20251001وغيرها - Google:
gemini-3.1-pro-previewوgemini-3.1-pro-previewوgemini-3.1-flash-imageوgemini-3.1-pro-previewوgemini-2.5-flash-liteوغيرها - xAI:
grok-4وغيرها - DeepSeek:
deepseek-v4-proوdeepseek-v4.1-flashوdeepseek-v4-flashوdeepseek-v3.2-expوdeepseek-r1-0528وغيرها - Moonshot:
kimi-k3وkimi-k2.6وkimi-k2.5وغيرها - Zhipu:
glm-5.3وglm-5.2وglm-5.1وglm-5وglm-5-turboوglm-4.7وglm-4.5vوغيرها
محادثة متعددة الجولات
كما في v1، مرّرstateful: true لتفعيل حفظ المحادثة، وستُرجع API قيمة id؛ وفي الطلبات اللاحقة، يكفي إعادة إرسال id لمتابعة المحادثة، دون الحاجة إلى إدارة سجل messages بنفسك.
الطلب الأول:
id نفسه:
القيمة الافتراضية لـstatefulهيtrue، وحذفها يعادل تمريرtrueبشكل صريح. إذا كنت لا ترغب في أن يحفظ الخادم هذه الجولة من المحادثة، يمكنك تعيينstateful: falseبشكل صريح.
الاستجابة المتدفقة
يدعم الإصدار v2 تنسيقين للتدفق، ويتم الاختيار وفقًا لترويسةaccept:
مثال NDJSON
text_delta:
مثال SSE
لا يدعم استخدامEventSource في المتصفح نص طلب مخصصًا، ويُوصى باستخدام fetch + التحليل اليدوي بالتقسيم وفقًا لـ \n\n:
أنواع الأحداث المتدفقة
بالنسبة إلى العملاء الذين يهتمون فقط بالإجابة النهائية، فإن تجميع
content لكل text_delta يعادل answer في وضع application/json.
إدخال متعدد الوسائط
إذا كان إدخال المستخدم يتضمن صورة أو ملفًا، فمرّرmessage (مصفوفة) بدلًا من question. كل عنصر في المصفوفة هو كتلة محتوى:
text— نص عادي، وحقلtextمطلوب.image_url— صورة، وحقلimage_url.urlمطلوب.file_url— ملف (PDF أو CSV أو TXT وغيرها)، وحقلfile_url.urlمطلوب.
العلاقة مع references في v1
للتوافق مع العملاء القدامى، لا يزال v2 يتعرّف على الحقل references: ["https://...", ...]:
- إذا كانت لاحقة URL هي
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif، فسيتم تحويلها تلقائيًا إلى كتلةimage_url؛ - يتم تحويل الامتدادات الأخرى إلى كتلة
file_url؛ - إذا تم توفير
questionأيضًا في الوقت نفسه، فسيتم وضعه في المقدمة ككتلةtext.
/aichat2/conversations، وسيستمر استخدام references الأصلي في العمل كالمعتاد.
إذا كنت تحتاج إلى تحكم أكثر دقة (مثل وضع عدة صور بين النصوص، أو عندما يكون الترتيب مهمًا جدًا)، فاستخدم مصفوفة message مباشرةً.
استدعاءات الأدوات و MCP
التحسين الأساسي في v2 هو أن النموذج يمكنه استدعاء الأدوات بشكل مستقل لإكمال المهام متعددة الخطوات، وهذا مفعّل افتراضيًا، ولا يحتاج العميل إلى إجراء أي إعدادات إضافية في الطلب. السيناريوهات الشائعة:- يسأل المستخدم: «ساعدني في البحث عن المعارض الجديدة في شنغهاي مؤخرًا» → يستدعي النموذج بحث الويب المدمج → ينظم النتائج في إجابة.
- يسأل المستخدم: «اقرأ ملف PDF هذا ثم اكتب ملخصًا» → يستدعي النموذج file_read → يكتب ملخصًا.
- يكون المستخدم قد فوّض Google Drive / GitHub / Notion وغيرها في Connections → يمكن للنموذج استدعاء أدوات MCP المقابلة لقراءة بياناتها وكتابتها.
tool_use و tool_result، على سبيل المثال:
tool_use / tool_result / card / citation، إذ سيستمر تدفق الإخراج النهائي للنموذج عبر text_delta.
يمكن لـ max_turns تقييد الحد الأقصى لعدد جولات استدعاء النموذج الذاتي للأدوات في هذا الطلب، ويتراوح من 1 إلى 500، والقيمة الافتراضية هي 500 عند حذفه. يمكن أن يؤدي تعيينه إلى قيمة صغيرة (مثل max_turns: 1) إلى فرض إجابة واحدة، وعدم السماح بأي استدعاء للأدوات.
التنفيذ غير المتزامن والتفويض غير المراقب
إذا كان استدعاؤك يأتي من Webhook للتنبيهات، أو CI/CD، أو نظام مراقبة، أو مهام خلفية أخرى، يمكنك تعيينasync: true لجعل الواجهة تُرجع معرّف المهمة فورًا وتستمر في التنفيذ في الخلفية:
action: retrieve + id للاستعلام عن نتيجة المحادثة؛ كما يمكنك أيضًا تقديم callback_url، وبعد اكتمال المهمة ستقوم المنصة بإرسال { status, answer, usage, error } عبر POST إلى عنوان رد الاتصال الخاص بك. يجب أن يستخدم callback_url بروتوكول http / https، ولا يمكن ملء localhost أو عنوان IP خاص حرفيًا مباشرةً.
عادةً لا يوجد شخص يمكنه النقر للتأكيد في المهام الخلفية. إذا كنت تريد أن تقوم بعض Skill أو MCP Server بتنفيذ إجراءات مثل الإرسال، أو النشر، أو الكتابة في الوضع غير المراقب، فالرجاء تمرير قائمة تفويض مسبق صراحةً في جسم الطلب:
allowed_skills هي slug للـ Skill المتصلة؛ والقيم في allowed_mcp_servers هي slug للـ MCP Server المتصلة. لا يزال بإمكان Skill / MCP Server غير المدرجة في التفويض المسبق في الوضع غير المراقب المعاينة فقط، أو dry-run، أو رفض تنفيذ عمليات الكتابة.
إذا كنت تحتاج إلى تحكم أكثر دقة، يمكنك أيضًا استخدام كائن unattended_policy المكافئ:
--unattended-confirm أو آلية الأمان المقابلة؛ وإلا فستستمر في dry-run، ولن تنفذ عمليات الكتابة مباشرةً.
استئناف المحادثات المتوقفة
بعض الأدوات تجعل النموذج «يسأل المستخدم سؤالًا»، وعندها يصدر النموذج حدثask_user_question، وتتجمد المحادثة في حالة awaiting_user_input:
id نفسه، وأعد تعبئة الإجابة عبر tool_results:
tool_use_id في جسم الطلب مطابقًا تمامًا لـ tool_id عند التوقف؛ وسيتم إرجاع 400 إذا لم يكن متطابقًا. عند وجود tool_results في الطلب في الوقت نفسه، سيتم تجاهل كل من question / message / references.
إذا قرر المستخدم التخلي عن هذا السؤال، فما عليه سوى تمرير question / message جديد، وستقوم المنصة تلقائيًا بوضع علامة «تخطاه المستخدم» على استدعاء الأداة المتوقف.
إدارة المحادثات (CRUD)
يوفر v2 إدارة خفيفة للمحادثات عبر حقلaction على نفس endpoint، دون الحاجة إلى فتح API إضافي.
action: retrieve —— جلب محادثة
messages، وmodel، وtitle، وtools_used، وغير ذلك).
action: retrieve_batch —— إدراج ملخصات المحادثات
{ items: [...], total }. لا يحتوي الملخص على messages، وهو مناسب لقائمة الشريط الجانبي؛ إذا فتح المستخدم محادثة معيّنة، فاستخدم بعد ذلك action: retrieve لجلب رسائلها الكاملة بشكل منفصل.
معلمات التصفية الاختيارية: user_id، وapplication_id، وmodel_group، وmodel.
action: update —— تغيير العنوان أو إعادة كتابة السجل
messages، لكن الخادم سيجري تحققًا صارمًا من schema (ويجب أن تكون بصيغة ToolUseContent المطوية)، وسيعيد 400 إذا لم تتوافق. عمومًا، يُنصح باستخدامه فقط لتغيير title.
action: delete —— حذف محادثة
{ id, success: true }. لا يمكن الاستعادة بعد الحذف، يُرجى التأكيد قبل الاستدعاء.
الترحيل السلس من v1
إذا كنت تستخدم بالفعل/aichat/conversations، فإن الترحيل إلى v2 لا يتطلب تقريبًا أي تعديل في الكود:
- غيّر URL من
https://api.acedata.cloud/aichat/conversationsإلىhttps://api.acedata.cloud/aichat2/conversations. - إذا كنت تمرر سابقًا اسم نموذج v1 (مثل
gpt-3.5، وgpt-4-browsing، وغير ذلك)، فيُنصح عند التبديل إلى v2 بالترقية إلى نماذج حديثة (مثلgpt-5.4، وclaude-opus-4-8، وgemini-3.1-pro-preview، وغير ذلك). - تبقى حقول تدفق NDJSON متوافقة مع الإصدارات السابقة: لا يزال كل حدث
text_deltaيحملdelta_answerوid، لذلك لا يحتاج العميل الذي كان يحللdelta_answerسطرًا بسطر إلى أي تعديل.
message متعدد الوسائط، وSSE، واستدعاء الأدوات، وCRUD عبر action) والتقدم بالوتيرة المناسبة.
معالجة الأخطاء
استجابة الخطأ موحدة كالتالي:400 bad_request: حقول إلزامية مفقودة، أو عدم تطابقtool_use_id، أو schema غير صالح لـmessages، وغير ذلك.401 invalid_token: رأسauthorizationغير صحيح.404 not_found: لا توجد المحادثة المطابقة لـidعندaction: retrieve / update / delete.429 too_many_requests: تم تفعيل حد المعدل.500 chat_error: خطأ من LLM العلوي أوcompletion_tokens=0في هذه الجولة (يُعامل على أنه غير مستهلك، ولن يتم فرض رسوم).
{"type":"error","message":"..."}، ثم ينتهي التدفق مباشرةً.

