Skip to content
tinAI
Go back

Chrome Prompt API: gọi Gemini Nano on-device từ JavaScript với input text/image/audio

Bài gốc: The Prompt API

Tác giả: Thomas Steiner & Alexandra Klepper (Chrome team)

Ngày đăng: Dịch ngày:

TL;DR

Chrome ship Prompt API trong origin trial — JavaScript API gọi Gemini Nano chạy on-device, không gửi data ra ngoài, không tốn API cost. Hỗ trợ multimodal input (text/image/audio), chỉ output text, ngôn ngữ `en/ja/es`. Dùng được cho web (Chrome 138) và Chrome Extensions với cấu hình tham số sampling đầy đủ.

Giới thiệu

Prompt API cho phép bạn gửi natural language request đến Gemini Nano — chạy trực tiếp trong browser. Vì model on-device:

Tính năng chính

Multimodal input

API accept ba loại input:

Output: chỉ text. Languages hỗ trợ: en, ja, es (đang phát triển thêm).

Use cases

Cách sử dụng

Kiểm tra availability

const availability = await LanguageModel.availability();
// 'available' | 'downloadable' | 'downloading' | 'unavailable'

Nếu trạng thái là downloading, lắng nghe progress để inform user — model size khá lớn.

Tạo session

const session = await LanguageModel.create();
const response = await session.prompt('Tóm tắt page này');

Với Chrome Extensions, có thể custom topKtemperature:

const params = await LanguageModel.params();
// { defaultTopK: 3, maxTopK: 128, defaultTemperature: 1, maxTemperature: 2 }

const session = await LanguageModel.create({
  temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
  topK: params.defaultTopK,
});

Abort signal

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const session = await LanguageModel.create({
  signal: controller.signal,
});

Initial prompts (conversational state)

const session = await LanguageModel.create({
  initialPrompts: [
    { role: 'system', content: 'You are a helpful and friendly assistant.' },
    { role: 'user', content: 'What is the capital of Italy?' },
    { role: 'assistant', content: 'The capital of Italy is Rome.' },
  ],
});

Constraint output với prefix

Ép model trả về theo format cụ thể bằng cách prefill phần đầu của assistant response:

const characterSheet = await session.prompt([
  {
    role: 'user',
    content: 'Create a TOML character sheet for a gnome barbarian',
  },
  {
    role: 'assistant',
    content: '```toml\n',
    prefix: true,
  },
]);

Multimodal session

const session = await LanguageModel.create({
  expectedInputs: [
    { type: 'text', languages: ['en', 'ja'] },
    { type: 'image' },
  ],
  expectedOutputs: [
    { type: 'text', languages: ['ja'] },
  ],
});

Nếu model encounter input/output không support, ném NotSupportedError DOMException.

Bật trên localhost

Để test trên localhost, set hai flag thành Enabled rồi relaunch Chrome:

Trạng thái triển khai

TrialChrome versionScope
Origin trial cơ bảnChrome 138Web pages
Origin trial sampling parametersChrome 148Topic, temperature controls

Lưu ý


Read Original (EN) Quay lại Newsletter