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

تاريخ النشر: 13 كانون الثاني (يناير) 2024

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

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

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

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

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

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

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

const session = await self.ai.languageModel.create({
  systemPrompt: `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 API طريقتَين منفصلتَين:

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

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

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

عرض توضيحي

ملخّص

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