API писателя

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

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

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

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

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

Создайте новый контент, основываясь на вашей первоначальной идее и, при желании, контексте. Это может быть использовано для:

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

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

Начать

Присоединяйтесь к пробной версии Writer API, работающей в 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 Writer доступен в рамках совместной пробной версии с API Rewriter. Чтобы начать использовать эти API:

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

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

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

Для доступа к Writer API на локальном компьютере используйте флаги 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 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();

Демо

Политика разрешений, iframe и веб-воркеры

По умолчанию 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 для записи и перезаписи активно обсуждаются и могут быть изменены в будущем. Если вы попробуете этот API и у вас появятся отзывы, мы будем рады их услышать.

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