API Trình viết lại

Ngày xuất bản: 22 tháng 10 năm 2025

Người giải thích Web Phần mở rộng Trạng thái của Chrome Mục đích
GitHub Bản dùng thử theo nguyên gốc Dùng thử ban đầu Bản dùng thử theo nguyên gốc Dùng thử ban đầu Xem Mục đích thử nghiệm

Rewriter API giúp bạn sửa đổi và tái cấu trúc văn bản. API này và Writer API là một phần của đề xuất Writing Assistance APIs.

Các API này có thể giúp bạn cải thiện nội dung do người dùng tạo.

Trường hợp sử dụng

Tinh chỉnh văn bản hiện có bằng cách viết dài hơn hoặc ngắn hơn, hoặc thay đổi giọng điệu. Ví dụ: bạn có thể:

  • Viết lại một email ngắn để email đó nghe có vẻ lịch sự và trang trọng hơn.
  • Đề xuất chỉnh sửa bài đánh giá của khách hàng để giúp những khách hàng khác hiểu ý kiến phản hồi hoặc loại bỏ nội dung độc hại.
  • Định dạng nội dung để đáp ứng kỳ vọng của một số đối tượng.

Bạn không thấy trường hợp sử dụng của mình? Hãy tham gia chương trình xem trước sớm để chia sẻ ý kiến phản hồi.

Bắt đầu

Tham gia dùng thử ban đầu Rewriter API, chạy trong Chrome 137 đến 148.

Xem các yêu cầu về phần cứng

Các yêu cầu sau đây áp dụng cho nhà phát triển và người dùng vận hành các tính năng bằng các API này trong Chrome. Các trình duyệt khác có thể có các yêu cầu vận hành khác.

Language DetectorTranslator APIs hoạt động trong Chrome trên máy tính. Các API này không hoạt động trên thiết bị di động.

Prompt API, Summarizer API, Writer API, Rewriter APIProofreader API hoạt động trong Chrome khi đáp ứng các điều kiện sau:

  • Hệ điều hành: Windows 10 hoặc 11; macOS 13 trở lên (Ventura trở lên); Linux; hoặc ChromeOS (từ Nền tảng 16389.0.0 trở lên) trên các thiết bị Chromebook Plus. Chrome dành cho Android, iOS và ChromeOS trên các thiết bị không phải Chromebook Plus hiện chưa được các API sử dụng Gemini Nano hỗ trợ.
  • Bộ nhớ: Ít nhất 22 GB dung lượng trống trên ổ đĩa chứa hồ sơ Chrome của bạn.
  • GPU hoặc CPU: Các mô hình tích hợp có thể chạy bằng GPU hoặc CPU.
    • GPU: Hơn 4 GB VRAM.
    • CPU: 16 GB RAM trở lên và 4 lõi CPU trở lên.
  • Mạng: Dữ liệu không giới hạn hoặc kết nối không tính phí.

Kích thước chính xác của Gemini Nano có thể thay đổi khi trình duyệt cập nhật mô hình. Để xác định kích thước hiện tại, hãy truy cập vào chrome://on-device-internals.

Đăng ký dùng thử ban đầu

Rewriter API có sẵn trong một bản dùng thử ban đầu chung với Writer API. Cách bắt đầu sử dụng các API này:

  1. Xác nhận Chính sách về các hành vi bị cấm khi sử dụng AI tạo sinh của Google.
  2. Chuyển đến bản dùng thử ban đầu Rewriter API.
  3. Nhấp vào Register (Đăng ký) và điền thông tin vào biểu mẫu. Trong trường Web origin (Nguồn gốc web), hãy cung cấp nguồn gốc hoặc mã nhận dạng phần mở rộng của bạn, chrome-extension://YOUR_EXTENSION_ID.
  4. Để gửi, hãy nhấp vào Register (Đăng ký).
  5. Sao chép mã thông báo được cung cấp rồi thêm mã thông báo đó vào mọi trang web tham gia trên nguồn gốc của bạn hoặc đưa mã thông báo đó vào tệp kê khai phần mở rộng.
  6. Bắt đầu sử dụng Rewriter API.

Tìm hiểu thêm về cách bắt đầu dùng thử ban đầu.

Thêm tính năng hỗ trợ cho localhost

Để truy cập vào Rewriter API trên localhost, hãy sử dụng cờ Chrome:

  1. Đặt chrome://flags/#optimization-guide-on-device-model thành Enabled (Đã bật).
  2. Đặt các cờ sau thành Enabled (Đã bật) hoặc Enabled Multilingual (Đã bật đa ngôn ngữ):
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. Nhấp vào Relaunch (Khởi chạy lại) hoặc khởi động lại Chrome.

Sử dụng Rewriter API

Trước tiên, hãy chạy tính năng phát hiện để xem trình duyệt có hỗ trợ các API này hay không.

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

Rewriter API và tất cả các API AI tích hợp khác đều được tích hợp trong trình duyệt. Gemini Nano được tải xuống riêng biệt vào lần đầu tiên bất kỳ trang web nào sử dụng API AI tích hợp. Trên thực tế, nếu người dùng đã tương tác với một API tích hợp, thì họ đã tải mô hình xuống trình duyệt của mình.

Để xác định xem mô hình đã sẵn sàng sử dụng hay chưa, hãy gọi hàm không đồng bộ Rewriter.availability(). Nếu phản hồi cho availability()downloadable, hãy theo dõi tiến trình tải xuống và thông báo cho người dùng, vì quá trình tải xuống có thể mất thời gian.

const availability = await Rewriter.availability();

Để kích hoạt quá trình tải xuống mô hình và bắt đầu trình viết lại, hãy kiểm tra xem người dùng đã kích hoạt hay chưa và gọi hàm Rewriter.create().

const rewriter = await Rewriter.create({
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

Hàm API

Hàm create() cho phép bạn định cấu hình một đối tượng trình viết lại mới. Hàm này nhận một đối tượng options không bắt buộc có các tham số sau:

  • tone: Giọng văn có thể đề cập đến phong cách, tính cách hoặc thái độ của nội dung. Bạn có thể đặt giá trị thành more-formal, as-is (mặc định) hoặc more-casual.
  • format: Định dạng đầu ra, với các giá trị được phép là as-is (mặc định), markdown, và plain-text.
  • length: Độ dài của đầu ra, với các giá trị được phép là shorter, as-is (mặc định) và longer.
  • sharedContext: Khi viết lại nhiều phần nội dung, ngữ cảnh được chia sẻ có thể giúp mô hình tạo nội dung phù hợp hơn với kỳ vọng của bạn.

Ví dụ sau đây minh hoạ cách khởi tạo một đối tượng 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);
  });
}

Chỉ định ngôn ngữ dự kiến

Rewriter API hỗ trợ nhiều ngôn ngữ. Đặt ngôn ngữ đầu vào, đầu ra, và ngữ cảnh dự kiến khi tạo phiên. Điều này cho phép trình duyệt từ chối yêu cầu nếu trình duyệt không thể hỗ trợ một tổ hợp ngôn ngữ cụ thể.

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."
});

Bắt đầu viết lại

Có hai cách để xuất nội dung từ mô hình: đầu ra dựa trên yêu cầu và phát trực tuyến.

Đầu ra dựa trên yêu cầu

Đối với đầu ra dựa trên yêu cầu (hoặc "không phát trực tuyến"), mô hình sẽ đợi toàn bộ dữ liệu đầu vào được tạo, xử lý dữ liệu đầu vào đó dưới dạng một tổng thể, rồi tạo ra đầu ra.

Để nhận đầu ra dựa trên yêu cầu, hãy gọi hàm không đồng bộ rewrite(). Bạn phải đưa vào văn bản ban đầu mà bạn muốn viết lại. Bạn có thể thêm một tùy chọn context để cung cấp thông tin cơ bản về mô hình. Điều này có thể giúp mô hình đáp ứng tốt hơn kỳ vọng của bạn về đầu ra.

// 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."
});

Phát trực tuyến đầu ra viết lại

Tính năng phát trực tuyến cung cấp kết quả theo thời gian thực. Đầu ra cập nhật liên tục khi dữ liệu đầu vào được thêm và điều chỉnh.

Để nhận trình viết lại phát trực tuyến, hãy gọi hàm rewriteStreaming() và lặp lại các phân đoạn văn bản có sẵn trong luồng. Bạn có thể thêm không bắt buộc context để cung cấp thông tin cơ bản về mô hình. Điều này có thể giúp mô hình đáp ứng tốt hơn kỳ vọng của bạn về đầu ra.

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);
}

Chia sẻ ngữ cảnh cho nhiều tác vụ

Bạn có thể muốn sử dụng rewriter để tạo nhiều phần nội dung. Trong trường hợp này, bạn nên thêm sharedContext. Ví dụ: bạn có thể muốn giúp người đánh giá đưa ra ý kiến phản hồi tốt hơn trong phần bình luận.

// 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);
}

Sử dụng lại trình viết lại

Bạn có thể sử dụng cùng một trình viết lại để chỉnh sửa nhiều phần nội dung. Điều này có thể đặc biệt hữu ích nếu bạn thêm trình viết lại vào một công cụ bình luận hoặc phản hồi để giúp người viết đưa ra ý kiến phản hồi hữu ích và hiệu quả.

// 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",
    })
  ),
);

Dừng trình viết lại

Để kết thúc quy trình viết lại, hãy huỷ bộ điều khiển và huỷ 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();

Bản minh hoạ

Chính sách về quyền, iframe và Web Worker

Theo mặc định, Rewriter API chỉ có sẵn cho các cửa sổ cấp cao nhất và iframe cùng nguồn gốc của chúng. Bạn có thể uỷ quyền truy cập vào API cho iframe nhiều nguồn gốc bằng cách sử dụng thuộc tính allow="" của Chính sách về quyền:

<!--
  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>

Rewriter API không có trong Web Worker. Điều này là do sự phức tạp của việc thiết lập một tài liệu có trách nhiệm cho mỗi worker để kiểm tra trạng thái của Chính sách về quyền.

Tương tác và chia sẻ ý kiến phản hồi

Writer API và Rewriter API đang được thảo luận tích cực và có thể thay đổi trong tương lai. Nếu bạn dùng thử API này và có ý kiến phản hồi, chúng tôi rất mong được biết ý kiến của bạn.

Khám phá tất cả các API AI tích hợp sử dụng mô hình, bao gồm Gemini Nano và các mô hình chuyên gia khác trong trình duyệt.