الانتقال إلى المحتوى الرئيسي

واجهات قابلة للقراءة بواسطة الوكلاء: تصميم أسطح الأدوات للآلات قبل البشر

عندما تفتح المنصات واجهات API لوكلاء خارجيين، يجب تصميم عقد الواجهة للمتصلين الآليين أولاً، مع تحديد صريح لـ idempotency والحصص ودلالات الأخطاء.

Close-up of a laser cutter operating in an industrial setting in Ankara, Türkiye.

النمط

فتحت إحدى الأسواق الكبرى أدوات البائعين لوكلاء خارجيين، بدءاً بمزوّد نموذج واحد. وتتبعها منصات الحجوزات والتجارة والضرائب بأسطح موجهة للوكلاء خاصة بها. هذا صنف جديد من الواجهات: المستهلك الأساسي هو مخطط (planner)، وليس شخصاً يستخدم متصفحاً. والفرق ليس شكلياً. يستطيع الإنسان أن يستنتج الشروط المسبقة الناقصة من السياق، ويتحمّل الأخطاء الغامضة، ويعيد المحاولة يدوياً عند فشل إجراء. أما المخطط فلا يستطيع. إنه يحتاج إلى عقد صريح وحتمي وقابل للقراءة آلياً.

ما يحتاجه المتصلون الآليون وتغفله واجهات API الموجهة للبشر

صُممت معظم واجهات API العامة لمطورين يكتبون شيفرة تستهدفها، لكن المستهلك وقت التشغيل يبقى إنساناً يقرأ التوثيق ويفحص الاستجابات ويكتب منطقاً دفاعياً. أما المتصلون من الوكلاء فيزيلون هذا الإنسان من الحلقة. وهم يحتاجون إلى ثلاثة أمور غالباً ما تكون غائبة.

شروط مسبقة قابلة للقراءة آلياً

يجب بيان الحقول المطلوبة لكل انتقال حالة على شكل schema، لا على شكل نص نثري. مثلاً، قد تتطلب نقطة نهاية حجز حقل guest_count فقط عندما تكون status هي confirmed، أو حقل tax_id فقط لحجوزات الأعمال. وإذا كان هذا مدفوناً في فقرة، فسيخمّن المخطط. انشر آلة حالة مع الحقول المطلوبة لكل انتقال والقيم المسموح بها والآثار الجانبية. إن JSON Schema أو أي وصف رسمي مكافئ ليس اختيارياً؛ إنه الواجهة نفسها.

تصنيف حتمي للأخطاء

Detailed view of a camera switch displaying 'Click,' 'Off,' and 'On' settings.

يجب تصنيف الأخطاء حسب الرمز (code)، لا حسب الرسالة. يحتاج المخطط إلى التمييز بين:

  • قابل لإعادة المحاولة: فشل شبكي عابر، حد معدل، تنازع على قفل. يستطيع الوكيل التراجع وإعادة المحاولة.
  • نهائي: مدخل غير صالح، صلاحية مفقودة، انتقال حالة غير مدعوم. إعادة المحاولة لن تفيد.
  • يحتاج إلى إنسان: قاعدة عمل غامضة، مراجعة يدوية مطلوبة، نزاع. ينبغي للوكيل التصعيد.

إذا كانت الإشارة الوحيدة رسالة نصية حرة، فعلى المخطط إما أن يثبّت مطابقة نصية هشة أو أن يستسلم. وكلاهما فشل. انشر مجموعة رموز أخطاء مستقرة مع تعيين موثّق لهذه الأصناف الثلاثة، وأدرج الصنف في جسم الاستجابة بحيث يمكن تحليله دون جدول بحث.

مفاتيح idempotency في كل نداء مُعدِّل

قد يعيد المخطط محاولة خطوة بعد مهلة أو انهيار أو فشل جزئي. وبدون مفتاح idempotency، قد تؤدي إعادة محاولة POST /bookings إلى حجز مزدوج أو خصم مزدوج. يجب أن يكون المفتاح مولّداً من العميل، وفريداً لكل عملية منطقية، ومحترماً من الخادم خلال نافذة محددة. وينبغي للخادم أن يعيد الاستجابة نفسها لمفتاح مكرر، لا مورداً جديداً. هذه ليست فكرة جديدة، لكنها تُطبَّق بشكل غير متسق. وبالنسبة للأسطح الموجهة للوكلاء، فهي إلزامية في كل نداء مُعدِّل، بما في ذلك الإلغاءات والمبالغ المستردة.

الحصص كجزء من العقد

غالباً ما تكون حدود المعدل فكرة تشغيلية لاحقة. أما بالنسبة للمتصلين من الوكلاء، فهي جزء من الواجهة. انشر حدود المعدل وسماحات الاندفاع في وثيقة الاكتشاف حتى يتمكن المخططون من الجدولة. وأعد ترويسات الحصة المتبقية حتى يستطيع الوكيل التراجع قبل الفشل. وافصل المسارات التفاعلية عن مسارات الدفعات؛ فلا ينبغي لوكيل يقوم بالتسوية أن ينافس عملية دفع.

آلية ملموسة: اعرض نقطة نهاية GET /limits تعيد الحصص الحالية ونوافذ الاندفاع وأوقات إعادة الضبط بصيغة قابلة للقراءة آلياً. وأدرج X-RateLimit-Remaining وX-RateLimit-Reset في كل استجابة. عندئذ يستطيع المخطط تنفيذ مجدول بنظام دلو الرمو

Close-up view of glass bottles on an industrial production line in a manufacturing facility.

المقايضة: صيانة مسارات منفصلة تضيف تعقيداً تشغيلياً وقد تؤدي إلى طاقة غير مستغلة في مسار الدفعات خلال فترات الذروة التفاعلية. البديل — مسار واحد مع تلميحات الأولوية — أبسط في التشغيل لكن أصعب على المخطط في الاستدلال، لأن الأولوية ليست ضماناً. والخيار الصادق يعتمد على ما إذا كانت المنصة تتحمل تجويعاً عرضياً لعمل الدفعات.

تداعيات الحوكمة

كل نقطة نهاية موجهة للوكلاء تحتاج إلى مالك، وسياسة إهمال (deprecation)، وسجل تغييرات مُصدَّر بإصدارات. عامل التغييرات الكاسرة في واجهة وكيل كحادث إنتاجي للأنظمة النهائية. وخلافاً لتغيير واجهة مستخدم موجهة للبشر، لا يستطيع الوكيل التكيّف بقراءة لافتة. سيفشل بصمت أو، الأسوأ، سيتخذ إجراءً خاطئاً.

احتفظ بسجل طلبات قابل لإعادة التشغيل بحيث يمكن حل النزاعات حول ما فعله وكيل ما استناداً إلى الأدلة. وينبغي أن يتضمن السجل مفتاح idempotency، والطلب والاستجابة كاملين، وهوية الوكيل، والطابع الزمني. وهذا ليس للتنقيح فقط؛ إنه أساس الثقة. فعندما يدّعي بائع أن وكيلاً حجز فتحة بشكل مزدوج، يجب أن تكون المنصة قادرة على إظهار ما طُلب بالضبط وما أُعيد بالضبط.

ملاحظة حول الاكتشاف

ينبغي أن تكون الأسطح الموجهة للوكلاء قابلة للاكتشاف دون تدخل بشري. والحد الأدنى هو بيان قابل للقراءة آلياً عند مسار معروف (مثل /.well-known/agent-api) يسرد نقاط النهاية والمخططات ورموز الأخطاء وحدود المعدل وطرق المصادقة. وهذا هو مكافئ خريطة الموقع بالنسبة للوكيل. وبدونه، يصبح كل تكامل مخصصاً.

الخلاصة

التصميم للمتصلين الآليين أولاً لا يعني تجاهل المطورين البشر. إنه يعني جعل العقد صريحاً بما يكفي ليستدل عليه المخطط دون تخمين. إن idempotency والحصص ودلالات الأخطاء ليست ميزات؛ إنها الواجهة. والمنصات التي تتعامل معها كأفكار لاحقة ستجد أن الوكلاء يفشلون بطرق يصعب تنقيحها ويصعب أكثر الوثوق بها. أما التي تنشرها كجزء من العقد فستمكّن صنفاً جديداً من الأتمتة يكون موثوقاً وقابلاً للتدقيق وآمناً لإعادة المحاولة.

مشاركةXLinkedInرابط دائم4 دقيقة قراءة

قراءات ذات صلة

الأسئلة التي يجيب عنها هذا

Why design for machine callers before humans?

Because a planner cannot infer missing preconditions or tolerate ambiguous errors. The contract must be explicit, deterministic and machine-readable to enable reliable automation.

What is an idempotency key and why is it mandatory?

An idempotency key is a client-generated unique identifier for a logical operation. It ensures that a retried request does not double-book or double-charge, which is critical for agent planners that may retry after timeouts.

How should errors be classified for agent callers?

Errors should be classified by code into retryable, terminal and needs-human. This allows a planner to decide whether to retry, fail or escalate without parsing free-text messages.

What is the trade-off of separate interactive and batch lanes?

Separate lanes add operational complexity and can lead to underutilised capacity in the batch lane during peak interactive periods. A single lane with priority hints is simpler but harder for a planner to reason about.