عند طلب البحث من واجهة برمجة التطبيقات Developer Knowledge API أو خادم Developer Knowledge MCP في التطبيقات المتاحة للإنتاج ووكلاء الذكاء الاصطناعي، يجب توفير معالجة الأخطاء وإدارة الحصة لتحقيق أداء عالٍ.
في هذا الدليل، سنتعرّف على كيفية:
- تنفيذ خوارزمية الرقود الأسي الثنائي المقتطع مع التشويش لاستجابات HTTP 429
- التعامل مع رموز الخطأ الأساسية في gRPC (
INVALID_ARGUMENTوPERMISSION_DENIEDوRESOURCE_EXHAUSTED) - إدارة مهلات الاتصال ببروتوكول MCP ومنطق إعادة المحاولة
- تطبيق أفضل الممارسات المتعلّقة بإدارة الحصص والتخزين المؤقت
الحدّ من معدّل الزحف باستخدام رمز الحالة HTTP 429 وأسلوب التراجع الدليلي
عندما تتجاوز معدّلات الطلبات حصة واجهة برمجة التطبيقات التلقائية، تعرض الخدمة الخطأ HTTP 429 Too Many Requests. يجب أن تنفّذ التطبيقات منطق إعادة المحاولة
باستخدام خوارزمية الرقود الأسي الثنائي المقتطع مع التشويش لتجنُّب إرهاق الخدمة.
خوارزمية الرقود الأسي الثنائي المقتطعة
احتساب فترات التأخير بين المحاولات باستخدام الصيغة التالية:
retry_delay = min(max_delay, initial_delay * (2 ^ attempt) + jitter)
استخدِم المَعلمات التالية لاحتساب فترات التأخير بين المحاولات:
-
initial_delay: تأخير إعادة المحاولة الأوّلية (على سبيل المثال، ثانية واحدة). -
max_delay: الحدّ الأقصى للتراجع (على سبيل المثال، 32.0 ثانية). -
attempt: عدد محاولات إعادة التشغيل الحالية (0 أو 1 أو 2 أو غير ذلك) -
jitter: قيمة عشوائية بين 0 و1.0 ثانية لمنع حدوث ارتفاعات مفاجئة في مزامنة سلاسل المحادثات (مشكلة القطيع الصاخب).
معالجة الأخطاء في gRPC
يجب أن تفحص التطبيقات التي تصل إلى الخدمة عبر gRPC قيم grpc.StatusCode الأساسية.
رموز الحالة العادية في gRPC
يسرد الجدول التالي رموز حالة gRPC الأساسية التي تعرضها الخدمة والطريقة المقترَحة التي يجب أن يتعامل بها العميل معها:
| رمز حالة gRPC | رموز حالة HTTP | السبب الأساسي | الإجراء المقترَح |
|---|---|---|---|
INVALID_ARGUMENT |
400 Bad Request |
سلسلة طلب بحث مكتوبة بشكل غير صحيح أو تنسيق مَعلمة غير صالح أو قناع حقل غير صالح | عدم إعادة المحاولة يُرجى تصحيح مَعلمات الطلب قبل تكراره. |
UNAUTHENTICATED |
401 Unauthorized |
مفتاح واجهة برمجة التطبيقات أو رمز OAuth المميز للمالك غير متوفّر أو منتهي الصلاحية أو تمت صياغته بشكلٍ غير صحيح | عدم إعادة المحاولة أعِد تحميل بيانات الاعتماد أو أنشئ مفتاحًا صالحًا لواجهة برمجة التطبيقات. |
PERMISSION_DENIED |
403 Forbidden |
لا يتوفّر الإذن لمفتاح واجهة برمجة التطبيقات أو أنّ واجهة Developer Knowledge API غير مفعّلة في المشروع. | عدم إعادة المحاولة تأكَّد من تفعيل واجهة برمجة التطبيقات في Google Cloud Console. |
NOT_FOUND |
404 Not Found |
مسار المستند parent المحدّد غير متوفّر. يفشل BatchGetDocuments بشكل ذري إذا لم يتم العثور على أي مستند مطلوب. |
عدم إعادة المحاولة تحقَّق من اسم مورد المستند. |
RESOURCE_EXHAUSTED |
429 Too Many Requests |
تم تجاوز الحد المسموح به لمعدّل الإرسال أو الحد المسموح به لحصة المشروع. | أعِد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي مع التشويش. |
UNAVAILABLE |
503 Service Unavailable |
انقطاع مؤقت في الشبكة أو إعادة تشغيل الخادم | أعِد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي. |
DEADLINE_EXCEEDED |
504 Gateway Timeout |
تجاوز الطلب الموعد النهائي المحدّد لطلب استدعاء الإجراء عن بُعد (RPC) قبل اكتماله. | أعِد المحاولة مع زيادة المهلة الزمنية لطلب الإجراء عن بُعد (RPC) من العميل. |
انتهاء مهلة اتصال منصّة إدارة الموافقة وإدارة الأخطاء
خادم Developer Knowledge MCP هو خدمة عن بُعد مستضافة على
https://developerknowledge.googleapis.com/mcp ويمكن الوصول إليها عبر HTTPS (باستخدام HTTP
POST أو Server-Sent Events). على المضيفين والوكلاء بالذكاء الاصطناعي إدارة مهل الاتصال وأخطاء الأدوات بشكل سليم.
انتهاء مهلات تنفيذ الأدوات
عندما يستدعي أحد الوكلاء search_documents أو get_documents أو answer_query، قد تتجاوز مدة استدعاء الأدوات مهلة الاستجابة (على سبيل المثال، 30 ثانية) إذا كان هناك تأخير في اتصالات الشبكة.
للتعامل مع حالات انتهاء المهلة أثناء تنفيذ الأدوات، اتّبِع الخطوات التالية:
- ضبط مهلات العميل: اضبط مهلات تنفيذ الأداة على 30 إلى 60 ثانية في إعدادات عميل مضيف MCP.
- التعامل مع انقطاعات الشبكة: إعادة محاولة طلبات HTTP التي تعذّر تنفيذها مع التمهّل بين عمليات إعادة المحاولة عند حدوث انقطاعات مؤقتة في الشبكة أو تلقّي استجابات HTTP 503.
- فحص رسائل الخطأ: يمكنك تحليل رسائل الخطأ العادية بتنسيق JSON-RPC أو رموز حالة الخطأ بتنسيق HTTP للتمييز بين الوسيطات غير الصالحة والاستخدام المفرط للحصة.
أفضل الممارسات المتعلّقة بإدارة الحصص
اتّبِع أفضل الممارسات التالية للحفاظ على الاستخدام الأمثل لواجهة برمجة التطبيقات وتجنُّب حدود المعدّل غير المتوقّعة:
- تخزين محتوى المستند الذي تم استرجاعه مؤقتًا: يمكنك تخزين مستندات Markdown التي تم جلبها محليًا أو في ذاكرة تخزين مؤقت (مثل Redis) عند إنشاء تطبيقات تصل إلى الصفحات نفسها بشكل متكرر.
- استخدام عملية الاسترجاع المجمّع: استخدِم
documents.batchGetبدلاً من تنفيذ طلباتdocuments.getمتعدّدة ومتسلسلة. - تحسين حقول طلب البحث: اطلب فقط حقول الردود المطلوبة باستخدام أقنعة الحقول الانتقائية (
fields=results(parent,content)). - مراقبة استهلاك الحصة: تتبُّع معدّلات طلبات بيانات من واجهة برمجة التطبيقات في لوحة بيانات واجهة برمجة التطبيقات في Google Cloud Console