Data publikacji: 20 maja 2025 r.
Objaśnienie | Sieć | Rozszerzenia | Stan Chrome | Intencja |
---|---|---|---|---|
GitHub | Wyświetl | Zamierzasz przeprowadzić eksperyment |
Interfejs Writer API pomaga tworzyć nowe treści zgodne ze wskazanym zadaniem pisarskim. Interfejsy Writer API i Rewriter API są częścią propozycji interfejsów API do pomocy przy pisaniu.
Interfejsy API partnerów mogą pomóc Ci ulepszać treści tworzone przez użytkowników.
Przypadki użycia
Napisz nowe treści na podstawie początkowego pomysłu i opcjonalnego kontekstu. Możesz go użyć do:
- Użytkownicy mogą pisać różne treści, np. opinie, posty na blogu czy e-maile.
- Pomagaj użytkownikom w pisaniu lepszych zgłoszeń do zespołu pomocy.
- Napisz wstęp do serii próbek pracy, aby lepiej pokazać określone umiejętności.
Brakuje Twojego przypadku użycia? Dołącz do programu wczesnego testowania, aby podzielić się opinią.
Rozpocznij
Dołącz do wersji próbnej interfejsu Writer API, która działa w Chrome 137–142.
Wymagania sprzętowe
Interfejsy Language Detector i Translator API działają na komputerach tylko w Chrome.
Interfejsy Prompt API, Summarizer API, Writer API i Rewriter API działają w Chrome, gdy są spełnione te warunki:
- System operacyjny: Windows 10 lub 11, macOS 13 lub nowszy (Ventura lub nowszy) lub Linux. Chrome na Androida, iOS i ChromeOS nie są jeszcze obsługiwane przez nasze interfejsy API obsługiwane przez Gemini Nano.
- Pamięć: co najmniej 22 GB na woluminie zawierającym profil Chrome.
- GPU więcej niż 4 GB pamięci VRAM.
- Sieć: nieograniczona transmisja danych lub nielimitowane połączenie.
Te wymagania obowiązują w procesie tworzenia aplikacji oraz w przypadku użytkowników, którzy korzystają z Twoich funkcji.
Rejestrowanie się w wersji próbnej origin
Interfejs Writer API jest dostępny w ramach wspólnego testowania origin z interfejsem Rewriter API. Aby zacząć korzystać z tych interfejsów API:
- Potwierdź zasady Google dotyczące niedozwolonych zastosowań generatywnej AI.
- Przejdź do testowania origin interfejsu Writer API.
- Kliknij Zarejestruj się i wypełnij formularz. W polu źródła internetowego podaj źródło lub identyfikator rozszerzenia,
chrome-extension://YOUR_EXTENSION_ID
. - Aby je przesłać, kliknij Zarejestruj.
- Skopiuj podany token i dodaj go do każdej strony internetowej, która uczestniczy w programie, lub umieść go w pliku manifestu rozszerzenia.
- Zacznij używać interfejsów Writer i Rewriter API.
Dowiedz się więcej o rozpoczynaniu okresów próbnych z użyciem adresów źródłowych.
Dodawanie obsługi localhost
Aby uzyskać dostęp do interfejsów Writer i Rewriter na localhost podczas wersji próbnej origin, musisz zaktualizować Chrome do najnowszej wersji. Następnie wykonaj poniższe czynności:
- Jedź do:
chrome://flags/#writer-api-for-gemini-nano
. - Kliknij Włączono.
- Kliknij Uruchom ponownie lub uruchom ponownie Chrome.
Korzystanie z interfejsu Writer API
Najpierw uruchom wykrywanie funkcji, aby sprawdzić, czy przeglądarka obsługuje te interfejsy API.
if ('Writer' in self) {
// The Writer API is supported.
}
Interfejs Writer API i wszystkie inne wbudowane interfejsy API AI są zintegrowane z przeglądarką. Gemini Nano jest pobierany osobno przy pierwszym użyciu przez witrynę wbudowanego interfejsu API AI. W praktyce, jeśli użytkownik wszedł już w interakcję z wbudowanym interfejsem API, pobrał model do przeglądarki.
Aby sprawdzić, czy model jest gotowy do użycia, wywołaj asynchroniczną funkcję Writer.availability()
. Zwraca ciąg znaków, który może przyjmować 4 możliwe wartości:
unavailable
: przeglądarka obsługuje interfejs Writer API, ale obecnie nie można z niego korzystać. Może to być spowodowane wieloma czynnikami, np. niewystarczającą ilością wolnego miejsca na dysku do pobrania modelu.available
: przeglądarka obsługuje interfejs Writer API i można go od razu używać.downloadable
: przeglądarka obsługuje interfejs Writer API, ale musi najpierw pobrać model.downloading
: przeglądarka obsługuje interfejs Writer API i obecnie pobiera model.
Aby wywołać pobieranie modelu i uruchomić funkcję generowania kodu, wywołaj funkcję Writer.create()
. Jeśli odpowiedź na availability()
to downloadable
, sprawdź postęp pobierania i poinformuj użytkownika, ponieważ pobieranie może zająć trochę czasu.
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Funkcje interfejsu API
Funkcja create()
umożliwia skonfigurowanie nowego obiektu writer. Przyjmuje opcjonalny obiekt options
z tymi parametrami:
tone
: ton tekstu może odnosić się do stylu, charakteru lub postawy zawartych treści. Wartość może wynosićformal
,neutral
(domyślnie) lubcasual
.format
: formatowanie wyjściowe z dozwolonymi wartościamimarkdown
(domyślnie) iplain-text
.length
: długość danych wyjściowych. Dozwolone wartości toshort
,medium
(domyślna) ilong
.sharedContext
: podczas zapisywania wielu danych wyjściowych wspólny kontekst może pomóc modelowi w tworzeniu treści lepiej dopasowanych do Twoich oczekiwań.
Poniższy przykład pokazuje, jak zainicjować obiekt 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);
});
}
Zacznij pisać
Istnieją 2 sposoby generowania tekstu przez model: bez przesyłania strumieniowego i z przesyłaniem strumieniowym.
Dane wyjściowe niebędące strumieniem
W przypadku pisania nieprzerywanego model przetwarza dane wejściowe jako całość, a potem generuje dane wyjściowe.
Aby uzyskać wyjście niestrumieniowe, wywołaj asynchroniczną funkcję write()
. Musisz podać prompt dotyczący treści, które chcesz napisać. Możesz dodać opcjonalny parametr context
, aby podać informacje o modelu, które mogą pomóc mu lepiej spełniać Twoje oczekiwania dotyczące danych wyjściowych.
// 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",
},
);
Dane wyjściowe z zapisu strumienia
Transmisja strumieniowa zapewnia wyniki w czasie rzeczywistym. Dane wyjściowe są aktualizowane na bieżąco w miarę dodawania i dostosowywania danych wejściowych.
Aby uzyskać strumiennego zapisacza, wywołaj funkcję writeStreaming()
i przeglądaj dostępne segmenty tekstu w strumieniach. Możesz dodać opcjonalny parametr context
, aby podać informacje o modelu, które pomogą mu lepiej spełniać Twoje oczekiwania dotyczące danych wyjściowych.
// 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);
}
Udostępnianie kontekstu w przypadku wielu zadań
Możesz użyć writer
, aby wygenerować wiele treści. W tym przypadku warto dodać sharedContext
. Możesz na przykład pomóc recenzentom w dawaniu lepszych opinii w komentarzach.
// 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);
}
Ponowne używanie autora
Możesz korzystać z usług tego samego copywritera do tworzenia różnych treści.
// 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)
),
);
Zatrzymaj pisanie
Aby zakończyć proces zapisywania, przerwij działanie kontrolera i zniszcz obiekt writer.
// 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();
Prezentacja
Zaangażowanie i przesyłanie opinii
Interfejsy API Writer i Rewriter są obecnie przedmiotem dyskusji i mogą ulec zmianie w przyszłości. Jeśli wypróbujesz ten interfejs API i masz opinię na jego temat, chętnie ją poznamy.
- Przeczytaj wyjaśnienie, zadaj pytania i weź udział w dyskusji.
- Sprawdź implementację w Chrome na stronie Stan Chrome.
- Dołącz do programu wczesnej wersji zapoznawczej, aby wcześniej zapoznać się z nowymi interfejsami API i zyskać dostęp do naszej listy mailingowej.
- Jeśli chcesz podzielić się opinią na temat implementacji w Chrome, zgłoś błąd w Chromium.
Poznaj wszystkie wbudowane interfejsy API AI, które korzystają z modeli, w tym Gemini Nano i innych modeli eksperckich, w przeglądarce.