Tóm tắt trong Chrome bằng AI tích hợp

Ngày xuất bản: 11 tháng 11 năm 2024

Hãy tưởng tượng bạn có thể cung cấp cho người dùng khả năng tóm tắt các bài viết dài, tài liệu phức tạp hoặc thậm chí là cuộc trò chuyện sôi nổi thành bản tóm tắt ngắn gọn và sâu sắc.

Bạn có thể sử dụng API Tóm tắt để tạo nhiều loại bản tóm tắt với nhiều độ dài và định dạng, chẳng hạn như câu, đoạn văn, danh sách dấu đầu dòng, v.v. Chúng tôi tin rằng API này sẽ hữu ích trong các trường hợp sau:

  • Tóm tắt các ý chính của một bài viết hoặc cuộc trò chuyện.
  • Đề xuất tiêu đề và tiêu mục cho bài viết.
  • Tạo bản tóm tắt ngắn gọn và đầy đủ thông tin về một văn bản dài.
  • Tạo đoạn giới thiệu cho một cuốn sách dựa trên bài đánh giá sách.

Phạm vi cung cấp

Đăng ký bản dùng thử theo nguyên gốc

Để bắt đầu sử dụng API Tóm tắt, hãy làm theo các bước 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. Truy cập vào bản dùng thử theo nguyên gốc Summarizer 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ã tiện ích, 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ã đó vào mọi trang web trên nguồn gốc hoặc tệp của Tiện ích mà bạn muốn bật bản dùng thử.
  6. Bắt đầu sử dụng API Tóm tắt.

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

Các giới hạn trong thời gian dùng thử nguồn gốc

Trong giai đoạn thử nghiệm theo nguyên gốc, Summarizer API chỉ hỗ trợ việc tóm tắt văn bản bằng tiếng Anh, vì chất lượng của mô hình chỉ được kiểm thử kỹ lưỡng trên nội dung bằng tiếng Anh. Chúng tôi dự định sẽ gỡ bỏ giới hạn này sau khi kiểm thử các ngôn ngữ bổ sung về chất lượng và độ an toàn, đồng thời API được cung cấp rộng rãi.

Thêm tính năng hỗ trợ cho máy chủ cục bộ

Để truy cập vào Summarizer API trên localhost trong thời gian chạy bản dùng thử theo nguyên gốc, bạn phải có Chrome Canary. Sau đó, hãy làm theo các bước sau:

  1. Mở Chrome Canary trên một trong các nền tảng sau: Windows, Mac hoặc Linux.
  2. Chuyển đến chrome://flags/#summarization-api-for-gemini-nano.
  3. Chọn Bật.
  4. Nhấp vào Chạy lại hoặc khởi động lại Chrome.

Sử dụng API Tóm tắt

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

if ('ai' in self && 'summarizer' in self.ai) {
  // The Summarizer API is supported.
}

Tải mô hình xuống

Summarizer API sử dụng một mô hình AI mạnh mẽ được huấn luyện để tạo bản tóm tắt chất lượng cao. Mặc dù API được tích hợp vào Chrome, nhưng mô hình sẽ được tải xuống riêng trong lần đầu tiên một trang web sử dụng API.

Để xác định xem mô hình đã sẵn sàng để sử dụng hay chưa, hãy gọi hàm ai.summarizer.capabilities() không đồng bộ. Phương thức này trả về một đối tượng AISummarizerCapabilities có trường available có thể nhận ba giá trị:

  • no: Trình duyệt hiện tại hỗ trợ API Tóm tắt, nhưng hiện không thể sử dụng API này. Điều này có thể là do một số lý do, chẳng hạn như không có đủ dung lượng ổ đĩa để tải mô hình xuống.
  • readily: Trình duyệt hiện tại hỗ trợ API Tóm tắt và bạn có thể sử dụng API này ngay lập tức.
  • after-download: Trình duyệt hiện tại hỗ trợ API Tóm tắt, nhưng trước tiên, trình duyệt cần tải mô hình xuống.

Để kích hoạt quá trình tải mô hình xuống và tạo trình tóm tắt, hãy gọi hàm ai.summarizer.create() không đồng bộ. Nếu phản hồi cho capabilities()after-download, thì tốt nhất bạn nên theo dõi tiến trình tải xuống. Bằng cách này, bạn có thể thông báo cho người dùng trong trường hợp quá trình tải xuống mất nhiều thời gian.

const summarizer = await ai.summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
    });
  }
});

Hàm API

Hàm create() cho phép bạn định cấu hình một đối tượng tóm tắt mới theo nhu cầu của mình. Phương thức này nhận một đối tượng options không bắt buộc với các tham số sau:

  • sharedContext: Ngữ cảnh dùng chung bổ sung có thể giúp trình tóm tắt.
  • type: Loại tóm tắt, với các giá trị được phép là key-points (mặc định), tl;dr, teaserheadline.
  • format: Định dạng của bản tóm tắt, với các giá trị được phép là markdown (mặc định) và plain-text.
  • length: Độ dài của bản tóm tắt, với các giá trị được phép là short, medium (mặc định) và long. Ý nghĩa của các độ dài này thay đổi tuỳ thuộc vào type được yêu cầu. Ví dụ: trong quá trình triển khai của Chrome, bản tóm tắt ngắn về các điểm chính bao gồm 3 dấu đầu dòng và bản tóm tắt ngắn là một câu; bản tóm tắt dài về các điểm chính là 7 dấu đầu dòng và bản tóm tắt dài là một đoạn văn.

Ví dụ sau đây minh hoạ cách khởi tạo trình tóm tắt.

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
};

const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
  // The Summarizer API isn't usable.
  return;
}
if (available === 'readily') {
  // The Summarizer API can be used immediately .
  summarizer = await self.ai.summarizer.create(options);
} else {
  // The Summarizer API can be used after the model is downloaded.
  summarizer = await self.ai.summarizer.create(options);
  summarizer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
  await summarizer.ready;
}

Chạy trình tóm tắt

Có hai cách để chạy trình tóm tắt: truyền trực tuyến và không truyền trực tuyến.

Tóm tắt không phát trực tuyến

Với tính năng tóm tắt không theo luồng, mô hình sẽ xử lý toàn bộ dữ liệu đầu vào rồi tạo ra kết quả.

Để nhận bản tóm tắt không theo luồng, hãy gọi hàm summarize() không đồng bộ của trình tóm tắt. Đối số đầu tiên của hàm là văn bản mà bạn muốn tóm tắt. Đối số thứ hai (không bắt buộc) là một đối tượng có trường context. Trường này cho phép bạn thêm thông tin chi tiết về bối cảnh có thể cải thiện bản tóm tắt.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

Tóm tắt nội dung phát trực tuyến

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

Để nhận bản tóm tắt trực tuyến, hãy gọi hàm summarizeStreaming() của trình tóm tắt. Sau đó, lặp lại các đoạn văn bản có sẵn trong luồng.

let result = '';
let previousChunk = '';
for await (const chunk of stream) {
  const newChunk = chunk.startsWith(previousChunk)
      ? chunk.slice(previousChunk.length) : chunk;
  console.log(newChunk);
  result += newChunk;
  previousChunk = chunk;
}
console.log(result);

summarizeStreaming() trả về một ReadableStream, trong đó các phân đoạn phản hồi được tạo lần lượt dựa trên nhau. Điều này có nghĩa là mỗi phản hồi chứa toàn bộ nội dung tóm tắt được tạo cho đến thời điểm đó, chứ không chỉ phân đoạn tiếp theo. Đây không phải là hành vi dự kiến.

Chúng tôi dự định điều chỉnh cho phù hợp với các API truyền trực tuyến khác trên nền tảng, trong đó các phân đoạn là các phần liên tiếp của một luồng dài duy nhất. Hiện tại, để đạt được hành vi dự kiến, bạn có thể triển khai những nội dung sau:

let result = '';
let previousLength = 0;
for await (const segment of stream) {
  const newContent = segment.slice(previousLength);
  console.log(newContent);
  previousLength = segment.length;  
  result += newContent;
}
console.log(result);

Bản minh hoạ

Bạn có thể dùng thử API Tóm tắt trong Summarizer API Playground (Sân chơi API Tóm tắt).

Nỗ lực chuẩn hoá

Chúng tôi đang nỗ lực chuẩn hoá API Tóm tắt để đảm bảo khả năng tương thích trên nhiều trình duyệt.

Đề xuất API của chúng tôi đã nhận được sự hỗ trợ của cộng đồng và đã chuyển sang Nhóm cộng đồng ươm tạo web của W3C để thảo luận thêm. Nhóm Chrome đã yêu cầu ý kiến phản hồi từ Nhóm cấu trúc kỹ thuật W3C, đồng thời yêu cầu MozillaWebKit đưa ra quan điểm về các tiêu chuẩn.

Tham gia và chia sẻ ý kiến phản hồi

Bắt đầu kiểm thử API Tóm tắt ngay bằng cách tham gia dùng thử phiên bản gốc và chia sẻ ý kiến phản hồi của bạn. Ý kiến đóng góp của bạn có thể tác động trực tiếp đến cách chúng tôi xây dựng và triển khai các phiên bản trong tương lai của API này cũng như tất cả các API AI tích hợp.