Published: October 22, 2025
| Explainer | الويب | الإضافات | حالة Chrome | النيّة بالشراء |
|---|---|---|---|---|
| GitHub | العرض | النيّة بإجراء تجربة |
تساعدك Rewriter API في مراجعة النص وإعادة هيكلته. تشكّل هذه الواجهة و Writer API جزءًا من اقتراح Writing Assistance APIs.
يمكن أن تساعدك واجهات برمجة التطبيقات هذه في تحسين المحتوى الذي ينشئه المستخدمون.
حالات الاستخدام
يمكنك تحسين النص الحالي من خلال جعله أطول أو أقصر أو تغيير أسلوبه. على سبيل المثال، يمكنك إجراء ما يلي:
- إعادة كتابة رسالة إلكترونية قصيرة لتكون أكثر تهذيبًا ورسمية
- اقتراح تعديلات على مراجعات العملاء لمساعدة العملاء الآخرين في فهم الملاحظات أو إزالة المحتوى المسيء
- تنسيق المحتوى بما يتوافق مع توقّعات شرائح جمهور معيّنة
هل حالة الاستخدام غير مدرَجة؟ يمكنك الانضمام إلى برنامج الاستخدام المبكر لمشاركة ملاحظاتك.
البدء
يمكنك الانضمام إلى مرحلة التجربة والتقييم في Rewriter API، التي يتم تشغيلها في الإصدارَين 137 و148 من Chrome.
مراجعة متطلبات الأجهزة
تنطبق المتطلبات التالية على المطوّرين والمستخدمين الذين يشغّلون الميزات باستخدام واجهات برمجة التطبيقات هذه في Chrome. قد تحتوي المتصفحات الأخرى على متطلبات تشغيل مختلفة.
تعمل Language Detector وTranslator APIs في Chrome على أجهزة الكمبيوتر المكتبي. لا تعمل واجهات برمجة التطبيقات هذه على الأجهزة الجوّالة.
تعمل Prompt API وSummarizer API وWriter API وRewriter API وProofreader API في Chrome عند استيفاء الشروط التالية:
- نظام التشغيل: Windows 10 أو 11 أو macOS 13 والإصدارات الأحدث (Ventura والإصدارات اللاحقة) أو Linux أو ChromeOS (من الإصدار 16389.0.0 والإصدارات اللاحقة) على أجهزة Chromebook Plus. لا تتوافق واجهات برمجة التطبيقات التي تستخدم Gemini Nano بعد مع Chrome لنظام التشغيل Android وiOS وChromeOS على الأجهزة غير Chromebook Plus.
- مساحة التخزين: مساحة خالية لا تقل عن 22 غيغابايت على وحدة التخزين التي تحتوي على ملف شخصي في Chrome
- وحدة معالجة الرسومات أو وحدة المعالجة المركزية: يمكن تشغيل النماذج المضمّنة باستخدام وحدة معالجة الرسومات أو وحدة المعالجة المركزية.
- وحدة معالجة الرسومات: ذاكرة وصول عشوائي للرسومات (VRAM) أكبر من 4 غيغابايت
- وحدة المعالجة المركزية: ذاكرة وصول عشوائي (RAM) بسعة 16 غيغابايت أو أكثر و4 نوى لوحدة المعالجة المركزية أو أكثر
- ملاحظة: تتطلب Prompt API مع إدخال الصوت وحدة معالجة رسومات.
- الشبكة: بيانات غير محدودة أو اتصال لا تفرض تكلفة استخدامه. عادةً ما تكون اتصالات Wi-Fi واتصالات إيثرنت لا تفرض تكلفة استخدام تلقائيًا، بينما تكون اتصالات شبكة الجوّال تفرض تكلفة استخدام في أغلب الأحيان.
قد يختلف الحجم الدقيق لـ Gemini Nano مع تحديث المتصفّح للنموذج. لتحديد الحجم الحالي، انتقِل إلى chrome://on-device-internals.
الاشتراك في مرحلة التجربة والتقييم
تتوفّر Rewriter API في مرحلة تجربة وتقييم مشتركة مع Writer API. لبدء استخدام واجهات برمجة التطبيقات هذه:
- انتقِل إلى مرحلة التجربة والتقييم في Rewriter API.
- انقر على تسجيل واملأ النموذج. في حقل عنوان الويب المصدر، أدخِل
المصدر أو
رقم تعريف الإضافة،
chrome-extension://YOUR_EXTENSION_ID. - لإرسال النموذج، انقر على تسجيل.
- انسخ الرمز المميّز المقدَّم وأضِفه إلى كل صفحة ويب مشارِكة على المصدر أو أدرِجه في بيان الإضافة.
- ابدأ استخدام Rewriter API.
مزيد من المعلومات حول كيفية بدء استخدام مراحل التجربة والتقييم.
إضافة الدعم إلى localhost
للوصول إلى Rewriter API على localhost، استخدِم ميزات Chrome التجريبية:
- اضبط
chrome://flags/#optimization-guide-on-device-modelعلى مفعَّلة. - اضبط الميزات التجريبية التالية على مفعَّلة أو مفعَّلة (بلغات متعددة):
chrome://flags/#prompt-api-for-gemini-nano-multimodal-inputchrome://flags/#writer-api-for-gemini-nano
- انقر على إعادة التشغيل أو أعِد تشغيل Chrome.
استخدام Rewriter API
أولاً، شغِّل ميزة رصد الميزات لمعرفة ما إذا كان المتصفّح يتيح استخدام واجهات برمجة التطبيقات هذه.
if ('Rewriter' in self) {
// The Rewriter API is supported.
}
تم دمج Rewriter API وجميع واجهات برمجة التطبيقات الأخرى المضمّنة المستندة إلى الذكاء الاصطناعي في المتصفّح. يتم تنزيل Gemini Nano بشكل منفصل في المرة الأولى التي يستخدم فيها أي موقع إلكتروني واجهة برمجة تطبيقات مضمّنة مستندة إلى الذكاء الاصطناعي. في الواقع، إذا كان المستخدم قد تفاعل من قبل مع واجهة برمجة تطبيقات مضمّنة، يكون قد نزّل النموذج إلى متصفّحه.
لتحديد ما إذا كان النموذج جاهزًا للاستخدام، استخدِم الدالة غير المتزامنة
Rewriter.availability().
إذا كان الردّ على availability() هو downloadable، استمِع إلى تقدّم التنزيل وأبلِغ المستخدم، لأنّ التنزيل قد يستغرق بعض الوقت.
const availability = await Rewriter.availability();
لتشغيل تنزيل النموذج وبدء أداة إعادة الكتابة، تحقَّق من
تفعيل المستخدم
واستخدِم الدالة Rewriter.create().
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-textlength: طول الناتج، مع القيم المسموح بهاshorterوas-is(تلقائيًا) وlongersharedContext: عند إعادة كتابة عدة أجزاء من المحتوى، يمكن أن يساعد السياق المشترَك النموذج في إنشاء محتوى يتوافق بشكل أفضل مع توقّعاتك.
يوضّح المثال التالي كيفية بدء كائن 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);
});
}
تحديد اللغات المتوقّعة
تتيح Rewriter API استخدام لغات متعددة. اضبط لغات الإدخال والإخراج والسياق المتوقّعة عند إنشاء جلستك. يسمح ذلك للمتصفّح برفض الطلب إذا كان لا يتيح استخدام مجموعة لغات معيّنة.
const rewriter = await Rewriter.create({
tone: "more-formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to rewrite messages to teachers in a
Spanish language program, by students who may speak Spanish, Japanese, or
English. Staff expect questions to be written in Spanish."
});
بدء إعادة الكتابة
هناك طريقتان لعرض المحتوى من النموذج: الناتج المستند إلى الطلب والبث.
الناتج المستند إلى الطلب
بالنسبة إلى الناتج المستند إلى الطلب (أو "غير البث المباشر")، ينتظر النموذج إنشاء الإدخال بالكامل، ثم يعالج هذا الإدخال ككل، ثم ينتج الناتج.
للحصول على ناتج مستند إلى الطلب، استخدِم الدالة غير المتزامنة rewrite(). يجب تضمين النص الأولي الذي تريد إعادة كتابته. يمكنك إضافة context اختياري لتزويد النموذج بمعلومات أساسية، ما قد يساعد النموذج في تلبية توقّعاتك بشكل أفضل بشأن الناتج.
// Request-based
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();
عرض توضيحي
سياسة الأذونات وإطارات iframe وWeb Workers
تتوفّر Rewriter API تلقائيًا للنوافذ ذات المستوى الأعلى وإطارات iframe التي لها المصدر نفسه فقط. يمكن تفويض إذن الوصول إلى واجهة برمجة التطبيقات لإطارات iframe من مصادر متعددة
باستخدام سمة سياسة الأذونات allow="":
<!--
The hosting site at https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Rewriter API by
setting the `allow="rewriter"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>
لا تتوفّر Rewriter API في Web Workers. يرجع ذلك إلى صعوبة إنشاء مستند مسؤول لكل منفِّذ، وذلك للتحقّق من حالة السياسة للأذونات.
التفاعل ومشاركة الملاحظات
تخضع Writer وRewriter APIs لمناقشة نشطة وقد تتغيّران في المستقبل. إذا جرّبت واجهة برمجة التطبيقات هذه وكان لديك ملاحظات، يُرجى إعلامنا بها.
- اقرأ الشرح، اطرح الأسئلة وشارِك في المناقشة.
- راجِع حالة Chrome للاطّلاع على عملية تنفيذ Rewriter API في Chrome.
- إذا كانت لديك ملاحظات على عملية التنفيذ في Chrome، أرسِل تقريرًا عن خلل Chromium.
- انضم إلى برنامج الاستخدام المبكر للاطّلاع على واجهات برمجة التطبيقات الجديدة قبل إطلاقها والوصول إلى قائمتنا البريدية.
اكتشِف جميع واجهات برمجة التطبيقات المضمّنة المستندة إلى الذكاء الاصطناعي التي تستخدم النماذج، بما في ذلك Gemini Nano و النماذج المتخصصة الأخرى، في المتصفّح.