Опубликовано: 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:
- Ознакомьтесь с политикой Google в отношении запрещенных способов использования генеративного ИИ .
- Перейдите на пробную версию Writer API .
- Нажмите «Регистрация» и заполните форму. В поле «Веб-источник» укажите идентификатор вашего источника или расширения:
chrome-extension://YOUR_EXTENSION_ID. - Для отправки нажмите кнопку «Зарегистрироваться» .
- Скопируйте предоставленный токен и добавьте его на каждую участвующую веб-страницу на вашем исходном сайте или включите его в манифест вашего расширения .
- Начните использовать API-интерфейсы Writer и Rewriter.
Узнайте больше о том, как начать работу с экспериментальными проектами по изучению происхождения .
Добавить поддержку для localhost
Для доступа к Writer API на локальном компьютере используйте флаги Chrome :
- Установите для параметра
chrome://flags/#optimization-guide-on-device-modelзначение «Включено» . - Установите для следующих флагов значение «Включено» или «Включена многоязычность» :
-
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input -
chrome://flags/#writer-api-for-gemini-nano
-
- Нажмите «Перезапустить» или перезапустите 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 в Chrome, следите за статусом Chrome .
- Если у вас есть замечания по реализации в Chrome, создайте сообщение об ошибке в Chromium .
- Присоединяйтесь к программе раннего ознакомления , чтобы первыми увидеть новые API и получить доступ к нашей почтовой рассылке.
Ознакомьтесь со всеми встроенными API для искусственного интеллекта , использующими модели, включая Gemini Nano и другие экспертные модели, прямо в браузере.