Opublikowano: 22 października 2025 r.
| Wyjaśnienie | Sieć | Rozszerzenia | Stan Chrome | Intencja |
|---|---|---|---|---|
| GitHub | Wyświetl | Intencja eksperymentu |
Interfejs Rewriter API pomaga w poprawianiu i restrukturyzacji tekstu. Ten interfejs API i interfejs Writer API są częścią propozycji interfejsów Writing Assistance APIs.
Te interfejsy API mogą pomóc w ulepszaniu treści tworzonych przez użytkowników.
Przypadki użycia
Ulepszaj istniejący tekst, wydłużając go, skracając lub zmieniając jego ton. Możesz na przykład:
- zmienić krótki e-mail, aby brzmiał bardziej uprzejmie i formalnie;
- sugerować zmiany w opiniach klientów, aby pomóc innym klientom zrozumieć opinię lub usunąć toksyczne treści;
- formatować treści tak, aby spełniały oczekiwania określonych odbiorców.
Nie widzisz swojego przypadku użycia? Dołącz do programu wcześniejszego dostępu , aby podzielić się swoją opinią.
Rozpocznij
Dołącz do testowania origin interfejsu Rewriter API, które będzie prowadzone w Chrome w wersjach od 137 do 148.
Sprawdź wymagania sprzętowe
Deweloperzy i użytkownicy, którzy korzystają z funkcji używających tych interfejsów API w Chrome, muszą spełniać te wymagania. Inne przeglądarki mogą mieć inne wymagania dotyczące działania.
Interfejsy Language Detector API i Translator API działają w Chrome na komputerze. Te interfejsy API nie działają na urządzeniach mobilnych.
Interfejsy Prompt API, Summarizer API, Writer API, Rewriter API i Proofreader API działają w Chrome, gdy są spełnione te warunki:
- System operacyjny: Windows 10 lub 11; macOS 13 lub nowszy (Ventura i nowsze); Linux; ChromeOS (od platformy 16389.0.0) na Chromebookach Plus. Interfejsy API, które korzystają z modeli podstawowych, nie obsługują jeszcze Chrome na Androida, iOS i ChromeOS na urządzeniach innych niż Chromebooki Plus.
- Miejsce na dane: co najmniej 22 GB wolnego miejsca na dysku, na którym znajduje się profil Chrome.
- GPU lub CPU: wbudowane modele mogą działać z GPU lub CPU.
- GPU: ponad 4 GB pamięci VRAM.
- CPU: co najmniej 16 GB pamięci RAM i co najmniej 4 rdzenie CPU.
- Uwaga: interfejs Prompt API z wejściem audio wymaga GPU.
- Sieć: nieograniczona transmisja danych lub połączenie bez limitu danych. Połączenia Wi-Fi i Ethernet są domyślnie bez limitu danych, a połączenia komórkowe często są taryfowe.
Dokładny rozmiar Gemini Nano może się różnić w zależności od aktualizacji modelu w przeglądarce. Aby sprawdzić aktualny rozmiar, otwórz chrome://on-device-internals.
Zarejestruj się, aby skorzystać z testowania origin
Interfejs Rewriter API jest dostępny w ramach wspólnego testowania origin z interfejsem Writer API. Aby zacząć korzystać z tych interfejsów API:
- Otwórz stronę testowania origin interfejsu Rewriter API.
- Kliknij Zarejestruj się i wypełnij formularz. W polu Web origin (Źródło internetowe) podaj
swoje źródło lub
identyfikator rozszerzenia,
chrome-extension://YOUR_EXTENSION_ID. - Aby przesłać formularz, kliknij Zarejestruj się.
- Skopiuj podany token i dodaj go do każdej strony internetowej w Twoim źródle lub umieść go w manifeście rozszerzenia.
- Zacznij korzystać z interfejsu Rewriter API.
Dowiedz się więcej o pierwszych krokach z testowaniem origin.
Dodaj obsługę localhost
Aby uzyskać dostęp do interfejsu Rewriter API na localhost, użyj flag Chrome:
- Ustaw
chrome://flags/#optimization-guide-on-device-modelna Enabled (Włączone). - Ustaw te flagi na Enabled (Włączone) lub Enabled Multilingual (Włączone wielojęzyczne):
chrome://flags/#prompt-api-for-gemini-nano-multimodal-inputchrome://flags/#writer-api-for-gemini-nano
- Kliknij Uruchom ponownie lub uruchom ponownie Chrome.
Korzystanie z interfejsu Rewriter API
Najpierw uruchom wykrywanie funkcji, aby sprawdzić, czy przeglądarka obsługuje te interfejsy API.
if ('Rewriter' in self) {
// The Rewriter API is supported.
}
Interfejs Rewriter API i wszystkie inne wbudowane interfejsy AI API są zintegrowane z przeglądarką. Model jest pobierany osobno, gdy po raz pierwszy dowolna witryna używa wbudowanego interfejsu AI API. W praktyce, jeśli użytkownik korzystał już z wbudowanego interfejsu API, pobrał model do przeglądarki.
Aby sprawdzić, czy model jest gotowy do użycia, wywołaj asynchroniczną
Rewriter.availability() funkcję.
Jeśli odpowiedź na availability() to downloadable, nasłuchuj postępu pobierania i informuj o nim użytkownika, ponieważ pobieranie może potrwać.
const availability = await Rewriter.availability();
const rewriter = await Rewriter.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Funkcje interfejsu API
Funkcja create() umożliwia skonfigurowanie nowego obiektu rewriter. Przyjmuje ona opcjonalny obiekt options z tymi parametrami:
tone: Ton pisania może odnosić się do stylu, charakteru lub nastawienia treści. Wartość może być ustawiona namore-formal,as-is(domyślnie) lubmore-casual.format: formatowanie danych wyjściowych, z dozwolonymi wartościamias-is(domyślnie),markdowniplain-text.length: długość danych wyjściowych, z dozwolonymi wartościamishorter,as-is(domyślnie) ilonger.sharedContext: podczas zmiany wielu fragmentów treści, wspólny kontekst może pomóc modelowi w tworzeniu treści lepiej dopasowanych do Twoich oczekiwań.
Ten przykład pokazuje, jak zainicjować obiekt 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);
});
}
Przypisz oczekiwane języki
Interfejs Rewriter API obsługuje wiele języków. Podczas tworzenia sesji ustaw oczekiwane języki wejściowe, wyjściowe i kontekstowe. Dzięki temu przeglądarka może odrzucić żądanie, jeśli nie obsługuje określonej kombinacji języków.
const rewriter = await Rewriter.create({
tone: "more-formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to rewrite 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."
});
Zacznij zmieniać tekst
Istnieją 2 sposoby generowania treści przez model: dane wyjściowe oparte na żądaniach i strumieniowanie.
Dane wyjściowe oparte na żądaniach
W przypadku danych wyjściowych opartych na żądaniach (czyli „niestrumieniowych”) model czeka na wygenerowanie całych danych wejściowych, przetwarza je w całości, a następnie generuje dane wyjściowe.
Aby uzyskać dane wyjściowe oparte na żądaniach, wywołaj asynchroniczną funkcję rewrite(). Musisz podać tekst początkowy, który chcesz zmienić. Możesz dodać opcjonalny context, aby przekazać modelowi informacje o tle, co może pomóc mu lepiej spełnić Twoje oczekiwania dotyczące danych wyjściowych.
// Request-based
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."
});
Strumieniowe przesyłanie danych wyjściowych
Strumieniowanie zapewnia wyniki w czasie rzeczywistym. Dane wyjściowe są stale aktualizowane w miarę dodawania i dostosowywania danych wejściowych.
Aby uzyskać strumieniowy rewriter, wywołaj funkcję rewriteStreaming() i iteruj po dostępnych segmentach tekstu w strumieniu. Możesz dodać opcjonalny context, aby przekazać modelowi informacje o tle, co może pomóc mu lepiej spełnić Twoje oczekiwania dotyczące danych wyjściowych.
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);
}
Udostępnianie kontekstu na potrzeby wielu zadań
Możesz użyć rewriter, aby wygenerować wiele fragmentów treści. W takim przypadku warto dodać sharedContext. Możesz na przykład pomóc recenzentom w przekazywaniu lepszych opinii w komentarzach.
// 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);
}
Ponowne używanie rewriter
Możesz użyć tego samego rewriter, aby edytować wiele fragmentów treści. Może to być szczególnie przydatne, jeśli dodasz rewriter do narzędzia do przesyłania opinii lub komentowania, aby pomóc autorom w przekazywaniu przydatnych opinii.
// 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",
})
),
);
Zatrzymaj rewriter
Aby zakończyć proces zmiany tekstu, przerwij działanie kontrolera i zniszcz 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();
Prezentacja
Zasady dotyczące uprawnień, elementy iframe i Web Workers
Domyślnie interfejs Rewriter API jest dostępny tylko w oknach najwyższego poziomu i ich elementach iframe z tej samej domeny. Dostęp do interfejsu API można przekazać elementom iframe z innych domen
za pomocą atrybutu allow="" w zasadach dotyczących uprawnień:
<!--
The hosting site at https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Rewriter API by
setting the `allow="rewriter"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>
Interfejs Rewriter API nie jest dostępny w Web Workers. Wynika to ze złożoności ustanawiania odpowiedzialnego dokumentu dla każdego workera w celu sprawdzenia stanu zasad dotyczących uprawnień.
Zaangażuj się i prześlij opinię
Interfejsy Writer i Rewriter API są aktywnie omawiane i w przyszłości mogą ulec zmianie. Jeśli wypróbujesz ten interfejs API i chcesz podzielić się opinią, chętnie ją poznamy.
- Przeczytaj wyjaśnienie, zadaj pytania i weź udział w dyskusji.
- Sprawdź stan Chrome aby zobaczyć implementację interfejsu Rewriter API w Chrome.
- Jeśli masz uwagi na temat implementacji w Chrome, zgłoś błąd w Chromium.
- Dołącz do programu wcześniejszego dostępu, aby wcześniej poznać nowe interfejsy API i uzyskać dostęp do naszej listy mailingowej.
Poznaj wszystkie wbudowane interfejsy AI API, które korzystają z modeli podstawowych i eksperckich w przeglądarce.