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 и другие экспертные модели, прямо в браузере.