API перезаписи

Опубликовано: 20 мая 2025 г.

Объяснитель Веб Расширения Статус Хрома Намерение
GitHub За флагом Исходный суд За флагом Исходный суд Вид Намерение экспериментировать

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

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

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

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

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

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

Начать

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

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

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

Prompt API, Summarizer API, Writer API и Rewriter API работают в Chrome при соблюдении следующих условий:

  • Операционная система : Windows 10 или 11; macOS 13+ (Ventura и выше); или Linux. Chrome для Android, iOS и ChromeOS пока не поддерживаются нашими API, поддерживаемыми Gemini Nano.
  • Хранилище : не менее 22 ГБ на томе, содержащем ваш профиль Chrome.
  • Графический процессор : строго более 4 ГБ видеопамяти.
  • Сеть : Неограниченные данные или безлимитное соединение.

Эти требования существуют для вас в процессе разработки и для ваших пользователей, которые работают с создаваемыми вами функциями.

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

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

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

Узнайте больше о том, как начать работу с пробными версиями Origin .

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

Чтобы получить доступ к API Writer и Rewriter на локальном хосте во время пробной версии Origin, необходимо обновить Chrome до последней версии. Затем выполните следующие действия:

  1. Перейдите по адресу chrome://flags/#rewriter-api-for-gemini-nano .
  2. Выберите Включено .
  3. Нажмите «Перезапустить» или перезапустите Chrome.

Используйте API Rewriter

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


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

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

Чтобы определить, готова ли модель к использованию, вызовите асинхронную функцию Rewriter.availability() . Она возвращает строку, которая может принимать четыре возможных значения:

  • unavailable : Браузер поддерживает API Rewriter, но в данный момент его нельзя использовать. Это может быть вызвано рядом причин, например, нехваткой свободного места на диске для загрузки модели.
  • available : браузер поддерживает API Rewriter, и его можно использовать сразу же.
  • downloadable : браузер поддерживает API Rewriter, но сначала необходимо загрузить модель.
  • downloading : Браузер поддерживает API Rewriter и в настоящее время загружает модель.

Чтобы запустить загрузку модели и запустить переписчик, вызовите функцию Rewriter.create() . Если ответ на availability() был downloadable , ожидайте прогресса загрузки и сообщите об этом пользователю, так как загрузка может занять некоторое время.

const rewriter = await Rewriter.create({
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

API-функции

Функция create() позволяет вам настроить новый объект rewriter. Она принимает необязательный объект 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);
  });
}

Начать переписывать

Существует два способа вывода контента из модели: непотоковое и потоковое.

Непотоковый вывод

При непотоковой перезаписи модель обрабатывает входные данные как единое целое, а затем выдает выходные данные.

Чтобы получить непоточный вывод, вызовите асинхронную функцию rewrite() . Вы должны включить начальный текст, который вы хотите переписать. Вы можете добавить необязательный context , чтобы предоставить фоновую информацию модели, которая может помочь модели лучше соответствовать вашим ожиданиям относительно вывода.

// Non-streaming
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();

Демо

Привлекайте и делитесь отзывами

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

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