API перезаписи

Опубликовано: 22 октября 2025 г.

Пояснительная записка Веб Расширения Статус Chrome Намерение
GitHub Пробная версия для разработчиков Пробная версия для разработчиков Пробная версия для разработчиков Пробная версия для разработчиков Вид Намерение провести эксперимент

API Rewriter помогает редактировать и реструктурировать текст. Этот API, а также API Writer, являются частью предложения по API помощи в написании текстов .

Эти API могут помочь вам улучшить контент, создаваемый пользователями.

Варианты использования

Улучшите существующий текст, сделав его длиннее или короче, или изменив тон. Например, вы можете:

  • Перепишите короткое электронное письмо так, чтобы оно звучало более вежливо и формально.
  • Предлагайте вносить правки в отзывы клиентов, чтобы помочь другим клиентам понять обратную связь или устранить негативные высказывания.
  • Оформите контент в соответствии с ожиданиями определенной аудитории.

Ваш вариант использования отсутствует? Присоединяйтесь к программе предварительного просмотра, чтобы поделиться своим мнением.

Начать

Присоединяйтесь к пробной версии API Rewriter , работающей в Chrome версий 137–148.

Ознакомьтесь с требованиями к оборудованию.

Для разработчиков и пользователей, использующих функции этих API в Chrome, существуют следующие требования. Для других браузеров могут действовать иные требования.

API для определения языка и перевода работают в Chrome на настольных компьютерах. На мобильных устройствах эти API не работают.

API-интерфейсы Prompt , Summarizer , Writer , Rewriter и 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.
  • GPU или CPU : Встроенные модели могут работать как с GPU, так и с CPU.
    • Графический процессор : строго более 4 ГБ видеопамяти.
    • Процессор : 16 ГБ оперативной памяти или больше и 4 ядра или больше.
  • Сеть : Безлимитный трафик или безлимитное подключение.

Точный размер Gemini Nano может измениться после обновления браузером модели. Чтобы узнать текущий размер, посетите chrome://on-device-internals .

Зарегистрируйтесь для участия в пробной версии Origin.

API Rewriter доступен в рамках совместной пробной версии с API Writer. Чтобы начать использовать эти API:

  1. Ознакомьтесь с политикой Google в отношении запрещенных способов использования генеративного ИИ .
  2. Перейдите на пробную версию API Rewriter .
  3. Нажмите «Регистрация» и заполните форму. В поле «Веб-источник» укажите идентификатор вашего источника или расширения: chrome-extension://YOUR_EXTENSION_ID .
  4. Для отправки нажмите кнопку «Зарегистрироваться» .
  5. Скопируйте предоставленный токен и добавьте его на каждую участвующую веб-страницу на вашем исходном сайте или включите его в манифест вашего расширения .
  6. Начните использовать API переписывания.

Узнайте больше о том, как начать работу с экспериментальными проектами по изучению происхождения .

Добавить поддержку для localhost

Для доступа к API Rewriter на локальном компьютере используйте флаги Chrome :

  1. Установите для параметра chrome://flags/#optimization-guide-on-device-model значение «Включено» .
  2. Установите для следующих флагов значение «Включено» или «Включена многоязычность» :
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. Нажмите «Перезапустить» или перезапустите Chrome.

Используйте API перезаписи

Сначала выполните проверку наличия необходимых функций, чтобы узнать, поддерживает ли браузер эти API.

if ('Rewriter' in self) {
  // The Rewriter API is supported.
}

API Rewriter, как и все остальные встроенные API для ИИ, интегрированы в браузер. Gemini Nano загружается отдельно при первом использовании любого веб-сайта встроенного API для ИИ. На практике, если пользователь уже взаимодействовал со встроенным API, модель уже загружена в его браузер.

Чтобы определить, готова ли модель к использованию, вызовите асинхронную функцию 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}%`);
    });
  }
});

Функции API

Функция 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);
  });
}

Назначьте ожидаемые языки

API Rewriter поддерживает несколько языков. Укажите ожидаемые языки ввода, вывода и контекста при создании сессии. Это позволит браузеру отклонить запрос, если он не поддерживает определенную комбинацию языков.

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 и веб-воркеры

По умолчанию API Rewriter доступен только окнам верхнего уровня и их 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 Rewriter API by
  setting the `allow="rewriter"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>

API Rewriter недоступен в Web Workers. Это связано со сложностью создания ответственного документа для каждого Workers, необходимого для проверки статуса политики разрешений.

Принимайте участие и делитесь отзывами.

API для записи и перезаписи находятся в стадии активного обсуждения и могут быть изменены в будущем. Если вы попробуете этот API и у вас появятся отзывы, мы будем рады их услышать.

Ознакомьтесь со всеми встроенными API для искусственного интеллекта , использующими модели, включая Gemini Nano и другие экспертные модели, прямо в браузере.