استخدِم هذا الدليل لمساعدتك في تشخيص المشاكل الشائعة التي تحدث عند استدعاء Gemini API وحلّها. قد تواجه مشاكل من خدمة الخلفية لواجهة Gemini API أو حِزم SDK للبرامج. حِزم تطوير البرامج (SDK) الخاصة بالعملاء مفتوحة المصدر في المستودعات التالية:
في حال مواجهة مشاكل في مفتاح واجهة برمجة التطبيقات، تأكَّد من إعداد مفتاح واجهة برمجة التطبيقات بشكل صحيح وفقًا لدليل إعداد مفتاح واجهة برمجة التطبيقات.
رموز الخطأ في خدمة الخلفية لواجهة Gemini API
يسرد الجدول التالي رموز الأخطاء الشائعة في الخلفية التي قد تواجهها، بالإضافة إلى توضيحات حول أسبابها وخطوات تحديد المشاكل وحلّها:
| رمز HTTP | الحالة | الوصف | مثال | Solution |
| 400 | INVALID_ARGUMENT | تمت صياغة نص الطلب بشكل غير صحيح. | هناك خطأ إملائي أو حقل مطلوب ناقص في طلبك. | راجِع مرجع واجهة برمجة التطبيقات لمعرفة تنسيق الطلب والأمثلة والإصدارات المتوافقة. قد يؤدي استخدام ميزات من إصدار أحدث من واجهة برمجة التطبيقات مع نقطة نهاية قديمة إلى حدوث أخطاء. |
| 400 | FAILED_PRECONDITION | لا تتوفّر الطبقة المجانية من Gemini API في بلدك. يُرجى تفعيل الفوترة في مشروعك في Google AI Studio. | أنت تقدّم طلبًا في منطقة لا تتوفّر فيها الطبقة المجانية، ولم تفعّل الفوترة في مشروعك على Google AI Studio. | لاستخدام Gemini API، عليك إعداد خطة مدفوعة باستخدام Google AI Studio. |
| 403 | PERMISSION_DENIED | لا يتضمّن مفتاح واجهة برمجة التطبيقات الأذونات المطلوبة. | أنت تستخدم مفتاح API غير صحيح، أو تحاول استخدام نموذج معدَّل بدون إجراء المصادقة المناسبة. | تأكَّد من ضبط مفتاح واجهة برمجة التطبيقات ومنحه إذن الوصول المناسب. وتأكَّد من إكمال عملية المصادقة بشكل صحيح لاستخدام النماذج المعدَّلة. |
| 404 | NOT_FOUND | لم يتم العثور على المورد المطلوب. | لم يتم العثور على ملف صورة أو صوت أو فيديو تمت الإشارة إليه في طلبك. | تحقَّق مما إذا كانت جميع المَعلمات في طلبك صالحة لإصدار واجهة برمجة التطبيقات. |
| 429 | RESOURCE_EXHAUSTED | تجاوزت أحد الحدود القصوى لمعدّل الطلبات في واجهة برمجة التطبيقات (طلبات في الدقيقة، وطلبات في الشهر، وطلبات في اليوم، والإنفاق، وما إلى ذلك). | أنت ترسل عددًا كبيرًا جدًا من الطلبات أو تستخدم عددًا كبيرًا جدًا من الرموز المميزة أو تتجاوز الحدود المستندة إلى الإنفاق في سجلّ الفواتير والمستوى الخاصين بحسابك. | تأكَّد من أنّك ضمن حدود المعدّل للنموذج. يُرجى الانتظار وإعادة المحاولة بعد فترة قصيرة. تقليل معدّل أو حجم الطلبات طلب زيادة الحدّ الأقصى لمعدّل الطلبات عند الحاجة |
| 499 | تم إلغاؤها | تم إلغاء العملية، وعادةً ما يكون ذلك من قِبل المتصل. | أغلق العميل الاتصال قبل أن تتمكّن واجهة برمجة التطبيقات من إنهاء الرد. | تحقَّق ممّا إذا كان العميل أو البنية الأساسية للشبكة يغلقان الاتصال قبل الأوان (على سبيل المثال، بسبب انتهاء المهلة من جهة العميل). |
| 500 | للاستخدام الداخلي | حدث خطأ غير متوقَّع من جهة Google. | سياق الإدخال طويل جدًا. | راجِع صفحة حالة Gemini API للاطّلاع على أي حوادث مستمرة. يمكنك تقليل سياق الإدخال أو التبديل مؤقتًا إلى نموذج آخر (مثل التبديل من Gemini 2.5 Pro إلى Gemini 2.5 Flash) لمعرفة ما إذا كان ذلك سيحلّ المشكلة. أو الانتظار قليلاً وإعادة محاولة إجراء الطلب. إذا استمرت المشكلة بعد إعادة المحاولة، يُرجى الإبلاغ عنها باستخدام الزر إرسال ملاحظات في Google AI Studio. |
| 503 | UNAVAILABLE | قد تكون الخدمة محمّلة بشكل مؤقت أو معطّلة. | نفدت سعة الخدمة مؤقتًا. | راجِع صفحة حالة Gemini API للاطّلاع على أي حوادث مستمرة. بدِّل مؤقتًا إلى نموذج آخر (مثلاً من Gemini 2.5 Pro إلى Gemini 2.5 Flash) لمعرفة ما إذا كان ذلك سيحلّ المشكلة. أو الانتظار قليلاً وإعادة محاولة إجراء الطلب. إذا استمرت المشكلة بعد إعادة المحاولة، يُرجى الإبلاغ عنها باستخدام الزر إرسال ملاحظات في Google AI Studio. |
| 504 | DEADLINE_EXCEEDED | يتعذّر على الخدمة إنهاء المعالجة في غضون الموعد النهائي. | طلبك (أو سياقك) كبير جدًا بحيث لا يمكن معالجته في الوقت المناسب. | اضبط قيمة "مهلة" أكبر في طلب العميل لتجنُّب هذا الخطأ. |
استراتيجية إعادة المحاولة
إذا تلقّيت رسالة خطأ تشير إلى أنّه عليك إعادة محاولة إرسال طلبك (مثل 429 RESOURCE_EXHAUSTED أو 503 UNAVAILABLE)، ننصحك بتنفيذ استراتيجية التراجع الأسي. وهذا يعني الانتظار لفترة قصيرة قبل إعادة المحاولة الأولى، ثم زيادة وقت الانتظار تدريجيًا بين عمليات إعادة المحاولة اللاحقة.
تتضمّن حِزم تطوير البرامج (SDK) الرسمية الخاصة بواجهة Gemini API، مثل حزمة Python SDK، منطق إعادة المحاولة التلقائي مع التراجع الأسي تلقائيًا للتعامل مع الأخطاء المؤقتة، مثل المهلات ومشاكل الشبكة وحدود المعدّل (رمزا الحالة 429 و5xx). على سبيل المثال، تعيد حزمة تطوير البرامج (SDK) الخاصة بلغة Python تلقائيًا محاولة تنفيذ العمليات التي تؤدي إلى حدوث أخطاء مؤقتة أربع مرات كحد أقصى مع تأخير أولي يبلغ ثانية واحدة تقريبًا وتأخير أقصى يبلغ 60 ثانية.
إذا كنت تُجري طلبات مباشرة من واجهة REST API أو تخصّص منطق إعادة المحاولة، اتّبِع أفضل الممارسات التالية لزيادة احتمال نجاح الطلب ومنع إرهاق الخدمة:
- استخدام التراجع الأسي: الانتظار لفترة قصيرة قبل إعادة المحاولة الأولى (ثانية واحدة مثلاً)، ثم زيادة مدة التأخير بشكل أسي (ثانيتان مثلاً، ثم 4 ثوانٍ، ثم 8 ثوانٍ).
- إضافة تشويش: أضِف "تشويشًا" عشوائيًا إلى التأخير للمساعدة في منع جميع العملاء من إعادة المحاولة في الوقت نفسه بالضبط.
- إعادة المحاولة عند حدوث أخطاء معيّنة: أعِد المحاولة فقط عند حدوث أخطاء عابرة (مثل
429أو408أو5xx). لا تعِد المحاولة عند حدوث أخطاء في العميل (مثل400أو403) لأنّها تشير إلى مشاكل مثل مفاتيح واجهة برمجة التطبيقات غير الصالحة أو البنية غير الصحيحة. - ضبط الحدّ الأقصى لعدد المحاولات: حدِّد الحدّ الأقصى لعدد المحاولات لمنع حدوث حلقات لا نهائية.
التحقّق من أخطاء مَعلمات النموذج في طلبات البيانات من واجهة برمجة التطبيقات
تأكَّد من أنّ مَعلمات النموذج تندرج ضمن القيم التالية:
| مَعلمة النموذج | القيم (النطاق) |
| عدد المرشحين | من 1 إلى 8 (عدد صحيح) |
| درجة الحرارة | 0.0-1.0 |
| أقصى عدد لرموز الناتج المميّزة | استخدِم صفحة النماذج لتحديد الحدّ الأقصى لعدد الرموز المميزة للنموذج الذي تستخدمه. |
| TopP | 0.0-1.0 |
بالإضافة إلى التحقّق من قيم المَعلمات، تأكَّد من أنّك تستخدم إصدار واجهة برمجة التطبيقات الصحيح (مثل /v1 أو /v1beta) والنموذج الذي يتوافق مع الميزات التي تحتاج إليها. على سبيل المثال، إذا كانت إحدى الميزات في إصدار تجريبي، ستتوفّر فقط في إصدار واجهة برمجة التطبيقات /v1beta.
التأكّد من أنّ لديك الطراز المناسب
تأكَّد من أنّك تستخدم طرازًا متوافقًا مُدرَجًا في صفحة الطُرز.
زيادة وقت الاستجابة أو استخدام الرموز المميزة مع نماذج 2.5
إذا لاحظت زيادة في وقت الاستجابة أو استخدام الرموز المميزة مع طرازَي 2.5 Flash وPro، قد يكون ذلك بسبب تفعيل ميزة "التفكير" تلقائيًا بهدف تحسين الجودة. إذا كانت الأولوية لديك هي السرعة أو كنت بحاجة إلى تقليل التكاليف، يمكنك تعديل ميزة "أفكر" أو إيقافها.
يُرجى الرجوع إلى صفحة التفكير للحصول على إرشادات ونموذج رمز.
مشاكل متعلّقة بالسلامة
إذا ظهرت لك رسالة تفيد بأنّه تم حظر طلب بسبب إعدادات الأمان في طلب البيانات من واجهة برمجة التطبيقات، راجِع الطلب مع مراعاة الفلاتر التي ضبطتها في طلب البيانات من واجهة برمجة التطبيقات.
إذا ظهرت لك الرسالة BlockedReason.OTHER، قد يكون الطلب أو الرد مخالفًا لبنود الخدمة أو غير متوافق معها.
مشكلة في التلاوة
إذا ظهرت لك رسالة تفيد بأنّ النموذج توقّف عن إنشاء النتائج بسبب RECITATION، هذا يعني أنّ نتائج النموذج قد تشبه بيانات معيّنة. لحلّ هذه المشكلة، حاوِل جعل الطلب أو السياق فريدًا قدر الإمكان واستخدِم درجة حرارة أعلى.
مشكلة الرموز المميزة المتكررة
إذا ظهرت لك رموز مميّزة مكرّرة في الناتج، جرِّب الاقتراحات التالية للمساعدة في تقليلها أو إزالتها.
| الوصف | السبب | الحلّ البديل المقترَح |
|---|---|---|
| الواصلات المتكرّرة في جداول Markdown | يمكن أن يحدث ذلك عندما تكون محتويات الجدول طويلة لأنّ النموذج يحاول إنشاء جدول Markdown متوافق بصريًا. ومع ذلك، لا يكون المحاذاة في Markdown ضروريًا لعرض المحتوى بشكل صحيح. |
أضِف تعليمات في طلبك لتزويد النموذج بإرشادات محدّدة لإنشاء جداول Markdown. قدِّم أمثلة تتّبع هذه الإرشادات. يمكنك أيضًا محاولة تعديل درجة الحرارة. لإنشاء رمز برمجي أو ناتج منظَّم جدًا، مثل جداول Markdown، تبيّن أنّ درجات الحرارة العالية تؤدي أداءً أفضل (أكبر من أو يساوي 0.8). في ما يلي مثال على مجموعة إرشادات يمكنك إضافتها إلى طلبك لمنع حدوث هذه المشكلة:
# Markdown Table Format
* Separator line: Markdown tables must include a separator line below
the header row. The separator line must use only 3 hyphens per
column, for example: |---|---|---|. Using more hypens like
----, -----, ------ can result in errors. Always
use |:---|, |---:|, or |---| in these separator strings.
For example:
| Date | Description | Attendees |
|---|---|---|
| 2024-10-26 | Annual Conference | 500 |
| 2025-01-15 | Q1 Planning Session | 25 |
* Alignment: Do not align columns. Always use |---|.
For three columns, use |---|---|---| as the separator line.
For four columns use |---|---|---|---| and so on.
* Conciseness: Keep cell content brief and to the point.
* Never pad column headers or other cells with lots of spaces to
match with width of other content. Only a single space on each side
is needed. For example, always do "| column name |" instead of
"| column name |". Extra spaces are wasteful.
A markdown renderer will automatically take care displaying
the content in a visually appealing form.
|
| الرموز المتكررة في جداول Markdown | كما هو الحال مع الشرطات المتكررة، يحدث ذلك عندما يحاول النموذج محاذاة محتوى الجدول بصريًا. لا يُشترط أن يكون المحتوى محاذيًا في Markdown لعرضه بشكل صحيح. |
|