/aichat2/conversations) هي واجهة محادثة من الجيل الجديد، وهي نسخة محدثة بالكامل من واجهة برمجة تطبيقات AI Chat. لقد توسعت على أساس v1 البسيط، الذي يدعم المحادثات المتعددة، لتشمل:
- إدخال مستخدم متعدد الوسائط: من خلال حقل
messageالمنظم، يمكن إرسال نص + صورة + ملفات مباشرة، دون الحاجة إلى إرفاقها بشكل غير مباشر باستخدامreferences. - استدعاء أدوات وكيل: تحتوي على مجموعة من الأدوات للبحث عبر الإنترنت، واستخراج صفحات الويب، وقراءة الملفات، ويمكن ربطها بخادم MCP المصرح به من قبل المستخدم (مثل Google Drive، Notion، Slack، GitHub، إلخ)، حيث يمكن للنموذج استدعاء الأدوات بشكل مستقل في طلب واحد لإكمال المهام المعقدة.
- أحداث هيكلية متدفقة: من خلال
accept: text/event-streamأوapplication/x-ndjsonيمكن الحصول علىtext_delta،tool_use،tool_result،thinking،citation،card،artifactوغيرها من الأحداث، مما يسهل عرضها في الواجهة الأمامية حسب النوع المقابل. - قابلية الإيقاف / الاستئناف: عندما يحتاج النموذج إلى معلومات إضافية من المستخدم، سيصدر حدث
ask_user_questionويتوقف، ويمكن استئناف المكالمة التالية من خلال ملء الإجابة باستخدامtool_results. - إجراءات CRUD جديدة: يمكن إتمام
retrieve/retrieve_batch/update/deleteمن خلال حقلactionعلى نفس نقطة النهاية، دون الحاجة إلى واجهة برمجة تطبيقات إدارة الجلسات الإضافية. - قائمة نماذج محدثة باستمرار: يتم الاتصال افتراضيًا بـ 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، يجب أولاً الذهاب إلى وحدة التحكم في Ace Data Cloud للحصول على رمز API الخاص بك، احتفظ به للاستخدام لاحقًا.
إذا لم تكن قد قمت بتسجيل الدخول أو التسجيل، سيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك للتسجيل وتسجيل الدخول، وبعد الانتهاء، سيتم إرجاعك تلقائيًا إلى الصفحة الحالية.
رمز API واحد يكفي لاستدعاء جميع خدمات المنصة، دون الحاجة لتقديم طلبات منفصلة لكل خدمة. عند التقديم لأول مرة، ستحصل على رصيد مجاني لتجربته؛ وعند نفاد الرصيد، يمكنك إعادة شحن الرصيد العام في وحدة التحكم.
📘 الوثائق الكاملة: واجهة برمجة تطبيقات AI Chat v2 →
الاستخدام الأساسي
أبسط طريقة للاستخدام هي نفسها تمامًا كما في v1: أرسلmodel + question، واحصل على {answer, id}.
مثال CURL:
model مباشرة في القائمة المنسدلة في لوحة التجربة على اليمين، وتشمل الفئات الشائعة:
- 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،gemini-3.1-pro-preview،gemini-3.1-flash-image-preview،gemini-3-pro-preview،gemini-2.5-flash-lite، إلخ. - xAI:
grok-4، إلخ. - DeepSeek:
deepseek-v4-flash،deepseek-v3.2-exp،deepseek-r1-0528، إلخ. - Moonshot:
kimi-k3،kimi-k2.6،kimi-k2.5، إلخ. - Zhipu:
glm-5.1،glm-5،glm-5-turbo،glm-4.7،glm-4.5v، إلخ.
المحادثات المتعددة
كما في v1، أرسلstateful: true لتمكين حفظ الجلسة، وستعيد واجهة برمجة التطبيقات id؛ في الطلبات اللاحقة، يمكنك إحضار id للمتابعة في المحادثة، دون الحاجة للحفاظ على تاريخ الرسائل بنفسك.
الطلب الأول:
id:
statefulالافتراضي هوtrue، الإغفال عنه وتمريره صراحة كـtrueمتساوي. إذا كنت لا ترغب في أن يحتفظ الخادم بهذه الجولة من المحادثة، يمكنك تعيينstateful: falseصراحة.
استجابة متدفقة
v2 تدعم نوعين من التنسيقات المتدفقة، حسب اختيار رأسaccept:
مثال NDJSON
text_delta:
مثال SSE
استخدامEventSource على جانب المتصفح لا يدعم جسم الطلب المخصص، يُنصح باستخدام fetch + تقسيم يدوي حسب \n\n:
أنواع الأحداث المتدفقة
بالنسبة للعملاء الذين يهتمون فقط بالإجابة النهائية، فإن تجميع كل
text_delta من content يعادل 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 → يكتب الملخص.
- المستخدم قد منح إذنًا في Connections لـ Google Drive / GitHub / Notion وما إلى ذلك → يمكن للنموذج استدعاء أدوات MCP المقابلة لقراءة وكتابة بياناته.
tool_use و tool_result، على سبيل المثال:
tool_use / tool_result / card / citation، وستظل المخرجات النهائية للنموذج تمر عبر text_delta.
يمكن أن يحدد max_turns الحد الأقصى لعدد مرات استدعاء النموذج للأدوات في هذا الطلب، والحد الأقصى الافتراضي تحدده المنصة. إذا قمت بتعيينه صغيرًا (مثل max_turns: 1) يمكنك فرض إجابة واحدة، وعدم السماح بأي استدعاء للأدوات.
التنفيذ غير المتزامن والتفويض بدون إشراف
إذا كان استدعاؤك يأتي من Webhook تنبيه، CI/CD، نظام مراقبة أو مهام خلفية أخرى، يمكنك تعيينasync: true لجعل الواجهة ترجع على الفور معرف المهمة، وتستمر الخلفية في التنفيذ:
action: retrieve + id للاستعلام عن نتائج المحادثة؛ يمكنك أيضًا تقديم callback_url، بعد الانتهاء من المهمة، ستقوم المنصة بإرسال { status, answer, usage, error } عبر POST إلى عنوان رد الاتصال الخاص بك. يجب أن يستخدم callback_url http / https، ولا يمكن إدخال عنوان localhost أو عنوان IP خاص بشكل مباشر.
عادةً ما لا يمكن لأحد تأكيد المهام الخلفية. إذا كنت ترغب في أن تقوم بعض المهارات أو خادم MCP بتنفيذ إجراءات مثل الإرسال، النشر، الكتابة، وما إلى ذلك في وضع عدم الإشراف، يرجى تضمين قائمة التفويض المسبق بشكل صريح في جسم الطلب:
allowed_skills هي slug للمهارات المتصلة؛ والقيم في allowed_mcp_servers هي slug لخوادم MCP المتصلة. المهارات / خوادم MCP غير المدرجة في التفويض المسبق ستظل قادرة على المعاينة، أو التشغيل التجريبي، أو رفض تنفيذ عمليات الكتابة في وضع عدم الإشراف.
إذا كنت بحاجة إلى تحكم أكثر دقة، يمكنك أيضًا استخدام كائن unattended_policy المعادل:
--unattended-confirm أو آلية الأمان المقابلة؛ وإلا ستستمر في التشغيل التجريبي، ولن يتم تنفيذ عمليات الكتابة مباشرة.
استعادة المحادثة المعلقة
بعض الأدوات ستجعل النموذج “يسأل المستخدم”، وفي هذه الحالة سيصدر النموذج حدث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 على نفس نقطة النهاية، دون الحاجة إلى فتح 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، لكن الخادم سيقوم بإجراء تحقق صارم من المخطط (يجب أن يكون في شكل 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، إلخ). - تبقى حقول تدفق NDJSON متوافقة مع الإصدارات السابقة: لا يزال كل حدث
text_deltaيحملdelta_answerوid، لذلك لا يحتاج العميل الذي كان يحللdelta_answerسطرًا بسطر إلى إجراء أي تغييرات.
message متعددة الوسائط، SSE، استدعاء الأدوات، CRUD action)، واتباع الإيقاع المناسب.
معالجة الأخطاء
تكون استجابة الخطأ موحدة كالتالي:400 bad_request: نقص في الحقول المطلوبة، عدم تطابقtool_use_id، مخططmessagesغير صالح، إلخ.401 invalid_token: رأسauthorizationغير صحيح.404 not_found: عند استخدامaction: retrieve / update / delete، المحادثة التي تتوافق معidغير موجودة.429 too_many_requests: تم تفعيل حد السرعة.500 chat_error: خطأ من LLM العلوي أوcompletion_tokens=0في هذه الجولة (يتم التعامل معها كغير مستهلكة، لن يتم خصم الرسوم).
{"type":"error","message":"..."}، وبعد ذلك ستنتهي التدفق.

