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à đề 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
- Tham gia bản dùng thử theo nguyên gốc Summarizer API, chạy từ Chrome 131 đến Chrome 136, để kiểm thử API với người dùng thực trong môi trường sản xuất. Bản dùng thử theo nguồn gốc sẽ bật tính năng này cho tất cả người dùng trên nguồn gốc của bạn trên Chrome. Tìm hiểu cách bắt đầu sử dụng bản dùng thử theo nguyên gốc.
- Mặc dù có thể có giới hạn sử dụng, nhưng bạn có thể tích hợp các tính năng này để kiểm thử trực tiếp và thu thập ý kiến phản hồi của người dùng. Mục tiêu là để thông báo cho các lần lặp lại trong tương lai của API này, khi chúng tôi nỗ lực mở rộng phạm vi cung cấp.
- Hãy làm theo cách triển khai của chúng tôi trong phần Trạng thái Chrome.
- Đề xuất API tóm tắt là một phần của bộ API viết và bạn có thể thảo luận về đề xuất này.
- Tham gia chương trình dùng thử sớm để có cái nhìn sớm về các API AI mới, tích hợp sẵn và quyền tham gia thảo luận về danh sách gửi thư của chúng tôi.
Giới hạn trong thời gian dùng thử nguồn gốc
Trong thời gian chạy bản dùng thử theo nguyên gốc, API tóm tắt chỉ hỗ trợ việc tóm tắt các văn bản tiếng Anh, vì chất lượng mô hình chỉ được kiểm thử kỹ lưỡng đối với nội dung tiếng Anh. Chúng tôi dự định sẽ gỡ bỏ giới hạn này sau khi thử nghiệm các ngôn ngữ khác về chất lượng và độ an toàn, đồng thời được cung cấp rộng rãi API này.
Sử dụng tóm tắt API
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ợ tóm tắt API 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. Có thể vì một số lý do, chẳng hạn như dung lượng ổ đĩa không đủ để 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()
là 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 lấy 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
: Kiểu tóm tắt, với các giá trị được phépkey-points
(mặc định),tl;dr
,teaser
vàheadline
.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 sẽ khác nhau tuỳ thuộc vàotype
đượ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
Cung cấp tính năng tóm tắt nội dung truyền trực tuyến theo thời gian thực. Dữ liệu đầu ra sẽ 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 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à những phần liên tiếp của một luồng dài. 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 Mozilla và WebKit đư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.
- Để gửi ý kiến phản hồi về việc triển khai Chrome, hãy gửi báo cáo lỗi hoặc yêu cầu về tính năng.
- Thảo luận về thiết kế API Tóm tắt trên GitHub bằng cách bình luận về một Vấn đề hiện có hoặc mở một vấn đề mới.
- Tham gia nỗ lực xây dựng tiêu chuẩn bằng cách tham gia Nhóm cộng đồng về ươm tạo web.