Data publikacji: 20 maja 2025 r.
Wyjaśnienie | Sieć | Rozszerzenia | Stan Chrome | Intencja |
---|---|---|---|---|
GitHub | Wyświetl | Zamiar przeprowadzenia eksperymentu |
Interfejs Writer API pomaga tworzyć nowe treści zgodne z określonym zadaniem pisania. Interfejs Writer API i Rewriter API są częścią propozycji interfejsów API do pomocy w pisaniu.
Te interfejsy API partnerów mogą pomóc Ci ulepszyć treści tworzone przez użytkowników.
Przypadki użycia
Twórz nowe treści na podstawie początkowego pomysłu i opcjonalnego kontekstu. Można ich używać do:
- Pomagaj użytkownikom pisać dowolne treści, takie jak opinie, posty na blogu czy e-maile.
- Pomóż użytkownikom pisać lepsze zgłoszenia do pomocy.
- Przygotuj wstęp do serii próbek pracy, aby lepiej zaprezentować określone umiejętności.
Nie widzisz swojego przypadku użycia? Dołącz do programu wcześniejszego dostępu, aby podzielić się swoją opinią.
Rozpocznij
Dołącz do wersji próbnej interfejsu Writer API, która będzie działać w Chrome w wersjach od 137 do 142.
Sprawdzanie wymagań sprzętowych
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 i Rewriter API działają w Chrome, gdy spełnione są te warunki:
- System operacyjny: Windows 10 lub 11, macOS 13 lub nowszy (Ventura i nowsze) lub Linux. Interfejsy API, które korzystają z Gemini Nano, nie są jeszcze obsługiwane w Chrome na Androida, iOS i ChromeOS.
- Pamięć: co najmniej 22 GB wolnego miejsca na woluminie zawierającym profil Chrome.
- GPU: co najmniej 4 GB pamięci VRAM.
- Sieć: nieograniczona transmisja danych lub połączenie bez limitu.
Dokładny rozmiar Gemini Nano może się różnić, ponieważ przeglądarka aktualizuje model. Aby sprawdzić aktualny rozmiar, otwórz chrome://on-device-internals
i przejdź do sekcji Stan modelu. Otwórz podaną ścieżkę do pliku, aby określić rozmiar modelu.
Rejestracja w okresie próbnym
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ź znajomość zasad Google dotyczących niedozwolonych zastosowań generatywnej AI.
- Otwórz testowanie origin interfejsu Writer API.
- Kliknij Zarejestruj się i wypełnij formularz. W polu Źródło internetowe podaj źródło lub identyfikator rozszerzenia,
chrome-extension://YOUR_EXTENSION_ID
. - Aby przesłać zgłoszenie, kliknij Zarejestruj.
- Skopiuj podany token i dodaj go do każdej uczestniczącej w programie strony internetowej w swojej domenie lub umieść go w pliku manifestu rozszerzenia.
- Zacznij korzystać z interfejsów Writer i Rewriter API.
Dowiedz się więcej o tym, jak zacząć korzystać z okresów próbnych.
Dodawanie obsługi hosta lokalnego
Aby uzyskać dostęp do interfejsów API Writer i Rewriter na hoście lokalnym podczas testowania 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 za pierwszym razem, gdy dowolna witryna używa wbudowanego interfejsu AI API. 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 wartości:
unavailable
: przeglądarka obsługuje interfejs Writer API, ale nie można go obecnie używać. Może to wynikać z różnych przyczyn, np. z niewystarczającej ilości miejsca na dysku, aby pobrać model.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 najpierw musi pobrać model.downloading
: przeglądarka obsługuje interfejs Writer API i obecnie pobiera model.
Aby wywołać pobieranie modelu i uruchomić moduł pisania, wywołaj funkcję Writer.create()
. Jeśli odpowiedź na pytanie availability()
brzmiała downloadable
, sprawdź postęp pobierania i poinformuj o nim 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 zapisu. Przyjmuje opcjonalny obiekt options
z tymi parametrami:
tone
: Ton wypowiedzi może odnosić się do stylu, charakteru lub postawy treści. Wartość może być ustawiona naformal
,neutral
(domyślnie) lubcasual
.format
: formatowanie wyjściowe z dozwolonymi wartościamimarkdown
(domyślnie) iplain-text
.length
: długość wygenerowanego tekstu. Dozwolone wartości toshort
,medium
(domyślna) ilong
.sharedContext
: podczas generowania wielu wyników wspólny kontekst może pomóc modelowi tworzyć treści lepiej dopasowane 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.
const writer = await Writer.create({
...options,
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
}
Zacznij pisać
Istnieją 2 sposoby generowania tekstu przez model: bez przesyłania strumieniowego i z przesyłaniem strumieniowym.
Dane wyjściowe inne niż strumieniowe
W przypadku zapisu bez przesyłania strumieniowego model przetwarza dane wejściowe w całości, a następnie generuje dane wyjściowe.
Aby uzyskać dane wyjściowe bez przesyłania strumieniowego, wywołaj asynchroniczną funkcję write()
. Musisz podać prompta dotyczącego treści, które chcesz napisać. Możesz dodać opcjonalny context
, aby podać modelowi informacje o kontekście, co może pomóc mu lepiej spełnić Twoje oczekiwania dotyczące wyniku.
// 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 zapisu strumienia
Strumieniowanie zapewnia wyniki w czasie rzeczywistym. Dane wyjściowe są aktualizowane na bieżąco w miarę dodawania i dostosowywania danych wejściowych.
Aby uzyskać narzędzie do pisania strumieniowego, wywołaj funkcję writeStreaming()
i iteruj po dostępnych segmentach tekstu w strumieniu. Możesz dodać opcjonalny context
, aby podać modelowi informacje o kontekście, co może pomóc mu lepiej spełnić Twoje oczekiwania dotyczące wyniku.
// 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 wielu zadań
Możesz użyć writer
, aby wygenerować wiele 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 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 narzędzia do pisania
Możesz poprosić tego samego autora o utworzenie wielu 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 pisania, przerwij działanie kontrolera i zniszcz narzędzie do pisania.
// 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
Angażowanie się i przesyłanie opinii
Interfejsy Writer API i Rewriter API są obecnie omawiane i mogą ulec zmianie w przyszłości. Jeśli wypróbujesz ten interfejs API i chcesz podzielić się opinią, chętnie ją poznamy.
- Przeczytaj wyjaśnienie, zadawaj pytania i bierz udział w dyskusji.
- Sprawdź wdrożenie w Chrome na stronie Stan Chrome.
- Dołącz do programu wcześniejszego dostępu, aby jako pierwszy(-a) poznać nowe interfejsy API i uzyskać dostęp do naszej listy mailingowej.
- Jeśli masz uwagi na temat implementacji 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.