Chrome Prompt API là gì? Trình duyệt AI cho nhà phát triển API

Ashley Innocent

Ashley Innocent

29 tháng 4 2026

Chrome Prompt API là gì? Trình duyệt AI cho nhà phát triển API

Chrome đã tích hợp một mô hình AI trực tiếp vào trình duyệt. Prompt API là giao diện JavaScript mà bạn gọi để sử dụng nó. Không cần khóa API, không mất thời gian khứ hồi mạng, không tính phí trên mỗi token. Mô hình là Gemini Nano, nó chạy trên thiết bị của người dùng, và kể từ Chrome 138, nó đã được cung cấp rộng rãi cho các tiện ích mở rộng và đằng sau một cờ (flag) cho các trang web. Đối với các nhà phát triển API, điều này thay đổi những gì có thể thực hiện được trên client.

Hướng dẫn này trình bày về Chrome Prompt API là gì, cách nó khác với Gemini API trên đám mây, khi nào nó thực sự phù hợp với quy trình làm việc của API, mã thực hành cho cả tiện ích mở rộng và trang web, cũng như các giới hạn bạn sẽ gặp phải nhanh hơn những gì tài liệu thừa nhận. Cuối cùng, chúng tôi kết hợp nó với Apidog để các tác vụ tương tự có một đường dẫn dự phòng khi mô hình không khả dụng.

button

TL;DR

Prompt API thực sự hiển thị những gì

Prompt API là một trong số ít API “AI tích hợp” mà Chrome bắt đầu triển khai vào năm ngoái. Các API khác hẹp hơn: Tóm tắt, Viết, Viết lại, Dịch và Phát hiện ngôn ngữ. Prompt API là giao diện đa năng; các API khác bao bọc nó với các cài đặt mặc định cho từng tác vụ cụ thể.

Ba yếu tố cơ bản quan trọng:

Hình dạng này cố ý gần với Gemini cloud SDK nhưng đã được cắt giảm. Hiện chưa có tính năng gọi công cụ, không có đầu vào hình ảnh trên kênh ổn định (nó đang trong Origin Trial), và cửa sổ ngữ cảnh nhỏ (4K token đầu vào, 1K đầu ra, với khả năng mở rộng mềm đến tổng cộng 8K).

Một lệnh gọi đầu tiên từ trang web trông như thế này:

if (!('LanguageModel' in window)) {
  console.warn('Prompt API not available. Falling back to cloud.');
} else {
  const status = await LanguageModel.availability();
  if (status === 'unavailable') {
    console.warn('Device does not support Gemini Nano.');
  } else {
    if (status !== 'available') {
      // Triggers a background download. Show a UI.
      await LanguageModel.create({ monitor(m) {
        m.addEventListener('downloadprogress', e => {
          console.log(`downloaded ${(e.loaded * 100).toFixed(0)}%`);
        });
      }});
    }
    const session = await LanguageModel.create({
      systemPrompt: 'You answer in three concise bullets. JSON only.',
    });
    const reply = await session.prompt(
      'Summarize this changelog in three bullets.\n\n' + changelog
    );
    console.log(reply);
  }
}

Mọi phần quan trọng đều được hiển thị trong đoạn mã: phát hiện tính năng, kiểm tra tính khả dụng, tải xuống tùy chọn, tạo phiên, lời nhắc hệ thống, gọi lời nhắc.

Nó khác với Gemini API trên đám mây như thế nào

Cùng một dòng sản phẩm, triển khai khác nhau. Những khác biệt này định hình những gì bạn có thể và không thể xây dựng dựa trên nó.

Thuộc tính Chrome Prompt API Gemini API (đám mây)
Mô hình Gemini Nano (trên thiết bị) gemini-3-flash, gemini-3-flash-preview, gemini-3-pro
Chi phí mỗi lần gọi Không Tính phí trên mỗi token
Độ trễ 50 đến 300 ms cho token đầu tiên (thông thường) 200 đến 800 ms cho token đầu tiên
Mạng Không yêu cầu sau khi tải mô hình Yêu cầu mỗi lần gọi
Quyền riêng tư Đầu vào không bao giờ rời khỏi thiết bị Gửi đến máy chủ của Google
Cửa sổ ngữ cảnh 4K đầu vào / 1K đầu ra (8K tổng cộng) Lên đến 1 triệu token
Gọi công cụ Không (đã lên kế hoạch)
Đa phương thức Đầu vào hình ảnh trong Origin Trial
Chế độ JSON Nỗ lực tốt nhất qua lời nhắc hệ thống Hạng nhất với schema
Tính khả dụng Chỉ Chrome, chỉ phần cứng tương thích Bất kỳ client nào có mạng

Mô hình trên thiết bị nhỏ hơn gemini-3-flash khoảng hai bậc độ lớn. Hãy sử dụng nó cho các tác vụ ngắn mà bạn thường dùng biểu thức chính quy (regex) hoặc bộ phân loại lời nhắc được tinh chỉnh thủ công. Đừng sử dụng nó như một sự thay thế trực tiếp cho Gemini trên đám mây.

Nó thực sự phù hợp ở đâu trong quy trình làm việc của nhà phát triển API

Bốn trường hợp sử dụng này bù đắp chi phí tích hợp. Ngoài những trường hợp này, API đám mây vẫn là lựa chọn đúng đắn.

1. Phân tích cú pháp và định hình lại đầu vào người dùng phía client.Lấy một truy vấn dạng tự do và biến nó thành một bộ lọc có cấu trúc cho API của bạn. Người dùng nhập “phí stripe hơn 100 đô la tuần trước”; Prompt API biến nó thành { "amount_gt": 100, "since": "2026-04-22", "provider": "stripe" } trước khi bạn gọi điểm cuối tìm kiếm của mình. Tiết kiệm một lượt khứ hồi và bảo vệ quyền riêng tư của người dùng.

2. Tóm tắt phản hồi API cho UI.Bạn gọi API của mình, nhận lại 40 bản ghi và cần một bản tóm tắt một dòng để hiển thị trong thẻ. Gửi các bản ghi đó đến một mô hình đám mây sẽ làm tăng độ trễ và chi phí. Prompt API chạy cục bộ và trả về kết quả trong vòng dưới 200 ms.

3. Sửa chữa định dạng JSON.Phản hồi từ LLM thường xuyên đến không đúng định dạng. Hãy chạy một lần sửa chữa thông qua Gemini Nano: “Đây là JSON không hợp lệ. Chỉ trả về JSON hợp lệ với các trường tương tự.” Rẻ, nhanh, không tốn chi phí.

4. Tạo stub cục bộ trong quá trình phát triển.Trong khi bạn đang kết nối một điểm cuối mới và backend mới được xây dựng một nửa, hãy tạo các thân phản hồi hợp lý ngay lập tức. Các định dạng này sẽ không hoàn toàn chính xác cho sản xuất, nhưng chúng giúp giải tỏa công việc front-end. Kết hợp với máy chủ mock của Apidog để có một thiết lập lai, trong đó các điểm cuối quan trọng đến từ các ví dụ đã lưu và các điểm cuối thử nghiệm đến từ Prompt API.

Tích hợp vào một tiện ích mở rộng

Các tiện ích mở rộng có thể sử dụng Prompt API trên kênh ổn định từ Chrome 138 trở đi. Bạn khai báo quyền và gọi chrome.languageModel.

manifest.json:

{
  "manifest_version": 3,
  "name": "Endpoint Summarizer",
  "version": "1.0.0",
  "permissions": ["languageModel"],
  "action": { "default_popup": "popup.html" }
}

popup.js:

const status = await chrome.languageModel.availability();
if (status === 'unavailable') {
  document.getElementById('out').textContent =
    'Device does not support on-device AI.';
  return;
}

const session = await chrome.languageModel.create({
  systemPrompt: [
    'You summarize HTTP responses in three short bullets.',
    'Mention status, the most-changed field, and any error keys.',
  ].join(' '),
  temperature: 0.3,
  topK: 3,
});

document.getElementById('go').addEventListener('click', async () => {
  const tab = await chrome.tabs.query({ active: true, currentWindow: true });
  const [{ result }] = await chrome.scripting.executeScript({
    target: { tabId: tab[0].id },
    func: () => document.body.innerText.slice(0, 4000),
  });
  const stream = session.promptStreaming(result);
  const out = document.getElementById('out');
  out.textContent = '';
  for await (const chunk of stream) {
    out.textContent += chunk;
  }
});

Hai điều đáng lưu ý. temperaturetopK là những tùy chỉnh lấy mẫu duy nhất mà API này cung cấp; topP không được hỗ trợ trên kênh ổn định. Streaming là một async iterator, không phải server-sent events, vì vậy cách sử dụng là for await chứ không phải trình đọc SSE mà bạn sẽ viết cho Gemini trên đám mây.

Tích hợp vào một trang web

Các trang web cần người dùng bật một cờ hoặc origin của bạn phải được đăng ký trong Origin Trial. Mã thông báo thử nghiệm được đặt trong thẻ meta.

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="origin-trial" content="YOUR_TRIAL_TOKEN_HERE" />
</head>
<body>
  <textarea id="in" placeholder="Dán phản hồi API..."></textarea>
  <button id="go">Tóm tắt</button>
  <pre id="out"></pre>
  <script type="module">
    if (!('LanguageModel' in window)) {
      document.getElementById('out').textContent =
        'Prompt API không khả dụng trong trình duyệt này.';
    } else {
      const session = await LanguageModel.create({
        systemPrompt: 'Trả lời bằng JSON: { "summary": "...", "tags": [...] }',
        temperature: 0.2,
      });
      document.getElementById('go').onclick = async () => {
        const text = document.getElementById('in').value;
        const reply = await session.prompt(text);
        try {
          document.getElementById('out').textContent =
            JSON.stringify(JSON.parse(reply), null, 2);
        } catch {
          document.getElementById('out').textContent = reply;
        }
      };
    }
  </script>
</body>
</html>

Nếu bạn muốn kiểm tra trang mà không có mã thông báo Origin Trial, hãy mở chrome://flags/#prompt-api-for-gemini-nano, đặt thành Enabled (Bật) và khởi động lại Chrome. Cờ này đã ổn định trong sáu phiên bản gần đây nhưng không được đảm bảo sẽ duy trì vĩnh viễn; hãy sử dụng đường dẫn Origin Trial nếu bạn muốn hành vi có thể dự đoán được.

Các giới hạn và vấn đề tiềm ẩn mà tài liệu chưa nhấn mạnh đủ

Sáu điều có thể làm bạn gặp khó khăn.

  1. 1. Ngữ cảnh nhỏ. 4K đầu vào, 1K đầu ra. Cắt bớt một cách tích cực. Đừng dán một tài liệu JSON 50K token và mong đợi một câu trả lời hữu ích.
  2. 2. Hỗ trợ phần cứng không đồng đều. Mô hình cần khoảng 4 GB VRAM hoặc bộ nhớ hợp nhất và chỉ chạy trên Chrome 138+ trên Windows, macOS, Linux và ChromeOS mới nhất. Chrome di động không được hỗ trợ tại thời điểm bài viết này.
  3. 3. Lần tải đầu tiên chậm. Việc tải xuống 2 GB diễn ra ngầm nhưng sẽ chặn phiên làm việc đầu tiên. Luôn hiển thị giao diện tiến trình tải xuống.
  4. 4. Không gọi công cụ. Nếu tác vụ của bạn cần mô hình gọi API của bạn, hãy tự làm điều đó trên client; mô hình chỉ quyết định gọi gì.
  5. 5. Sai lệch lời nhắc hệ thống. Mô hình trên thiết bị tuân thủ lời nhắc hệ thống kém cứng nhắc hơn so với các biến thể trên đám mây. Hãy cố định định dạng bằng các ví dụ một lần trong lời nhắc hệ thống.
  6. 6. Quyền là quan trọng. Tiện ích mở rộng cần "languageModel" trong permissions. Quên điều này và API sẽ âm thầm trả về unavailable.

Thiết lập phương án dự phòng đám mây trước khi triển khai

Ứng dụng của bạn sẽ được gửi đến những người dùng không có mô hình này. Luôn thiết lập một phương án dự phòng. Mẫu mã ngắn gọn như sau:

async function summarize(text) {
  if ('LanguageModel' in window) {
    const status = await LanguageModel.availability();
    if (status === 'available') {
      const session = await LanguageModel.create({
        systemPrompt: 'Trả lời bằng một bản tóm tắt gạch đầu dòng, tối đa 12 từ.',
      });
      return session.prompt(text);
    }
  }
  // Dự phòng: gọi máy chủ của bạn, máy chủ này sẽ gọi Gemini trên đám mây hoặc mô hình của riêng bạn.
  const r = await fetch('/api/summarize', {
    method: 'POST', body: JSON.stringify({ text }),
  });
  return (await r.json()).summary;
}

Quyền riêng tư và những gì cần nói với người dùng

Điểm bán hàng của Prompt API là đầu vào không bao giờ rời khỏi thiết bị. Điều này đúng cho đến ngày nay và là ý định thiết kế rõ ràng của sáng kiến AI tích hợp. Hai điều kiện cần biết:

Đối với hầu hết các ứng dụng tiêu dùng, đây là một câu chuyện quyền riêng tư mạnh mẽ mà bạn có thể đưa vào giao diện người dùng mà không cần xem xét pháp lý. Đối với các tác vụ có quy định (HIPAA, PCI), hãy xác nhận với cố vấn pháp lý trước khi bạn phụ thuộc vào nó.

Khi nào nên bỏ qua Prompt API

Hãy chọn Gemini API trên đám mây thay thế khi:

Đối với khía cạnh mã nguồn mở, bài viết Cách chạy DeepSeek V4 cục bộ đề cập đến việc chạy một mô hình lớn hơn đáng kể trên máy của nhà phát triển mà không cần rời khỏi mạng cục bộ.

Câu hỏi thường gặp

Đối với các nhóm đã và đang chạy các quy trình làm việc LLM phía đám mây song song với điều này, bài viết GPT-5.5 là gì đề cập sâu hơn về những đánh đổi phía đám mây, và Apidog xử lý việc kết nối mock và dự phòng mà không cần một công cụ kiểm thử riêng biệt.

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API