تاريخ النشر: 20 مايو 2025
شرح | الويب | الإضافات | حالة Chrome | النيّة بالشراء |
---|---|---|---|---|
Github | العرض | النية في إجراء تجربة |
تساعدك Rewriter API في مراجعة النص وإعادة هيكلته. تشكّل واجهة برمجة التطبيقات هذه وWriter API جزءًا من اقتراح واجهات برمجة التطبيقات الخاصة بميزة "مساعد الكتابة".
يمكن أن تساعدك واجهات برمجة التطبيقات هذه في تحسين المحتوى الذي ينشئه المستخدمون.
حالات الاستخدام
تحسين النص الحالي من خلال جعله أطول أو أقصر أو تغيير نبرته على سبيل المثال، يمكنك إجراء ما يلي:
- أعِد كتابة رسالة إلكترونية قصيرة لتكون أكثر تهذيبًا ورسمية.
- اقتراح تعديلات على مراجعات العملاء لمساعدة العملاء الآخرين في فهم الملاحظات أو إزالة المحتوى السام
- تنسيق المحتوى بما يتوافق مع توقّعات شرائح جمهور معيّنة
هل حالة الاستخدام غير متوفّرة؟ يمكنك الانضمام إلى برنامج الاستخدام المبكر لمشاركة ملاحظاتك.
البدء
الانضمام إلى تجربة Rewriter API، التي ستُجرى في الإصدارات من 137 إلى 142 من Chrome
مراجعة متطلبات الأجهزة
في ما يلي المتطلبات التي يجب استيفاؤها من قِبل المطوّرين والمستخدمين الذين يشغّلون الميزات باستخدام واجهات برمجة التطبيقات هذه في Chrome. قد تتطلّب المتصفّحات الأخرى متطلبات تشغيل مختلفة.
تعمل واجهتا برمجة التطبيقات Language Detector وTranslator في متصفّح Chrome على أجهزة الكمبيوتر المكتبي. ولا تعمل واجهات برمجة التطبيقات هذه على الأجهزة الجوّالة. تعمل واجهات برمجة التطبيقات Prompt API وSummarizer API وWriter API وRewriter API في Chrome عند استيفاء الشروط التالية:
- نظام التشغيل: Windows 10 أو 11 أو macOS 13 (Ventura والإصدارات الأحدث) أو Linux لا تتوافق واجهات برمجة التطبيقات التي تستخدم Gemini Nano مع متصفّح Chrome على أجهزة Android وiOS وChromeOS حتى الآن.
- مساحة التخزين: يجب أن تتوفّر مساحة تخزين لا تقلّ عن 22 غيغابايت على وحدة التخزين التي تحتوي على ملفك الشخصي على Chrome.
- وحدة معالجة الرسومات (GPU): يجب أن تكون ذاكرة الوصول العشوائي للفيديو (VRAM) أكبر من 4 غيغابايت.
- الشبكة: بيانات غير محدودة أو اتصال غير محدود.
قد يختلف حجم Gemini Nano قليلاً. للعثور على الحجم الحالي، انتقِل إلى
chrome://on-device-internals
ثم إلى حالة النموذج.
افتح مسار الملف المُدرَج لتحديد حجم النموذج.
الاشتراك في التجربة الأصلية
تتوفّر واجهة Rewriter API في مرحلة تجربة وتقييم مشتركة مع واجهة Writer API. لبدء استخدام واجهات برمجة التطبيقات هذه، اتّبِع الخطوات التالية:
- الموافقة على سياسة الاستخدام المحظور للذكاء الاصطناعي التوليدي من Google
- انتقِل إلى مرحلة التجربة والتقييم في Rewriter API.
- انقر على تسجيل واملأ النموذج. في حقل "أصل الويب"، أدخِل الأصل أو معرّف الإضافة،
chrome-extension://YOUR_EXTENSION_ID
. - لإرسال الطلب، انقر على تسجيل.
- انسخ الرمز المميّز المقدَّم وأضِفه إلى كل صفحة ويب مشارِكة على مصدرك أو أدرِجه في بيان Extension.
- بدء استخدام Rewriter API
مزيد من المعلومات حول كيفية بدء استخدام التجارب الأصلية
إضافة دعم إلى localhost
للوصول إلى واجهتَي برمجة التطبيقات Writer وRewriter على localhost أثناء مرحلة التجربة والتقييم، عليك تحديث Chrome إلى أحدث إصدار. ثم اتبع الخطوات التالية:
- الانتقال إلى
chrome://flags/#rewriter-api-for-gemini-nano
- اختَر مفعّل.
- انقر على إعادة التشغيل أو أعِد تشغيل Chrome.
استخدام Rewriter API
أولاً، شغِّل عملية رصد الميزات لمعرفة ما إذا كان المتصفّح يتيح استخدام واجهات برمجة التطبيقات هذه.
if ('Rewriter' in self) {
// The Rewriter API is supported.
}
تم دمج واجهة برمجة التطبيقات Rewriter وجميع واجهات برمجة تطبيقات الذكاء الاصطناعي الأخرى المضمّنة في المتصفّح. يتم تنزيل Gemini Nano بشكل منفصل في المرة الأولى التي يستخدم فيها أي موقع إلكتروني واجهة برمجة تطبيقات مدمجة للذكاء الاصطناعي. في الواقع، إذا سبق للمستخدم التفاعل مع واجهة برمجة تطبيقات مدمجة، يكون قد نزّل النموذج إلى المتصفّح.
لتحديد ما إذا كان النموذج جاهزًا للاستخدام، استدعِ الدالة غير المتزامنة Rewriter.availability()
. تعرض هذه السمة سلسلة يمكن أن تتضمّن أربع قيم محتملة:
unavailable
: يتوافق المتصفّح مع Rewriter API، ولكن لا يمكن استخدامه في الوقت الحالي. قد يرجع ذلك لعدة أسباب، مثل عدم توفّر مساحة كافية على القرص لتنزيل النموذج.-
available
: يعني ذلك أنّ المتصفّح يتيح استخدام Rewriter API ويمكن استخدامه على الفور. downloadable
: يتوافق المتصفّح مع Rewriter API، ولكن يجب تنزيل النموذج أولاً.-
downloading
: يعني ذلك أنّ المتصفّح يتيح استخدام Rewriter API، ويتم حاليًا تنزيل النموذج.
لتفعيل تنزيل النموذج وبدء عملية إعادة الكتابة، استدعِ الدالة Rewriter.create()
. إذا كان الردّ على availability()
هو downloadable
، استمع إلى مستوى التقدّم في عملية التنزيل وأبلِغ المستخدم بذلك، لأنّ عملية التنزيل قد تستغرق بعض الوقت.
const rewriter = await Rewriter.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
وظائف واجهة برمجة التطبيقات
تتيح لك الدالة create()
ضبط عنصر إعادة كتابة جديد. تتلقّى هذه الدالة كائن options
اختياريًا يتضمّن المَعلمات التالية:
tone
: يمكن أن يشير أسلوب الكتابة إلى نمط المحتوى أو شخصيته أو موقفه. يمكن ضبط القيمة علىmore-formal
أوas-is
(القيمة التلقائية) أوmore-casual
.format
: تنسيق الإخراج، مع القيم المسموح بهاas-is
(تلقائي) وmarkdown
وplain-text
-
length
: طول الناتج، مع القيم المسموح بهاshorter
وas-is
(القيمة التلقائية) وlonger
sharedContext
: عند إعادة كتابة عدة أجزاء من المحتوى، يمكن أن يساعد السياق المشترك النموذج في إنشاء محتوى يتوافق بشكل أفضل مع توقعاتك.
يوضّح المثال التالي كيفية بدء عنصر rewriter
:
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'more-casual',
format: 'plain-text',
length: 'shorter',
};
const available = await Rewriter.availability();
let rewriter;
if (available === 'unavailable') {
// The Rewriter API isn't usable.
return;
}
if (available === 'available') {
// The Rewriter API can be used immediately .
rewriter = await Rewriter.create(options);
} else {
// The Rewriter can be used after the model is downloaded.
rewriter = await Rewriter.create(options);
rewriter.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
}
بدء إعادة الكتابة
هناك طريقتان لإخراج المحتوى من النموذج: غير متواصل ومتواصل.
الناتج غير المتعلّق بالبث
في عملية إعادة الكتابة غير المتدفقة، يعالج النموذج الإدخال ككل ثم ينتج الإخراج.
للحصول على نتيجة غير متدفقة، استدعِ الدالة غير المتزامنة rewrite()
. يجب تضمين النص الأولي الذي تريد إعادة كتابته. يمكنك إضافة context
اختيارية لتزويد النموذج بمعلومات أساسية، ما قد يساعده في تلبية توقعاتك بشأن الناتج بشكل أفضل.
// Non-streaming
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const result = await rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible."
});
مخرجات إعادة كتابة البث
توفّر الإحصاءات المتدفّقة النتائج في الوقت الفعلي. يتم تعديل الناتج باستمرار عند إضافة المدخلات وتعديلها.
للحصول على أداة إعادة كتابة البث، استدعِ الدالة rewriteStreaming()
وكرِّر
العملية على المقاطع المتاحة من النص في البث. يمكنك إضافة
context
اختيارية لتقديم معلومات أساسية عن النموذج، ما قد يساعد النموذج في تلبية توقعاتك بشأن الناتج بشكل أفضل.
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const stream = rewriter.rewriteStreaming(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
});
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
مشاركة سياق لمهام متعددة
يمكنك استخدام rewriter
لإنشاء عدة أجزاء من المحتوى. في هذه الحالة، من المفيد إضافة sharedContext
. على سبيل المثال، قد تريد مساعدة المراجعين في تقديم ملاحظات أفضل في التعليقات.
// Shared context and per writing task context
const rewriter = await Rewriter.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = rewriter.rewriteStreaming(
"Love all this work on generative AI at Google! So much to learn and so many new things I can do!",
{
context: "The request comes from someone working at a startup providing an e-commerce CMS solution.",
tone: "more-casual",
}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
إعادة استخدام أداة إعادة الكتابة
يمكنك استخدام أداة إعادة الكتابة نفسها لتعديل عدة مقاطع من المحتوى. وقد يكون ذلك مفيدًا بشكل خاص عند إضافة أداة إعادة الكتابة إلى أداة ملاحظات أو تعليقات، وذلك لمساعدة الكتّاب في تقديم ملاحظات مفيدة ومهمة.
// Reusing a rewriter
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const rewrittenReviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
})
),
);
إيقاف أداة إعادة الكتابة
لإنهاء عملية إعادة الكتابة، ألغِ وحدة التحكّم وأزِل rewriter
.
// Stop a rewriter
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const rewriter = await Rewriter.create({ signal: controller.signal });
await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal });
// Destroy a rewriter
rewriter.destroy();
عرض توضيحي
التفاعل مع الملاحظات ومشاركتها
تخضع واجهتا برمجة التطبيقات Writer وRewriter حاليًا لمناقشات نشطة، وقد تتغيران في المستقبل. إذا جرّبت واجهة برمجة التطبيقات هذه وكانت لديك ملاحظات، يسعدنا تلقّيها.
- قراءة الشرح، طرح الأسئلة والمشاركة في المناقشة
- راجِع عملية التنفيذ في Chrome على حالة Chrome.
- الانضمام إلى برنامج الاستخدام المبكر للاطّلاع على واجهات برمجة التطبيقات الجديدة قبل إطلاقها والاستفادة من قائمة المراسلات
- إذا كانت لديك ملاحظات حول طريقة تنفيذ Chrome لهذه الميزة، يُرجى إرسال تقرير عن خلل Chromium.
يمكنك استكشاف جميع واجهات برمجة التطبيقات المدمجة المستندة إلى الذكاء الاصطناعي التي تستخدم نماذج، بما في ذلك Gemini Nano والنماذج المتخصصة الأخرى، في المتصفح.