API писателя

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

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

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

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

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

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

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

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

Начать

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

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

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

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

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

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

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

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

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

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

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

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

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

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.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

Начать писать

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

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

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

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

// Non-streaming
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();
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({
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 и Rewriter находятся в стадии активного обсуждения и могут быть изменены в будущем. Если вы попробуете этот API и у вас есть отзыв, мы будем рады его услышать.

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

,

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

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

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

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

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

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

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

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

Начать

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

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

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

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

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

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

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

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

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

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

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

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

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

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.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

Начать писать

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

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

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

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

// Non-streaming
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();
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({
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 и Rewriter находятся в стадии активного обсуждения и могут быть изменены в будущем. Если вы попробуете этот API и у вас есть отзыв, мы будем рады его услышать.

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