Tạo chatbot cục bộ và có thể hoạt động ngoại tuyến bằng Prompt API

Ngày phát hành: 13 tháng 1 năm 2024

Đây là phần cuối cùng trong loạt bài gồm 3 phần về chatbot LLM. Các bài viết trước đã thảo luận về sức mạnh của LLM phía máy khách và hướng dẫn bạn cách thêm chatbot dựa trên WebLLM vào ứng dụng danh sách việc cần làm.

Một số thiết bị mới hơn được trang bị mô hình ngôn ngữ lớn và các mô hình AI khác ngay trên thiết bị. Chrome đã đề xuất tích hợp các API AI tích hợp sẵn vào trình duyệt, với một số API ở các giai đoạn phát triển khác nhau. Nhiều API trong số này đang trải qua quy trình tiêu chuẩn hoá để các trang web có thể sử dụng cùng một phương thức triển khai và mô hình để đạt được hiệu suất suy luận tối đa.

Prompt API là một trong những API AI như vậy. Để sử dụng tính năng này, nhà phát triển nên đăng ký tham gia chương trình xem trước sớm. Sau khi được chấp nhận, bạn sẽ nhận được hướng dẫn về cách bật Prompt API trong trình duyệt. Prompt API có trong một bản dùng thử theo nguyên gốc cho Tiện ích Chrome, vì vậy, bạn có thể kiểm thử API này cho người dùng tiện ích thực.

Quyền truy cập vào mô hình dùng chung

Prompt API hoạt động tương tự như WebLLM. Tuy nhiên, lần này không có lựa chọn mô hình nào (bạn phải sử dụng LLM đi kèm với trình duyệt). Khi bạn bật tính năng AI tích hợp, Chrome sẽ tải Gemini Nano xuống trình duyệt. Sau đó, bạn có thể chia sẻ mô hình này trên nhiều nguồn gốc và chạy với hiệu suất tối đa. Có một vấn đề trên GitHub mà một nhà phát triển đã yêu cầu thêm tính năng lựa chọn mô hình.

Thiết lập cuộc trò chuyện

Bạn có thể bắt đầu cuộc trò chuyện bằng tin nhắn theo cách tương tự, nhưng Prompt API cũng cung cấp cú pháp viết tắt để chỉ định lời nhắc của hệ thống. Bắt đầu phiên mô hình ngôn ngữ bằng phương thức create() trên thuộc tính self.ai.languageModel:

const session = await self.ai.languageModel.create({
  systemPrompt: `You are a helpful assistant. You will answer questions related
  to the user's to-do list. Decline all other requests not related to the user's
  todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
});

Trả lời câu hỏi đầu tiên

Thay vì có một đối tượng cấu hình để định cấu hình tính năng truyền trực tuyến, Prompt API cung cấp hai phương thức riêng biệt:

  • prompt() trả về chuỗi đầy đủ
  • promptStreaming() trả về một đối tượng có thể lặp lại không đồng bộ. Ngược lại với WebLLM, Prompt API phản hồi bằng phản hồi chuỗi đầy đủ, vì vậy, bạn không cần phải tự kết hợp các kết quả.

Nếu trước đây không có nguồn gốc nào kích hoạt quá trình tải mô hình xuống, thì yêu cầu đầu tiên của bạn có thể mất rất nhiều thời gian trong khi Gemini Nano được tải xuống trình duyệt. Nếu mô hình đã có sẵn, quá trình suy luận sẽ bắt đầu ngay lập tức.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

Bản minh hoạ

Tóm tắt

Việc tích hợp LLM vào ứng dụng có thể nâng cao đáng kể trải nghiệm người dùng. Mặc dù các dịch vụ đám mây cung cấp các mô hình chất lượng cao hơn và hiệu suất suy luận cao bất kể thiết bị của người dùng, nhưng các giải pháp trên thiết bị, chẳng hạn như WebLLM và Prompt API của Chrome, có thể hoạt động ngoại tuyến, cải thiện quyền riêng tư và tiết kiệm chi phí so với các giải pháp thay thế dựa trên đám mây. Hãy dùng thử các API mới này và giúp ứng dụng web của bạn thông minh hơn.