تاريخ النشر: 22 أكتوبر 2025
| الشارح | الويب | الإضافات | حالة Chrome | النيّة بالشراء |
|---|---|---|---|---|
| GitHub | العرض | النيّة في إجراء تجربة |
تساعدك Writer API في إنشاء محتوى جديد يتوافق مع مهمة كتابة محدّدة. تشكّل Writer API وRewriter API جزءًا من اقتراح Writing Assistance APIs.
يمكن أن تساعدك واجهات برمجة التطبيقات الشريكة هذه في تحسين المحتوى الذي ينشئه المستخدمون.
حالات الاستخدام
يمكنك كتابة محتوى جديد استنادًا إلى فكرتك الأولية والسياق الاختياري. يمكن استخدام هذه الميزة في ما يلي:
- مساعدة المستخدمين في كتابة أي نوع من المحتوى، مثل المراجعات أو مشاركات المدوّنات أو الرسائل الإلكترونية
- مساعدة المستخدمين في كتابة طلبات دعم أفضل
- كتابة مقدّمة لمجموعة من نماذج العمل، ما يساعد في عرض مهارات معيّنة بشكل أفضل
هل حالة الاستخدام غير مُدرَجة؟ يمكنك الانضمام إلى برنامج الاستخدام المبكر لمشاركة ملاحظاتك.
البدء
يمكنك الانضمام إلى مرحلة التجربة والتقييم في Writer API التي يتم تشغيلها في Chrome من الإصدار 137 إلى 148.
مراجعة متطلبات الأجهزة
تنطبق المتطلبات التالية على المطوّرين والمستخدمين الذين يشغّلون الميزات باستخدام واجهات برمجة التطبيقات هذه في Chrome. قد تحتوي المتصفحات الأخرى على متطلبات تشغيل مختلفة.
تعمل واجهة برمجة التطبيقات Language Detector API وواجهة برمجة التطبيقات Translator API في 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.
الاشتراك في مرحلة التجربة والتقييم
تتوفّر Writer API في مرحلة تجربة وتقييم مشتركة مع Rewriter API. لبدء استخدام واجهات برمجة التطبيقات هذه:
- يجب الموافقة على سياسة الاستخدام المحظور للذكاء الاصطناعي التوليدي المتّبَعة في Google.
- انتقِل إلى مرحلة التجربة والتقييم في Writer API.
- انقر على تسجيل واملأ النموذج. في حقل عنوان الويب المصدر، أدخِل المصدر أو رقم تعريف الإضافة،
chrome-extension://YOUR_EXTENSION_ID. - للإرسال، انقر على تسجيل.
- انسخ الرمز المميّز المقدَّم وأضِفه إلى كل صفحة ويب مشارِكة على المصدر أو أدرِجه في بيان الإضافة.
- ابدأ باستخدام Writer API وRewriter API.
مزيد من المعلومات حول كيفية بدء استخدام مراحل التجربة والتقييم.
إضافة إمكانية الوصول إلى localhost
للوصول إلى Writer 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.
استخدام Writer API
أولاً، شغِّل ميزة رصد الميزات لمعرفة ما إذا كان المتصفّح يتيح استخدام واجهات برمجة التطبيقات هذه.
if ('Writer' in self) {
// The Writer API is supported.
}
تم دمج Writer API وجميع واجهات برمجة التطبيقات الأخرى المضمّنة المستندة إلى الذكاء الاصطناعي في المتصفّح. يتم تنزيل Gemini Nano بشكل منفصل في المرة الأولى التي يستخدم فيها أي موقع إلكتروني واجهة برمجة تطبيقات مضمّنة مستندة إلى الذكاء الاصطناعي. من الناحية العملية، إذا كان المستخدم قد تفاعل من قبل مع واجهة برمجة تطبيقات مضمّنة، يكون قد نزّل النموذج إلى متصفّحه.
لتحديد ما إذا كان النموذج جاهزًا للاستخدام، استخدِم الدالة غير المتزامنة
Writer.availability(). إذا كانت استجابة availability() هي downloadable، استمِع إلى مستوى تقدّم التنزيل وأبلِغ المستخدم، لأنّ التنزيل قد يستغرق بعض الوقت.
const availability = await Writer.availability();
لبدء تنزيل النموذج وبدء أداة الكتابة، تحقَّق من
تفعيل المستخدم
واستخدِم الدالة Writer.create().
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
وظائف واجهة برمجة التطبيقات
تتيح لك الدالة create() إعداد كائن كاتب جديد. تتلقّى الدالة كائن options اختياريًا يتضمّن المَعلمات التالية:
tone: أسلوب الكتابة يمكن أن يشير إلى نمط المحتوى أو شخصيته أو موقفه. يمكن ضبط القيمة علىformalأوneutral(تلقائي) أوcasual.format: تنسيق الإخراج، مع القيمتَين المسموح بهماmarkdown(تلقائي) وplain-textlength: طول الإخراج، مع القيم المسموح بهاshort(تلقائي) وmediumوlongsharedContext: عند كتابة عدة نتائج، يمكن أن يساعد السياق المشترَك النموذج في إنشاء محتوى يتوافق بشكل أفضل مع توقعاتك.
يوضّح المثال التالي كيفية بدء كائن writer:
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'casual',
format: 'plain-text',
length: 'medium',
};
const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
// The Writer API isn't usable.
return;
}
if (available === 'available') {
// The Writer API can be used immediately .
writer = await Writer.create(options);
} else {
// The Writer can be used after the model is downloaded.
const writer = await Writer.create({
...options,
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
}
تحديد اللغات المتوقّعة
تتيح Writer API استخدام لغات متعددة. عند إنشاء جلستك، اضبط لغات الإدخال والسياق المتوقّعة بالإضافة إلى لغة الإخراج المتوقّعة. يسمح ذلك للمتصفّح برفض الطلب إذا كان لا يتيح استخدام مجموعة لغات معيّنة.
const writer = await Writer.create({
tone: "formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to write 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."
});
بدء الكتابة
هناك طريقتان لعرض المحتوى المكتوب من النموذج: الإخراج المستند إلى الطلب والبث.
الإخراج المستند إلى الطلب
بالنسبة إلى الإخراج المستند إلى الطلب (أو "غير المستند إلى البث")، ينتظر النموذج إلى أن يتم إنشاء الإدخال بالكامل، ثم يعالج هذا الإدخال ككل، ثم ينتج الإخراج.
للحصول على إخراج مستند إلى الطلب، استخدِم الدالة غير المتزامنة write(). يجب تضمين طلب للمحتوى الذي تريد كتابته. يمكنك إضافة context اختياري لتزويد النموذج بمعلومات أساسية، ما قد يساعد النموذج في تلبية توقعاتك بشكل أفضل بشأن الإخراج.
// Request-based
const writer = await Writer.create();
const result = await writer.write(
"An inquiry to my bank about how to enable wire transfers on my account.",
{
context: "I'm a longstanding customer",
},
);
بث المحتوى المكتوب
يقدّم البث نتائج متواصلة في الوقت الفعلي. يتم تعديل الإخراج بشكل تدريجي عند إضافة الإدخال وتعديله.
للحصول على كاتب مستند إلى البث، استخدِم الدالة writeStreaming() وكرِّر الأجزاء المتاحة من النص في البث. يمكنك إضافة context اختياري لتزويد النموذج بمعلومات أساسية، ما قد يساعد النموذج في تلبية توقعاتك بشكل أفضل بشأن الإخراج.
// Streaming
const writer = await Writer.create(
expectedInputLanguages: ["en"],
expectedContextLanguages: ["en"],
outputLanguage: "en",
);
const stream = writer.writeStreaming(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
مشاركة السياق لمهام متعددة
قد تحتاج إلى استخدام writer لإنشاء عدة أجزاء من المحتوى. في هذه الحالة، من المفيد إضافة sharedContext. على سبيل المثال، قد تحتاج إلى مساعدة المراجعين في تقديم ملاحظات أفضل في التعليقات.
// Shared context and per writing task context
const writer = await Writer.create({
expectedInputLanguages: ["en"],
expectedContextLanguages: ["en"],
outputLanguage: "en",
sharedContext:
"This is for publishing on [popular website name], a business" +
"and employment-focused social media platform."
});
const stream = writer.writeStreaming(
"Write a blog post about how I love all this work on gen AI at Google!" +
"Mention that there's 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."}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
إعادة استخدام أداة كتابة
يمكنك استخدام أداة الكتابة نفسها لإنشاء عدة أجزاء من المحتوى.
// Reuse a writer
const writer = await Writer.create({ tone: "formal" });
const reviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => writer.write(reviewEl.textContent)
),
);
إيقاف أداة الكتابة
لإنهاء عملية الكتابة، أوقِف وحدة التحكّم وأزِل أداة الكتابة.
// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });
// Destroying a writer
writer.destroy();
عرض توضيحي
سياسة الأذونات وإطارات iframe وWeb Workers
تتوفّر Writer 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 Writer API by
setting the `allow="writer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="writer"></iframe>
لا تتوفّر Writer API في Web Workers. يرجع ذلك إلى صعوبة إنشاء مستند مسئول لكل منفِّذ للتحقّق من حالة سياسة الأذونات.
التفاعل ومشاركة الملاحظات
تخضع Writer API وRewriter API لنقاش نشط وقد تتغيّران في المستقبل. إذا جرّبت واجهة برمجة التطبيقات هذه وكانت لديك ملاحظات، يُرجى مشاركتها معنا.
- يمكنك قراءة الشارح، وطرح الأسئلة والمشاركة في المناقشة.
- يمكنك مراجعة حالة Chrome للاطّلاع على آخر الأخبار عن تنفيذ واجهة برمجة التطبيقات في Chrome.
- إذا كانت لديك ملاحظات على تنفيذ Chrome، يُرجى إرسال تقرير عن خلل Chromium.
- انضم إلى برنامج الاستخدام المبكر للاطّلاع على واجهات برمجة التطبيقات الجديدة والوصول إلى قائمتنا البريدية.
يمكنك استكشاف جميع واجهات برمجة التطبيقات المضمّنة المستندة إلى الذكاء الاصطناعي التي تستخدم النماذج، بما في ذلك Gemini Nano والنماذج المتخصصة الأخرى، في المتصفّح.