إنشاء برنامج محادثات آلي يعمل على الجهاز وبلا اتصال بالإنترنت باستخدام Prompt API

تاريخ النشر: 13 يناير 2025

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

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

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

الوصول المشترَك إلى النموذج

تعمل واجهة برمجة التطبيقات Prompt API بشكل مشابه لـ WebLLM. ومع ذلك، لا يتوفّر خيار تحديد النموذج في هذه المرحلة (عليك استخدام النموذج اللغوي الكبير المضمّن في المتصفّح). عند تفعيل الذكاء الاصطناعي المضمَّن، ينزّل Chrome نموذجًا أساسيًا في المتصفّح. ويمكن بعد ذلك مشاركة هذا النموذج على مستوى مصادر متعدّدة وتشغيله بأعلى أداء ممكن. هناك مشكلة على GitHub طلب فيها أحد المطوّرين إضافة ميزة لاختيار النموذج.

إعداد المحادثة

يمكنك بدء محادثة الرسائل بالطريقة نفسها تمامًا، ولكن توفّر واجهة برمجة التطبيقات Prompt أيضًا صيغة مختصرة لتحديد طلب النظام. ابدأ جلسة نموذج اللغة باستخدام طريقة create() على واجهة LanguageModel:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

الإجابة عن سؤالك الأول

بدلاً من استخدام عنصر إعدادات لضبط البث، توفّر واجهة برمجة التطبيقات Prompt طريقتَين منفصلتَين:

  • تعرض الدالة prompt() السلسلة الكاملة
  • تعرض promptStreaming() تكرارًا غير متزامن. على عكس WebLLM، تستجيب Prompt API بسلسلة الرد الكاملة، لذا ليس عليك دمج النتائج بنفسك.

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

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

عرض توضيحي

ملخّص

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