تاريخ النشر: 11 تشرين الثاني (نوفمبر) 2024
تخيل أنه يمكنك أن توفر للمستخدمين القدرة على استخلاص المقالات المطولة أو المستندات المعقدة أو حتى محادثات الدردشة النابضة بالحياة في ملخصات موجزة ومستنيرة.
يمكن استخدام Summarizer API لإنشاء أنواع مختلفة من الملخصات بأشكال ومقاييس متنوعة، مثل الجمل والفقرات وقوائم النقاط المميّزة وغيرها. نرى أنّ واجهة برمجة التطبيقات هذه مفيدة في الحالات التالية:
- تلخيص النقاط الرئيسية في مقالة أو محادثة
- اقتراح عناوين رئيسية وعناوين فرعية للمقالات
- إنشاء ملخّص موجز ومفيد لنص طويل
- إنشاء جملة محفّزة لكتاب استنادًا إلى مراجعة لكتاب
مدى التوفّر
- يمكنك الانضمام إلى مرحلة التجربة والتقييم لواجهة برمجة التطبيقات Summarizer API، التي تعمل من Chrome 131
إلى Chrome 136، لاختبار واجهة برمجة التطبيقات مع مستخدمين حقيقيين في مرحلة الإنتاج. فعِّل الميزة لجميع المستخدمين على Chrome في الإصدارات التجريبية من المصدر. تعرَّف على كيفية
بدء استخدام مراحل التجربة والتقييم.
- على الرغم من أنّه قد تكون هناك حدود لاستخدام هذه الميزات، يمكنك دمجها في الاختبار المباشر وجمع ملاحظات المستخدمين. والهدف من ذلك هو الاستفادة من هذه الملاحظات في الإصدارات المستقبلية لواجهة برمجة التطبيقات هذه، بينما نعمل على إتاحة هذه الميزة على نطاق أوسع.
- يمكنك متابعة عملية التنفيذ في حالة Chrome.
- يُعدّ اقتراح Summarizer API جزءًا من مجموعة من واجهات برمجة التطبيقات لكتابة النصوص، وهو مفتوح أمام المناقشة.
- انضم إلى برنامج المعاينة المبكّرة للاطّلاع مبكرًا على واجهات برمجة التطبيقات الجديدة المدمجة للذكاء الاصطناعي والمشاركة في المناقشات على قائمة البريد الإلكتروني.
القيود أثناء مرحلة التجربة والتقييم
خلال مرحلة التجربة والتقييم، لا تتيح Summarizer API تلخيص سوى textsباللغة الإنجليزية، لأنّه لم يتم اختبار جودة النموذج بدقة إلا على محتوى باللغة الإنجليزية. وننوي رفع هذا القيد بعد اختبار مزيد من اللغات للتأكّد من جودتها وأمانها، وبعد أن تصبح واجهة برمجة التطبيقات متاحة على نطاق واسع.
استخدام Summarizer API
أولاً، عليك تنفيذ ميزة رصد المحتوى لمعرفة ما إذا كان المتصفّح متوافقًا مع واجهة برمجة التطبيقات Summarizer API.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
تنزيل النموذج
تستخدِم واجهة برمجة التطبيقات Summarizer API نموذجًا قويًا للذكاء الاصطناعي تم تدريبه لإنشاء عناوين ومقتطفات عالية الجودة. على الرغم من أنّ واجهة برمجة التطبيقات مدمجة في Chrome، يتم تنزيل النموذج بشكل منفصل في المرة الأولى التي يستخدم فيها موقع إلكتروني واجهة برمجة التطبيقات.
لتحديد ما إذا كان النموذج جاهزًا للاستخدام، يمكنك استدعاء الدالة
ai.summarizer.capabilities()
غير المتزامنة. ويعرض الإجراء كائنًا
AISummarizerCapabilities
يحتوي على حقل available
يمكنه استخدام ثلاث
قيمات محتملة:
no
: يتيح المتصفّح الحالي استخدام واجهة برمجة التطبيقات Summarizer API، ولكن لا يمكن استخدامها في الوقت الحالي. وقد يرجع ذلك لعدد من الأسباب، مثل عدم توفّر مساحة مناسبة على القرص لتنزيل النموذج.readily
: يتوافق المتصفّح الحالي مع واجهة برمجة تطبيقات Summarizer API، ويمكن استخدامه على الفور.after-download
: يتيح المتصفّح الحالي استخدام واجهة برمجة التطبيقات Summarizer API، ولكن عليه أولاً تنزيل النموذج.
لبدء تنزيل النموذج وإنشاء التلخيص، استخدِم الدالة غير المتزامنة
ai.summarizer.create()
. إذا كان الردّ على capabilities()
هو
after-download
، من أفضل الممارسات الاستماع إلى مستوى تقدّم عملية التنزيل. بهذه الطريقة،
يمكنك إبلاغ المستخدم في حال استغراق عملية التنزيل بعض الوقت.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
وظائف واجهة برمجة التطبيقات
تتيح لك الدالة create()
ضبط عنصر تلخيصي جديد لتلبية
احتياجاتك. تأخذ هذه الدالة كائن options
اختياريًا بالمَعلمات التالية:
sharedContext
: سياق مشترَك إضافي يمكن أن يساعد أداة التلخيصtype
: نوع التلخيص، مع القيم المسموح بهاkey-points
(الخيار التلقائي) وtl;dr
وteaser
وheadline
.format
: تمثّل هذه السمة تنسيق التلخيص، مع القيم المسموح بهاmarkdown
(تلقائية) وplain-text
.-
length
: طول الملخص، مع القيم المسموح بهاshort
medium
(التلقائية) وlong
. تختلف معاني هذه الأطوال استنادًا إلىtype
المطلوبة. على سبيل المثال، في عملية التنفيذ في Chrome، يتألّف الملخّص المختصر عن النقاط الرئيسية من ثلاث نقاط تعداد، ويحتوي الملخّص المختصر على سوى جملة واحدة. أمّا الملخّص الطويل عن النقاط الرئيسية، فيحتوي على سبع نقاط تعداد، ويحتوي الملخّص الطويل على فقرة.
يوضّح المثال التالي كيفية إعداد أداة التلخيص.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
تشغيل التلخيص
هناك طريقتان لتشغيل أداة التلخيص: البث المباشر وغير المباشر.
تلخيص المحتوى غير القابل للبث
في التلخيص غير المباشر، يعالج النموذج المُدخل ككل، ثم ينتج المُخرجات.
للحصول على ملخّص غير معروض أثناء البث، يمكنك استدعاء دالة summarize()
غير المتزامنة الخاصة بميزة التلخيص. الوسيطة الأولى للدالة هي النص الذي تريد
تلخصه. الوسيطة الاختيارية الثانية هي كائن يحتوي على حقل context
.
يتيح لك هذا الحقل إضافة تفاصيل أساسية قد تحسّن عملية التلخيص.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
تلخيص البث
تقدّم ميزة "تلخيص البث" النتائج في الوقت الفعلي. يتم تحديث الإخراج باستمرار عند إضافة الإدخال وتعديله.
للحصول على ملخّص للبث، يمكنك استدعاء دالة summarizeStreaming()
المخصّصة للملخّص. بعد ذلك، كرِّر المقاطع المتاحة من النص في البث.
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
يعرض summarizeStreaming()
ReadableStream
، حيث تتراكم أقسام الردّ
تدرّجيًا على بعضها. وهذا يعني أنّ كلّ استجابة تحتوي على
الملخّص الكامل الذي تم إنشاؤه حتى تلك النقطة، وليس فقط الجزء التالي، وهو
ليس السلوك المقصود.
ننوي التوافق مع واجهات برمجة التطبيقات الأخرى للبث على المنصة، حيث تكون الشرائح أجزاء متتابعة من بث طويل واحد. في الوقت الحالي، لتحقيق السلوك المقصود، يمكنك تنفيذ ما يلي:
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
عرض توضيحي
يمكنك تجربة Summarizer API في Summarizer API Playground.
جهود التوحيد
نحن نعمل على توحيد Summarizer API لضمان توافقها مع جميع المتصفّحات.
تلقّى اقتراحنا لواجهة برمجة التطبيقات دعمًا من المجتمع، وتم نقله إلى مجموعة منتدى W3C Web Incubator لإجراء مزيد من المناقشة. طلب فريق Chrome ملاحظات من مجموعة الهندسة المعمارية التقنية في W3C، وسأل Mozilla وWebKit عن مواقفهما بشأن المعايير.
المشاركة وتقديم الملاحظات
يمكنك بدء اختبار Summarizer API الآن من خلال الانضمام إلى الفترة التجريبية للإصدار الأصلي و مشاركة ملاحظاتك. يمكن أن تؤثّر مساهمتك بشكل مباشر في طريقة إنشاء وتنفيذ الإصدارات المستقبلية من واجهة برمجة التطبيقات هذه وجميع واجهات برمجة التطبيقات المدمَجة للذكاء الاصطناعي.
- لإرسال ملاحظات حول عملية تنفيذ Chrome، يُرجى إرسال تقرير خطأ أو طلب ميزة.
- مناقشة تصميم Summarizer API على GitHub من خلال التعليق على مشكلة حالية أو فتح مشكلة جديدة
- يمكنك المشاركة في جهود وضع المعايير من خلال الانضمام إلى Web Incubator Community Group.