API Trình ghi

Xuất bản: Ngày 20 tháng 5 năm 2025

Video giải thích Web Phần mở rộng Trạng thái của Chrome Intent
GitHub Bản dùng thử theo nguyên gốc Bản dùng thử theo nguyên gốc Bản dùng thử theo nguyên gốc Bản dùng thử theo nguyên gốc Xem Ý định thử nghiệm

Writer API giúp bạn tạo nội dung mới tuân thủ một nhiệm vụ viết cụ thể. Writer API và Rewriter API là một phần của đề xuất Writing Assistance APIs.

Những API đối tác 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

Viết nội dung mới dựa trên ý tưởng ban đầu và bối cảnh (không bắt buộc). Bạn có thể dùng thông tin này để:

  • Hỗ trợ người dùng viết mọi loại nội dung, chẳng hạn như bài đánh giá, bài đăng trên blog hoặc email.
  • Giúp người dùng viết yêu cầu hỗ trợ hiệu quả hơn.
  • Soạn thảo phần giới thiệu cho một loạt mẫu công việc để nắm bắt rõ hơn một số kỹ năng nhất định.

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

Bắt đầu

Tham gia bản dùng thử theo nguyên gốc của Writer API, chạy trong Chrome 137 đến 142.

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

Nhà phát triển và người dùng vận hành các tính năng bằng những API này trong Chrome phải đáp ứng các yêu cầu sau. Các trình duyệt khác có thể có các yêu cầu khác về hoạt động.

Language Detector API và Translator API 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 và Rewriter 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); hoặc Linux. Chrome dành cho Android, iOS và ChromeOS chưa được các API sử dụng Gemini Nano hỗ trợ.
  • Bộ nhớ: Ít nhất 22 GB trên ổ đĩa chứa hồ sơ Chrome của bạn.
  • GPU: VRAM phải lớn hơn 4 GB.
  • Mạng: Gói dữ liệu không giới hạn hoặc kết nối không đo lượng dữ liệu.

Kích thước chính xác của Gemini Nano có thể thay đổi một chút. Để biết kích thước hiện tại, hãy truy cập vào chrome://on-device-internals rồi chuyển đến phần Trạng thái mô hình. Mở Đường dẫn tệp được liệt kê để xác định kích thước mô hình.

Đăng ký dùng thử nguồn gốc

Writer API có trong bản dùng thử theo nguyên gốc chung với Rewriter API. Để bắt đầu sử dụng các API này, hãy làm như sau:

  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ử theo nguyên gốc Writer API.
  3. Nhấp vào Đăng ký rồi điền thông tin vào biểu mẫu. Trong trường Nguồn gốc web, hãy cung cấp nguồn gốc hoặc mã nhận dạng tiện ích của bạn, chrome-extension://YOUR_EXTENSION_ID.
  4. Để gửi, hãy nhấp vào Đă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 Tiện ích.
  6. Bắt đầu sử dụng Writer API và Rewriter API.

Tìm hiểu thêm về cách bắt đầu dùng thử nguồn gốc.

Thêm hỗ trợ cho localhost

Để truy cập vào Writer và Rewriter API trên localhost trong thời gian dùng thử theo nguyên gốc, bạn phải cập nhật Chrome lên phiên bản mới nhất. Sau đó, thực hiện theo những bước sau:

  1. Chuyển đến chrome://flags/#writer-api-for-gemini-nano.
  2. Chọn Bật.
  3. Nhấp vào Chạy lại hoặc khởi động lại Chrome.

Sử dụng Writer 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 ('Writer' in self) {
  // The Writer API is supported.
}

Writer API và tất cả các API tích hợp sẵn khác về AI đề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 một API AI tích hợp. Trên thực tế, nếu đã tương tác với một API tích hợp, thì người dùng đã tải mô hình xuống trình duyệt của họ.

Để 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ộ Writer.availability(). Hàm này trả về một chuỗi có thể nhận 4 giá trị có thể có:

  • unavailable: Trình duyệt hỗ trợ Writer API nhưng hiện không dùng được. Điều này có thể là do một số nguyên nhân, chẳng hạn như không đủ dung lượng ổ đĩa để tải mô hình xuống.
  • available: Trình duyệt hỗ trợ Writer API và bạn có thể sử dụng ngay.
  • downloadable: Trình duyệt hỗ trợ Writer API, nhưng trước tiên cần tải mô hình xuống.
  • downloading: Trình duyệt hỗ trợ Writer API và hiện đang tải mô hình xuống.

Để kích hoạt quá trình tải mô hình xuống và bắt đầu trình ghi, hãy gọi hàm Writer.create(). 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 writer = await Writer.create({
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

Các hàm API

Hàm create() cho phép bạn định cấu hình một đối tượng ghi mới. Phương thức này lấy một đối tượng options không bắt buộc với 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 formal, neutral (mặc định) hoặc casual.
  • format: Định dạng đầu ra, với các giá trị được phép là markdown (mặc định) và plain-text.
  • length: Độ dài của đầu ra, với các giá trị được phép là short, medium (mặc định) và long.
  • sharedContext: Khi viết nhiều đầu ra, một ngữ cảnh chung 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 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}%`);
      });
    }
  });
}

Bắt đầu viết

Có hai cách để xuất nội dung viết từ mô hình: không truyền trực tuyến và truyền trực tuyến.

Đầu ra không phải là luồng

Với tính năng ghi không truyền trực tuyến, mô hình sẽ xử lý toàn bộ dữ liệu đầu vào rồi tạo ra dữ liệu đầu ra.

Để nhận được đầu ra không truyền trực tuyến, hãy gọi hàm không đồng bộ write(). Bạn phải đưa ra một câu lệnh cho nội dung bạn muốn viết. Bạn có thể thêm context (không bắt buộc) để 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 mong đợi của bạn về kết quả đầu ra.

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

Đầu ra ghi luồng

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

Để lấy một trình ghi truyền phát trực tiếp, hãy gọi hàm writeStreaming() và lặp lại các đoạn văn bản có sẵn trong luồng. Bạn có thể thêm context (không bắt buộc) để 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 mong đợi của bạn về kết quả đầu ra.

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

Chia sẻ bối cảnh cho nhiều việc cần làm

Bạn có thể muốn dùng writer để tạo nhiều 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 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);
}

Sử dụng lại tác giả

Bạn có thể sử dụng cùng một người viết để tạo nhiều nội dung.

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

Ngừng ghi

Để kết thúc quy trình ghi, hãy huỷ bộ điều khiển và huỷ trình ghi.

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

Bản minh hoạ

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

Writer 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 nhận được ý kiến của bạn.

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