/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على نفس نقطة النهاية، دون الحاجة إلى 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 مكافئة لـ v1 بصيغة {answer, id}. لذلك، لا تحتاج إلى إعادة كتابة العميل عند الترحيل من /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.1-pro،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":"..."}، ثم ينتهي التدفق مباشرةً.

