ما هو Prompt API؟

Prompt API هو اقتراح منصة ويب تجريبي من مجموعة W3C Web Machine Learning Community Group يكشف نموذج لغة كبير يوفره المتصفح إلى JavaScript من خلال واجهة window.LanguageModel. تنشئ الصفحات جلسة باستخدام LanguageModel.create()، وتقوم بتكوينها بشكل اختياري باستخدام نص تعليمات النظام، ثم تستدعي prompt() أو promptStreaming() للحصول على استجابة.

بخلاف استدعاء API نموذج لغة مستضاف، يعمل النموذج على جهاز المستخدم. هذا يعني أن المدخلات لا تترك الجهاز أبداً، وتعمل الصفحة بدون اتصال بالإنترنت بمجرد تخزين النموذج مؤقتاً، وليس هناك تكاليف لكل طلب. في Chrome، النموذج الأساسي هو Gemini Nano، لكن API مصمم بقصد ليكون غير متعلق بالنموذج حتى تتمكن المتصفحات الأخرى من إدراج تطبيقات مختلفة.

الجلسة حالتها ثابتة: تتتبع سجل المحادثة ضمن نافذة السياق المقاسة بالرموز. عندما تمتلئ النافذة، يتم حذف أقدم الرسائل غير المتعلقة بالنظام تلقائياً (يتم تشغيل حدث contextoverflow)، ويمكنك فحص session.contextUsage و session.contextWindow في أي وقت لترى كم من المساحة المتبقية.

وصف الأداة

ملعب هذا هو سطح دردشة تفاعلي متصل بـ window.LanguageModel. يتيح لك تعيين نص تعليمات النظام، وإرسال الرسائل، ومراقبة النموذج وهو يرسل الرموز في الوقت الفعلي. يعرض شريط التقدم توفر النموذج وتقدم التنزيل، وشريط استخدام الرموز يبلغ عن مقدار نافذة السياق للجلسة التي يتم استهلاكها.

يتم إنشاء الجلسة بكسل على الإرسال الأول وإعادة استخدامها عبر الرسائل حتى تغير نص تعليمات النظام، وفي هذه الحالة يتم حذفها وإنشاء جلسة جديدة بالتعليمات الجديدة.

الميزات

  • استجابات البث — تستخدم promptStreaming() بحيث تظهر الرموز في الدردشة عند إنتاجها.
  • محرر نص تعليمات النظام — حدد دوراً أو سلوكاً دائماً يشرط كل استجابة.
  • زر الإيقاف — أوقف موجه قيد الطيران باستخدام AbortController دون تفكيك الجلسة.
  • استخدام السياق المباشر — يصور contextUsage مقابل contextWindow حتى تتمكن من رؤية متى تكون المحادثة على وشك الامتلاء.
  • توفر النموذج وتقدم التنزيل — يعرض حالة availability() وأحداث downloadprogress أثناء جلب النموذج.

حالات الاستخدام

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

المتطلبات

  • متصفح ينفذ Prompt API. Chrome 138+ يعرضه بشكل تجريبي؛ في الإصدارات الأقدم قد تحتاج إلى تفعيله عبر chrome://flags/#prompt-api-for-gemini-nano وتحميل النموذج على الجهاز.
  • سياق آمن (HTTPS أو localhost).
  • جهاز يلبي متطلبات الأجهزة للنموذج (مساحة قرص كافية، ذاكرة وصول عشوائي، و GPU/CPU مدعوم). على الأجهزة غير المدعومة، availability() يرجع unavailable.
  • عرض النطاق الترددي الأولي لتنزيل النموذج. تعيد الجلسات اللاحقة استخدام النموذج المخزن مؤقتاً.

كيف يعمل

  1. عند التحميل، تتحقق الأداة من typeof window.LanguageModel. إذا كانت غائبة، يحل تحذير محل إدخال الدردشة.
  2. LanguageModel.availability() يبلغ عن أحد available أو downloadable أو downloading أو unavailable. يتم عرض النتيجة في شريط التقدم.
  3. في المرة الأولى التي تضغط فيها على إرسال، تستدعي الأداة LanguageModel.create() باستخدام monitor يرسل أحداث downloadprogress إلى واجهة المستخدم. إذا تم تعيين نص تعليمات النظام، يتم تمريره عبر initialPrompts: [{ role: "system", content: ... }].
  4. يتم إرسال رسالة المستخدم من خلال session.promptStreaming(text, { signal }). يتم استهلاك ReadableStream<string> المرجع قطعة تلو الأخرى وإضافته إلى رسالة المساعد.
  5. بعد كل استجابة، يتم قراءة session.contextUsage و session.contextWindow وعكسهما في شريط استخدام الرموز.
  6. الضغط على إيقاف يستدعي controller.abort()، الذي يرفض البث قيد الطيران برسالة AbortError مع الحفاظ على الجلسة حية للموجه التالي.
  7. تحرير نص تعليمات النظام يبطل الجلسة المخزنة مؤقتاً: يتم destroy() الجلسة الموجودة والإرسال التالي ينشئ جلسة جديدة بالتعليمات المحدثة.

شرح الخيارات

  • نص تعليمات النظام — تعليمات حرة الشكل يتم تمريرها كأول رسالة بدور system. يشرط جميع الأدوار اللاحقة. تركها فارغة ينشئ جلسة بدون رسالة نظام.
  • إرسال / إيقافإرسال يرسل الإدخال كرسالة user. إيقاف يوقف استجابة البث دون حذف الرسائل السابقة.
  • استخدام الرموزused / total رموز للجلسة الحالية. عندما يقترب used من total، سيتم حذف أزواج المستخدم/المساعد الأقدم على الموجه التالي.
  • حالة النموذج — قراءة مدمجة لـ availability() و downloadprogress. أثناء تنزيل النموذج، يتحرك الشريط ويعرض نسبة مئوية.

القيود

  • Prompt API تجريبي. قد تتغير أسماء الطرق والخيارات (مثل inputUsage مقابل contextUsage) وعلم الأحداث بين إصدارات Chrome.
  • جودة الإخراج والحقائق واتباع التعليمات تعتمد بالكامل على النموذج الذي يوفره المتصفح وليست مضمونة.
  • نافذة السياق صغيرة مقارنة بـ LLMs المستضافة. ستؤدي المحادثات الطويلة إلى امتلاء وحذف الأدوار الأولى بصمت.
  • API غير معرض لعمال الويب وقد يتطلب تفويض Permissions Policy (language-model) على iframes عبر الأصول.
  • لا تعرض هذه الأداة بقصد temperature أو topK أو استخدام الأدوات أو المدخلات متعددة الوسائط أو الإخراج المنظم (responseConstraint) أو استنساخ الجلسة. إنها جزء من المواصفات لكن تم إبقاؤها خارج الملعب للبقاء مركزة على الدردشة العادية.

الأسئلة الشائعة

لماذا يقول أن API غير مدعوم؟ window.LanguageModel غير محدد في متصفحك. جرب أحدث Chrome على سطح المكتب وإذا لزم الأمر، فعّل علم Prompt API وانتظر تنزيل النموذج على الجهاز عبر chrome://components.

لماذا تكون الاستجابة الأولى بطيئة؟ قد يؤدي الاستدعاء الأول إلى تنزيل نموذج (راقب شريط التقدم) وخطوة إنشاء جلسة. تعيد الموجهات اللاحقة استخدام نفس الجلسة وتبدأ البث تقريباً على الفور.

هل يترك موجهي الجهاز؟ لا. يعمل النموذج محلياً. لا يتم إرسال نصك إلى أي خادم بواسطة هذه الأداة.

ماذا يحدث عندما يمتلئ السياق؟ تطلق الجلسة حدث contextoverflow وتحذف أقدم الأدوار غير المتعلقة بالنظام لإفساح المجال. يتم الحفاظ على نص تعليمات النظام.

لماذا أدى تغيير نص تعليمات النظام إلى مسح نمط الاستجابة في منتصف المحادثة؟ يؤدي تحرير نص تعليمات النظام إلى حذف الجلسة الحالية وإنشاء جلسة جديدة على الإرسال التالي. الجلسة الجديدة ليس لديها ذاكرة للأدوار السابقة.