واجه أحد العملاء مؤخراً خطأ 400 "بأسلوب Google" أثناء استدعاء Nano Banana Pro (معرف النموذج: gemini-3-pro-image-preview) لعملية تحويل صورة إلى صورة:
{
"status_code": 400,
"error": {
"message": "Unsupported file URI type: {{ $json.imageUrls }}. File URI must be a File API (e.g. https://generativelanguage.googleapis.com/files/<id>), Youtube (e.g. https://www.youtube.com/watch?v=<id>), or HTTPS (e.g. http://path/to/file).), or a valid gURI (e.g. gs://bucket/object",
"type": "",
"code": 400
}
}
رسالة خطأ Nano Banana Pro هذه تشير بوضوح إلى "الجاني": Unsupported file URI type: {{ $json.imageUrls }}. لاحظ أن {{ $json.imageUrls }} هو نص متغير قالب n8n لم يتم استبداله؛ أي أن العميل كتب تعبيراً ديناميكياً في سير العمل، لكن المحرك لم يقم بتحويل هذا التعبير إلى رابط (URL) حقيقي، بل تم إرساله كما هو كـ "نص" داخل حقل fileUri في واجهة برمجة تطبيقات Gemini. وبطبيعة الحال، لم تتمكن Google من التعرف على رابط يبدأ بـ {{ ... }}، فرفضت الطلب مباشرة.
بناءً على هذا الخطأ الواقعي، ومتطلبات التوثيق الرسمي لـ Google بخصوص تنسيق الإدخال لنموذج gemini-3-pro-image-preview، سنقوم بتفكيك 5 سيناريوهات شائعة تؤدي إلى هذا الخطأ، مع تقديم كود قابل للتنفيذ وحل سريع لكل حالة. بعد قراءة هذا المقال، ستتمكن من تحديد وإصلاح أي طلب فاشل يظهر خطأ Unsupported file URI type في أقل من 5 دقائق.

نظرة سريعة على معلومات خطأ Nano Banana Pro
قبل البدء في تعديل الكود، دعنا نلخص المعلومات الأساسية لهذا الخطأ وتنسيقات URI المسموح بها رسمياً في جدول واحد:
| البعد | الحقيقة الأساسية |
|---|---|
| معرف النموذج | gemini-3-pro-image-preview (الاسم الرسمي لـ Nano Banana Pro في Gemini API) |
| حالة HTTP للخطأ | 400 (طلب خاطئ، خطأ في معلمات العميل) |
| حقل الخطأ الرئيسي | Unsupported file URI type |
| موقع المشكلة الحقيقي | حقل fileData.fileUri في جسم الطلب |
| القيمة الحرفية في الخطأ | {{ $json.imageUrls }} (تعبير n8n لم يتم معالجته) |
| أنواع URI المقبولة في Gemini | File API URI / YouTube URL / رابط HTTPS عام / GCS gs:// URI |
| تنسيقات الصور المقبولة | JPEG, JPG, PNG, WEBP, HEIF |
| هل يدعم Nano Banana Pro روابط خارجية؟ | ✅ نعم (نماذج Gemini 2.5+ تدعم أصلاً روابط HTTPS العامة / الروابط الموقعة مسبقاً) |
| السبب الجذري المحتمل | فشل استبدال متغير القالب في سير عمل n8n / Make / Zapier |
🎯 نصيحة سريعة لاستكشاف الأخطاء: إذا لم يرغب العميل في مشاركة جسم الطلب بالكامل، اطلب منه إجراء استدعاء ناجح أولاً في لوحة تحكم APIYI (apiyi.com) باستخدام نفس نموذج
gemini-3-pro-image-preview+ نفس الصورة المرجعية، ثم قارن بين جسم الطلب الفاشل والناجح، فهذه أسرع طريقة لتحديد سبب خطأ Nano Banana Pro.
بعد تصنيف جميع الحالات الواقعية، يمكن حصر خطأ Unsupported file URI type في 5 أسباب رئيسية. سنرتبها هنا حسب "تكرار الحدوث" من الأعلى إلى الأقل.
السبب 1: عدم معالجة متغيرات القالب في n8n / Make / Zapier
هذا هو "المشتبه به الأول" لهذا الخطأ تحديداً. {{ $json.imageUrls }} هي صيغة تعبير في n8n، والتي يجب في الظروف العادية أن يتم استبدالها قبل التنفيذ برابط URL حقيقي ناتج عن الخطوة السابقة، مثل https://cdn.example.com/uploads/abc.jpg. لكن هناك حالات نموذجية تفشل فيها عملية الاستبدال هذه:
- عدم تفعيل وضع "Expression" في حقل Body الخاص بـ HTTP Request، بل تركه على وضع "Fixed"، مما يؤدي إلى إرسال نص JSON بالكامل كسلسلة نصية عادية؛
- استخدام اقتباسات مزدوجة متداخلة في JSON Body، مما يجعل n8n يظن أن التعبير جزء من محتوى السلسلة النصية، فيتجاهل معالجته؛
- عدم تطابق هيكل مخرجات الخطوة السابقة مع المسار الذي كتبته—مثلاً، المخرج الفعلي هو
imageUrl(مفرد)، بينما كتبت أنت$json.imageUrls(جمع)، وبعد فشل التحليل، يقوم n8n بإرجاع التعبير كما هو؛ - التعبيرات داخل العقد الفرعية (Sub-node) لا تتكرر حسب العنصر (Item)، بل تأخذ العنصر الأول بشكل ثابت، وفي بعض المدخلات تصبح
undefinedوتتحول عند تحويلها إلى نص إلى التعبير الأصلي.
طريقة التشخيص: إذا رأيت {{ ... }} داخل رسالة خطأ Gemini، فهذه المشكلة هي السبب بنسبة 100%، لأن الرابط الصحيح لا يمكن أن يبدو بهذا الشكل.
السبب 2: خطأ إملائي في اسم الحقل يؤدي إلى تمرير undefined / null
يأتي هذا السبب مباشرة بعد مشاكل القوالب. من المحتمل جداً وجود حالة كهذه في كود العميل:
// الحقل الذي يرجعه الواجهة البرمجية فعلياً يسمى imageUrl (مفرد)
const upstream = { imageUrl: "https://cdn.example.com/a.jpg" };
// لكن الكود في الأسفل كتب imageUrls (جمع، مع حرف s)
fileUri: upstream.imageUrls // النتيجة هي undefined
عند تحويل undefined إلى JSON أو دمجها في نص، تتحول إلى السلسلة النصية "undefined"، وهو ما لا يستطيع Gemini التعرف عليه، فيقوم بإطلاق خطأ 400 مشابه تماماً لخطأ عدم معالجة متغيرات القالب. الفرق هو أن القيمة الظاهرة في الخطأ هي undefined وليست {{ ... }}.
السبب 3: تمرير مصفوفة إلى fileUri بدلاً من سلسلة نصية
يظهر هذا السبب الثالث غالباً في سيناريوهات "معالجة صور متعددة دفعة واحدة". حقل fileData.fileUri في Gemini API يقبل سلسلة نصية واحدة فقط، وليس مصفوفة. لكن العديد من المطورين يكتبون الكود هكذا:
// ❌ خطأ: تمرير مصفوفة مباشرة إلى fileUri
{
"fileData": {
"fileUri": ["https://cdn.example.com/a.jpg", "https://cdn.example.com/b.jpg"],
"mimeType": "image/jpeg"
}
}
بعد تحويله إلى JSON، سيتحول حقل fileUri إلى سلسلة نصية تحتوي على ["https://...", "https://..."]، فيفشل Gemini في تحليله ويطلق خطأ Unsupported file URI type. الطريقة الصحيحة هي إنشاء عنصر parts مستقل لكل صورة، بدلاً من حشر المصفوفة داخل fileUri واحد.
السبب 4: بروتوكول URL أو تنسيق المسار غير مدعوم
تندرج المشكلة الرابعة تحت "انحراف التنسيق". لا يقبل Gemini API سوى 4 أنواع من الـ URI، وأي صيغة خارج هذا النطاق ستؤدي إلى نفس الخطأ:
| نوع URI | مثال | هل مقبول لدى gemini-3-pro-image-preview |
|---|---|---|
| مسار File API | https://generativelanguage.googleapis.com/files/abc123 |
✅ |
| رابط YouTube | https://www.youtube.com/watch?v=xxxxx |
✅ (يستخدم لفهم الفيديو) |
| رابط HTTPS عام | https://cdn.example.com/img.jpg |
✅ (مدعوم أصلياً منذ Gemini 2.5+) |
مسار GCS gs:// |
gs://my-bucket/img.jpg |
✅ (مسار Vertex AI) |
http:// عادي |
http://cdn.example.com/img.jpg |
⚠️ مرفوض في بعض الحالات، يُنصح بالترقية إلى HTTPS |
مسار محلي file:// |
file:///Users/me/a.jpg |
❌ |
data:image/...;base64, |
base64 dataURL | ❌ (يجب وضعه في inlineData) |
| رابط S3 مؤقت | https://bucket.s3.amazonaws.com/...?X-Amz-... |
✅ |
| رابط Azure SAS | https://account.blob.core.windows.net/...?sv=... |
✅ |
إذا قمت بتمرير مسار ملف محلي، أو بيانات base64 تبدأ بـ data:، أو رابط شبكة داخلية خاصة إلى fileUri، فسيؤدي ذلك بلا استثناء إلى خطأ Nano Banana Pro.
السبب 5: الرابط يعمل ولكن يتطلب صلاحيات / لا يعيد صورة
الفئة الأخيرة هي "الرابط يبدو صحيحاً، لكن Gemini لا يستطيع جلب المحتوى". الحالات الشائعة:
- روابط OSS / Qiniu / Cloudinary خاصة لا تملك صلاحية الوصول العام، فيحصل Gemini على خطأ 403؛
- رابط التوقيع المؤقت قد انتهت صلاحيته؛
- الرابط لا يعيد صورة، بل صفحة HTML (مثل "صفحة المشاركة" لبعض مواقع رفع الصور، وليس الرابط المباشر)؛
- الرابط يعيد توجيهاً إلى صفحة تسجيل الدخول؛
- نوع MIME لا يتطابق مع حقل
mimeType.
أحياناً تظهر هذه المشاكل أيضاً على شكل Unsupported file URI type، وأحياناً تتحول إلى خطأ آخر هو 400 Invalid or unsupported file uri. طريقة الإصلاح في الحالتين واحدة: افتح الرابط مباشرة في نافذة متصفح خفية (Incognito)، وتأكد مما إذا كان بإمكانك تنزيل صورة قانونية منه، فهذه هي الطريقة الأكثر بساطة وفعالية.

الحد الأدنى لإعادة إنتاج أخطاء Nano Banana Pro وحلول الإصلاح الفوري
بعد الاطلاع على الأسباب الخمسة الرئيسية، سنقدم لك الآن الحد الأدنى من الكود القابل لإعادة الإنتاج + نسخة الإصلاح لكل سيناريو، والتي يمكنك نسخها مباشرة إلى سير عملك أو الواجهة الخلفية لاستبدال الكود الحالي.
الإصلاح 1: تمرير معامل imageUrls بشكل صحيح في n8n
بالنسبة لخطأ Nano Banana Pro الذي يواجهه العميل حالياً، إذا كان يستخدم عقدة HTTP Request في n8n، فيجب أن تكون الصيغة الصحيحة كالتالي:
إعدادات عقدة HTTP Request:
- Method:
POST - URL:
https://api.apiyi.com/v1/messages(استبدله بعنوان خدمة وكيل APIYI الخاص بك) - Authentication: Header Auth (ضع مفتاح API الخاص بك)
- Body Content Type:
JSON - Specify Body: اختر
Using JSON(بدلاً من Using Fields) - JSON Body (لاحظ أن كتلة JSON بالكامل يجب أن تكون في وضع التعبير، أي يجب تفعيل زر fx الأرجواني على اليسار):
={
"model": "gemini-3-pro-image-preview",
"contents": [
{
"parts": [
{ "text": "حوّل هذه الصورة إلى نمط استوديو جيبلي" },
{
"fileData": {
"fileUri": "{{ $json.imageUrls }}",
"mimeType": "image/jpeg"
}
}
]
}
]
}
هناك 3 نقاط جوهرية:
- يجب أن تبدأ سلسلة JSON بعلامة
=لإخبار n8n أن هذا الجزء بالكامل عبارة عن تعبير يحتاج إلى معالجة؛ - يجب وضع
"{{ $json.imageUrls }}"بين علامتي اقتباس مزدوجة، حتى يتم استبدال{{ }}الداخلية بالقيمة النصية الفعلية؛ - يجب أن تُخرج العقدة السابقة حقلاً باسم
imageUrlsفعلياً؛ إذا كانت المخرجات باسمimageUrl(مفرد) أوimage_url، فيجب تعديل اسم الحقل وفقاً لذلك.
بمجرد استيفاء هذه النقاط الثلاث، سيختفي خطأ Unsupported file URI type فوراً.
الإصلاح 2: منع الأخطاء المطبعية في أسماء الحقول (Python / Node.js)
إذا كان العميل يستخدم كوداً برمجياً في الواجهة الخلفية، نوصي بإضافة تحقق من المدخلات لكشف الأخطاء المطبعية قبل إرسال الطلب إلى Gemini:
import requests
def call_nano_banana_pro(prompt: str, image_url: str):
# تحقق دفاعي: اعتراض القيم None / السلاسل الفارغة / قوالب النصوص قبل إرسال الطلب
if not image_url or not isinstance(image_url, str):
raise ValueError(f"يجب أن يكون image_url سلسلة نصية غير فارغة، القيمة الحالية: {image_url!r}")
if image_url.startswith("{{") or "undefined" in image_url:
raise ValueError(f"يبدو أن image_url متغير قالب لم يتم عرضه: {image_url}")
if not image_url.startswith(("https://", "gs://")):
raise ValueError(f"يجب أن يبدأ image_url بـ https:// أو gs://: {image_url}")
payload = {
"model": "gemini-3-pro-image-preview",
"contents": [{
"parts": [
{"text": prompt},
{"fileData": {
"fileUri": image_url,
"mimeType": "image/jpeg"
}}
]
}]
}
resp = requests.post(
"https://api.apiyi.com/v1/messages",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json=payload,
timeout=120
)
return resp.json()
هذا الأسلوب "التحقق قبل الإرسال" يمكنه اعتراض 90% من أخطاء Nano Banana Pro قبل حدوثها، مما يمنع تلوث سجلات الأخطاء في جانب Gemini.
الإصلاح 3: تقسيم الصور المتعددة إلى parts منفصلة بشكل صحيح
إذا كنت بحاجة فعلاً إلى إرسال صور مرجعية متعددة إلى Nano Banana Pro في وقت واحد (على سبيل المثال، لنقل النمط + تثبيت الشخصية)، فإن الطريقة الصحيحة هي إنشاء عناصر parts مستقلة لكل صورة، بدلاً من حشر المصفوفة داخل fileUri:
// ✅ الصيغة الصحيحة
const imageUrls = [
"https://cdn.example.com/style.jpg",
"https://cdn.example.com/person.jpg"
];
const payload = {
model: "gemini-3-pro-image-preview",
contents: [{
parts: [
{ text: "ارسم شخصية الصورة الثانية بنمط الصورة الأولى" },
...imageUrls.map(url => ({
fileData: { fileUri: url, mimeType: "image/jpeg" }
}))
]
}]
};
const resp = await fetch("https://api.apiyi.com/v1/messages", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
},
body: JSON.stringify(payload)
});
هذه الطريقة لا تتجنب خطأ Unsupported file URI type فحسب، بل تساعد Gemini أيضاً على فهم العلاقة الدلالية بين الصور المتعددة بشكل صحيح.
الإصلاح 4: العودة إلى تضمين base64 في حال تعذر الوصول للرابط
إذا كان الرابط الذي حصلت عليه يشير إلى حاوية خاصة (Private Bucket)، أو عنوان شبكة داخلية، أو رابط مؤقت، فقد لا يتمكن خادم Gemini من الوصول إليه. الحل الأكثر استقراراً هو استخدام inlineData + base64:
import base64
import requests
def call_with_base64(prompt: str, local_path: str):
with open(local_path, "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
payload = {
"model": "gemini-3-pro-image-preview",
"contents": [{
"parts": [
{"text": prompt},
{"inlineData": {
"mimeType": "image/jpeg",
"data": b64
}}
]
}]
}
return requests.post(
"https://api.apiyi.com/v1/messages",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json=payload
).json()
ملاحظة: يستخدم inlineData حقل data (base64 نقي، بدون بادئة data:image/jpeg;base64,)، بينما يستخدم fileData حقل fileUri. كلاهما متنافيان، لا تملأهما معاً.
🎯 نصيحة للاستقرار: بالنسبة للسيناريوهات التي تكون فيها مصادر الروابط غير قابلة للتحكم (مثل تحميلات العملاء أو واجهات برمجة تطبيقات خارجية)، نوصي بجعل تحويل صورة إلى صورة يستخدم base64 افتراضياً + الاستدعاء عبر منصة وكيل مثل APIYI (apiyi.com) لاستخدام
gemini-3-pro-image-preview؛ لتجنب رفض Gemini للروابط الخارجية بسبب مشاكل الشبكة أو الأذونات.
قائمة مراجعة استكشاف أخطاء Nano Banana Pro
لقد لخصنا كل ما سبق في قائمة "فحص لمدة 5 دقائق"، بحيث يمكن للعميل اتباعها مباشرة عند ظهور خطأ Unsupported file URI type.
قائمة الفحص لمدة 5 دقائق
| الخطوة | الإجراء | النتيجة المتوقعة |
|---|---|---|
| 1 | انسخ القيمة الحرفية الموجودة بعد Unsupported file URI type: في رسالة الخطأ |
الحصول على قيمة fileUri التي استلمها Gemini فعلياً |
| 2 | تحقق مما إذا كانت القيمة تحتوي على {{، undefined، null، [ |
إذا وجدت → فغالباً (90%) المشكلة في عدم عرض القالب أو اسم حقل خاطئ |
| 3 | افتح الرابط مباشرة في نافذة متصفح خفية (Incognito) | المتوقع: القدرة على تنزيل صورة JPEG/PNG/WEBP صالحة |
| 4 | تحقق مما إذا كان بروتوكول الرابط https:// أو gs:// |
إذا لم يكن كذلك → قم بتغيير البروتوكول أو استخدم base64 |
| 5 | تحقق مما إذا كان الرابط يشير لحاوية خاصة، أو توقيع منتهي الصلاحية، أو إعادة توجيه | إذا كان كذلك → استخدم رابطاً عاماً أو استخدم base64 |
| 6 | جرب إعادة الإنتاج في لوحة تحكم APIYI (apiyi.com) باستخدام نفس النموذج + صورة عامة معروفة | نجحت → المشكلة في العميل؛ فشلت → أبلغنا بذلك |
بمجرد إتمام هذه الخطوات الست، لن يتمكن أي خطأ من أخطاء Nano Banana Pro من إخفاء سببه الجذري.
الأسئلة الشائعة حول خطأ "Unsupported file URI type" في Nano Banana Pro
س1: لماذا تظهر سلسلة {{ $json.imageUrls }} الحرفية مباشرة في رسالة الخطأ؟
لأن Gemini API عند تلقي الطلب، يقوم بكتابة قيمة حقل fileUri كما هي في رسالة الخطأ — وهذا سلوك قياسي من Google يهدف لمساعدتك في تحديد "ما الذي قمت بإرساله بالضبط". إذا كانت السلسلة التي تراها تشبه {{ ... }}، فهذا يعني بنسبة 100% أن متغير قالب سير العمل (Low-code) لم يتم تحويله (Rendered)؛ أما إذا ظهرت كـ undefined أو null، فهذا يعني وجود خطأ إملائي في اسم الحقل. ننصحك أولاً بتجربة استدعاء ناجح باستخدام رابط عام ثابت عبر APIYI (apiyi.com)، ثم مطابقة هيكل الطلب في تطبيقك مع هذا الطلب الناجح.
س2: ما هي أنواع الروابط (URLs) التي يدعمها Nano Banana Pro / gemini-3-pro-image-preview؟
وفقاً لوثائق Google الرسمية، يقبل fileUri أربعة أنواع من الـ URI: مسارات File API (https://generativelanguage.googleapis.com/files/...)، روابط YouTube (تُستخدم أساساً لفهم الفيديو)، روابط HTTPS العامة (بما في ذلك روابط S3 Pre-signed و Azure SAS)، و مسارات GCS التي تبدأ بـ gs://. تدعم نماذج Gemini 2.5 وما بعدها روابط HTTPS العامة بشكل أصلي، لذا فإن gemini-3-pro-image-preview لا يتطلب رفع الصورة إلى File API قبل الاستدعاء.
س3: ماذا أفعل إذا لم يتم تحويل {{ $json.imageUrls }} في n8n؟
هناك 3 إصلاحات شائعة: أولاً، يجب تفعيل وضع التعبير (Expression mode) في جسم JSON الخاص بعقدة HTTP Request (يجب أن يسبق JSON علامة = أو أن يكون زر fx مضاءً على اليسار)؛ ثانياً، يجب أن يتطابق مسار الحقل مع المخرجات الفعلية للعقدة السابقة، يمكنك التحقق من اسم الحقل في لوحة Output بعد "Execute Node" في n8n؛ ثالثاً، إذا كنت تستخدم عقدة فرعية (sub-node)، فإن التعبير يأخذ العنصر الأول فقط افتراضياً، لذا استخدم العقدة الرئيسية أو استخدم عقدة Item Lists لتوسيع البيانات أولاً.
س4: كيف أصلح الخطأ الذي يظهر فيه undefined؟
هذا يعني أنك تحاول الوصول إلى حقل غير موجود في الكود. أسرع إصلاح هو إضافة تأكيد (Assertion) قبل استدعاء Gemini: assert image_url is not None and isinstance(image_url, str)؛ ثم تحقق من اسم الحقل في القيمة المرجعة من الواجهة البرمجية (API) السابقة، حيث تشمل الأخطاء الإملائية الشائعة imageUrls مقابل imageUrl، أو image_url مقابل imageUrl، أو url مقابل uri. في بيئة الإنتاج، نوصي بحظر أي سلاسل نصية ليست https أو gs من الوصول للطلب، كما في كود Python المذكور في "الإصلاح 2" في هذا المقال.
س5: هل يمكنني وضع عدة صور مباشرة في fileUri؟
لا. يقبل fileUri سلسلة نصية واحدة فقط. إذا كنت ترغب في إرسال صور متعددة، الطريقة الصحيحة هي إنشاء عنصر { "fileData": { "fileUri": "...", "mimeType": "..." } } لكل صورة، ثم وضعها جميعاً في مصفوفة parts واحدة. بهذه الطريقة فقط يمكن لـ Gemini التعرف بشكل صحيح على العلاقات الدلالية بين الصور المتعددة.
س6: ماذا لو كانت الحاوية (Bucket) خاصة أو كان رابط التوقيع المؤقت لا يمكن كشفه؟
الحل الأكثر أماناً هو استخدام inlineData مع ترميز base64: قم بقراءة الصورة من طرفك، وقم بترميزها بصيغة base64 وضعها مباشرة في جسم الطلب. بهذه الطريقة لا يحتاج خادم Gemini إلى سحب الموارد الخارجية، مما يجنبك جميع مشاكل "فشل المصادقة / انتهاء صلاحية التوقيع / عدم تطابق MIME". الضريبة هي أن حجم الطلب سيزداد، لذا فهو مناسب لسيناريوهات الصورة الواحدة ذات الحجم الصغير. إذا كنت تقوم بعمليات توليد صور عالية التزامن، فلا يزال يُنصح برفع الصور إلى CDN عام أولاً، ثم استدعاء gemini-3-pro-image-preview عبر APIYI (apiyi.com)، فهذا يجنبك تضخم حجم base64 ويسهل على المنصة إجراء التخزين المؤقت وإعادة المحاولة.

ملخص: أفضل الممارسات بعد إصلاح خطأ Nano Banana Pro
بالعودة إلى خطأ Nano Banana Pro المحدد الذي واجهه العميل: Unsupported file URI type: {{ $json.imageUrls }}، يمكننا الآن التأكيد بكل ثقة أن هذه ليست مشكلة في Gemini، بل هي مشكلة في n8n / سير عمل البرمجة منخفضة الكود (Low-code) حيث لم يتم استبدال متغير القالب برابط URL حقيقي، مما أدى إلى إرسال نص {{ ... }} الحرفي كما هو إلى واجهة برمجة تطبيقات Gemini. تم توضيح طريقة الإصلاح في "الإصلاح 1" من هذا المقال؛ فبمجرد تفعيل وضع التعبير (Expression mode) في جسم JSON الخاص بعقدة طلب HTTP (HTTP Request)، والتأكد من أن العقدة السابقة قد أخرجت حقل imageUrls بالفعل، سيختفي هذا الخطأ فوراً.
على مستوى أوسع، يكشف خطأ Unsupported file URI type عن مشكلة شائعة جداً: تفتقر العديد من الفرق إلى طبقة "التحقق من المدخلات" عند استدعاء واجهات برمجة تطبيقات الصور، مما يجعل من المستحيل معرفة ما إذا كان الخطأ ناتجاً عن النموذج، أو الشبكة، أو المعلمات (Parameters) عندما يرفض Gemini الطلب. قائمة الفحص لمدة 5 دقائق، وكود التحقق بلغة Python، وطريقة كتابة تعبيرات n8n المقدمة في هذا المقال، يمكن اعتمادها مباشرة كإجراء قياسي لفريقك.
🎯 نصيحة نهائية: إذا كنت تقوم ببناء سير عمل "تحويل صورة إلى صورة" يعتمد على gemini-3-pro-image-preview للعملاء، فإننا نوصي بتوحيد جميع استدعاءات Nano Banana Pro عبر منصة وكيل API مثل APIYI (apiyi.com). فهذا لا يتيح لك إعادة إنتاج الأخطاء ومقارنة الطلبات الفاشلة (diff) في لوحة التحكم فحسب، بل يمنحك أيضاً إمكانية التبديل السلس إلى نماذج من نفس الفئة مثل Nano Banana 2 أو Seedream في حال حدوث أعطال في Google نفسها، مما يضمن تحديد أخطاء المعلمات مثل Unsupported file URI type وإصلاحها في أسرع وقت ممكن.
بقلم: فريق APIYI | نهتم بتطبيق نماذج اللغة الكبيرة وهندسة الاستقرار في الذكاء الاصطناعي. للمزيد من المقالات العملية حول استكشاف أخطاء Gemini وواجهات برمجة تطبيقات الصور، يرجى زيارة APIYI على apiyi.com.
