使用 Prompt API 建構可在本機和離線狀態下運作的聊天機器人

發布日期:2025 年 1 月 13 日

這是 LLM 聊天機器人三部曲的最後一部。先前的文章討論了用戶端 LLM 的強大功能,並逐步說明如何在待辦事項應用程式中新增 WebLLM 支援的聊天機器人

部分新裝置出廠時就搭載大型語言模型和其他 AI 模型。Chrome 已提議將內建 AI API 整合至瀏覽器,目前多項 API 處於不同開發階段。其中許多 API 正在進行標準化程序,因此網站可以使用相同的實作方式和模型,盡可能提升推論效能。

Prompt API 就是其中一種 AI API。我們鼓勵開發人員註冊加入搶先預覽計畫,接受後,您會收到在瀏覽器中啟用 Prompt API 的操作說明。Prompt API 已在 Chrome 擴充功能的來源試用中推出,因此您可以為實際的擴充功能使用者測試這項 API。

共用模型存取權

Prompt API 的運作方式與 WebLLM 類似。不過,這次沒有模型選項 (您必須使用瀏覽器隨附的 LLM)。啟用內建 AI 時,Chrome 會將 Gemini Nano 下載到瀏覽器。這個模型隨後可跨多個來源和執行作業共用,並發揮最大效能。開發人員已在 GitHub 問題中要求新增模型選取功能。

設定對話

您可以按照相同方式發起訊息對話,但 Prompt API 也提供簡短語法來指定系統提示。在 LanguageModel 介面上使用 create() 方法,啟動語言模型工作階段:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `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)}`,
    },
  ],
});

回答第一個問題

Prompt API 提供兩種不同的方法,而非使用設定物件設定串流:

  • prompt() 會傳回完整字串
  • promptStreaming() 會傳回非同步可疊代項目。與 WebLLM 不同,Prompt API 會回覆完整的字串,因此您不必自行合併結果。

如果沒有其他來源先前觸發模型下載,系統會將 Gemini Nano 下載到瀏覽器,因此您的第一個要求可能需要很長時間。如果模型已可使用,系統會立即開始推論。

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

示範

摘要

將 LLM 整合至應用程式,可大幅提升使用者體驗。雲端服務可提供高品質模型,且無論使用者裝置為何,都能維持高推論效能。相較於雲端替代方案,WebLLM 和 Chrome 的 Prompt API 等裝置端解決方案可離線運作、提升隱私權,並節省成本。試試這些新版 API,讓網頁應用程式更智慧。