Опубликовано: 22 октября 2025 г.
| Объяснитель | Интернет | Расширения | Статус Chrome | Намерение |
|---|---|---|---|---|
| GitHub | Вид | Намерение экспериментировать |
API Writer помогает создавать новый контент, соответствующий конкретной задаче. API Writer и API Rewriter входят в состав предложения Writing Assistance API .
Эти партнерские API могут помочь вам улучшить контент, создаваемый пользователями.
Варианты использования
Напишите новый контент, основанный на вашей первоначальной идее и, возможно, на контексте. Это можно использовать для:
- Пользователи службы поддержки пишут любой контент, например, обзоры, записи в блогах или электронные письма.
- Помогите пользователям лучше писать запросы в службу поддержки.
- Составьте введение для серии примеров работ, чтобы лучше отразить определенные навыки.
Не нашли свой вариант использования? Присоединяйтесь к программе раннего ознакомления и поделитесь своим мнением.
Начать
Присоединяйтесь к пробной версии Writer API, работающей в Chrome 137–148.
Ознакомьтесь с требованиями к оборудованию
Для разработчиков и пользователей, использующих эти API в Chrome, действуют следующие требования. Требования к работе других браузеров могут отличаться.
API определения языка и переводчика работают в Chrome на десктопе. Эти API не работают на мобильных устройствах. API Prompt, API Summarizer, API Writer, API Rewriter и API Proofreader работают в Chrome при соблюдении следующих условий:
- Операционная система : Windows 10 или 11; macOS 13+ (Ventura и выше); Linux; или ChromeOS (начиная с платформы 16389.0.0 и выше) на устройствах Chromebook Plus . Chrome для Android, iOS и ChromeOS на устройствах, отличных от Chromebook Plus, пока не поддерживаются API, использующими Gemini Nano.
- Хранилище : не менее 22 ГБ свободного места на томе, содержащем ваш профиль Chrome.
- Графический процессор или центральный процессор : встроенные модели могут работать с графическим процессором или центральным процессором.
- Видеокарта : строго более 4 ГБ видеопамяти.
- Процессор : 16 ГБ ОЗУ или более и 4 ядра ЦП или более.
- Сеть : Безлимитные данные или безлимитное соединение.
Точный размер Gemini Nano может меняться по мере обновления модели браузером. Чтобы узнать текущий размер, посетите chrome://on-device-internals .
Зарегистрируйтесь для участия в пробной версии Origin
API Writer доступен в совместной пробной версии с API Rewriter. Чтобы начать использовать эти API:
- Ознакомьтесь с Политикой Google в отношении запрещенного использования генеративного ИИ .
- Перейти к пробной версии API Writer .
- Нажмите «Зарегистрироваться» и заполните форму. В поле «Веб-источник» укажите идентификатор вашего источника или расширения:
chrome-extension://YOUR_EXTENSION_ID. - Чтобы отправить, нажмите кнопку «Зарегистрироваться» .
- Скопируйте предоставленный токен и добавьте его на каждую участвующую веб-страницу вашего источника или включите его в манифест расширения .
- Начните использовать API Writer и Rewriter.
Узнайте больше о том, как начать работу с испытаниями Origin .
Добавить поддержку localhost
Чтобы получить доступ к API Writer и Rewriter на локальном хосте во время пробного периода, необходимо обновить Chrome до последней версии. Затем выполните следующие действия:
- Перейдите по адресу
chrome://flags/#writer-api-for-gemini-nano. - Выберите Включено .
- Нажмите «Перезапустить» или перезапустите Chrome.
Используйте API Writer
Сначала запустите обнаружение функций, чтобы узнать, поддерживает ли браузер эти API.
if ('Writer' in self) { // The Writer API is supported. } API Writer и все остальные встроенные API ИИ интегрированы в браузер. Gemini Nano загружается отдельно при первом использовании веб-сайтом встроенного API ИИ. На практике, если пользователь уже взаимодействовал со встроенным API, он загружает модель в свой браузер.
Чтобы определить, готова ли модель к использованию, вызовите асинхронную функцию 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}%`); }); } }); API-функции
Функция create() позволяет настроить новый объект Writer. Она принимает необязательный объект options со следующими параметрами:
-
tone: Тон письма может определять стиль, характер или отношение к содержанию. Возможные значения:formal,neutral(по умолчанию) илиcasual. -
format: Форматирование вывода с допустимыми значениямиmarkdown(по умолчанию) иplain-text. -
length: длина выходных данных, допустимые значения:short(по умолчанию),mediumиlong. -
sharedContext: при создании нескольких выходных данных общий контекст может помочь модели создавать контент, лучше соответствующий вашим ожиданиям.
В следующем примере показано, как инициировать объект 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}%`); }); } }); } Назначьте ожидаемые языки
API Writer поддерживает несколько языков. Укажите ожидаемые языки ввода и контекста, а также ожидаемый язык вывода при создании сеанса. Это позволит браузеру отклонить запрос, если он не поддерживает определённую языковую комбинацию.
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(); Демо
Политика разрешений, фреймы и веб-работники
По умолчанию API Writer доступен только окнам верхнего уровня и их iframe-ам с тем же источником. Доступ к API можно делегировать 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> API Writer недоступен в Web Workers. Это связано со сложностью создания ответственного документа для каждого Worker для проверки статуса политики разрешений.
Привлекайте и делитесь отзывами
API Writer и Rewriter находятся в стадии активного обсуждения и могут быть изменены в будущем. Если вы опробуете этот API и у вас есть отзывы, мы будем рады их услышать.
- Прочитайте пояснение , задайте вопросы и примите участие в обсуждении.
- Проверьте статус Chrome на предмет обновлений по реализации API в Chrome.
- Если у вас есть отзыв о реализации Chrome, отправьте сообщение об ошибке Chromium .
- Присоединяйтесь к программе предварительного просмотра, чтобы заранее ознакомиться с новыми API и получить доступ к нашему списку рассылки.
Откройте для себя все встроенные API ИИ , которые используют модели, включая Gemini Nano и другие экспертные модели, в браузере.