Chrome ได้เผยแพร่โมเดล AI โดยตรงในเบราว์เซอร์ Prompt API คืออินเทอร์เฟซ JavaScript ที่คุณเรียกใช้เพื่อใช้งาน ไม่ต้องใช้คีย์ API, ไม่มีการเดินทางไปกลับของเครือข่าย, ไม่มีค่าใช้จ่ายต่อโทเค็น โมเดลคือ Gemini Nano ซึ่งทำงานบนอุปกรณ์ของผู้ใช้ และ ณ Chrome 138 โมเดลนี้พร้อมใช้งานทั่วไปสำหรับส่วนขยายและอยู่ภายใต้แฟล็กสำหรับหน้าเว็บ สำหรับนักพัฒนา API สิ่งนี้เปลี่ยนสิ่งที่สมเหตุสมผลที่จะทำบนฝั่งไคลเอ็นต์
คู่มือนี้ครอบคลุมถึง Chrome Prompt API คืออะไร, แตกต่างจาก Gemini API บนคลาวด์อย่างไร, เมื่อไหร่ที่เหมาะสมกับเวิร์กโฟลว์ของ API, โค้ดสำหรับส่วนขยายและหน้าเว็บ, และข้อจำกัดที่คุณจะพบเร็วกว่าที่เอกสารยอมรับ เราจะจับคู่กับ Apidog ในตอนท้าย เพื่อให้งานเดียวกันมีเส้นทางสำรองเมื่อโมเดลไม่พร้อมใช้งาน
สรุป
- Chrome Prompt API เปิดเผย Gemini Nano ผ่าน
LanguageModelซึ่งมีให้ใช้งานบนwindow.LanguageModelสำหรับหน้าเว็บ และchrome.languageModelสำหรับส่วนขยาย - โมเดลทำงานทั้งหมดบนอุปกรณ์ ไม่มีการเรียกเครือข่าย, ไม่มีคีย์, ไม่มีค่าใช้จ่ายโทเค็น
- เสถียรสำหรับส่วนขยาย Chrome ใน Chrome 138 ขึ้นไป สำหรับหน้าเว็บ จะถูกปล่อยออกมาภายใต้แฟล็ก
chrome://flags/#prompt-api-for-gemini-nanoและ Origin Trial ที่ลงทะเบียนแล้ว - การใช้งานที่ดีที่สุดสำหรับนักพัฒนา API: การแยกวิเคราะห์อินพุตฝั่งไคลเอ็นต์, การซ่อมแซมโครงสร้าง JSON, การสรุปการตอบสนอง API สำหรับ UI, และการสร้าง Stub ระหว่างการพัฒนา
- เชื่อมต่อ Fallback บนคลาวด์เสมอ โมเดลบนอุปกรณ์จะล้มเหลวแบบเปิดเผย; โค้ดของคุณไม่ควรเป็นเช่นนั้น
Prompt API เปิดเผยอะไรบ้าง
Prompt API เป็นหนึ่งในกลุ่มเล็กๆ ของ API "Built-in AI" ที่ Chrome เริ่มเผยแพร่เมื่อปีที่แล้ว ส่วนอื่นๆ มีขอบเขตแคบกว่า ได้แก่ Summarizer, Writer, Rewriter, Translator และ Language Detector Prompt API เป็นอินเทอร์เฟซอเนกประสงค์ ส่วนอื่นๆ จะห่อหุ้มด้วยค่าเริ่มต้นสำหรับงานเฉพาะ

สามสิ่งสำคัญคือ:
LanguageModel.availability()คืนค่า `available`, `downloadable`, `downloading` หรือ `unavailable` โมเดลมีขนาดประมาณ 2 GB และจะดาวน์โหลดในพื้นหลังเมื่อไซต์ร้องขอครั้งแรกLanguageModel.create(options)สร้างเซสชัน เซสชันจะเก็บสถานะเทิร์น, system prompt และพารามิเตอร์การสุ่มตัวอย่างบางส่วนsession.prompt(text)และsession.promptStreaming(text)สองวิธีในการเรียกใช้โมเดลจริง
รูปแบบนี้ตั้งใจให้ใกล้เคียงกับ Gemini cloud SDK แต่ถูกตัดทอน ยังไม่มีการเรียกใช้เครื่องมือ, ไม่มีอินพุตภาพบนช่องสัญญาณที่เสถียร (อยู่ใน Origin Trial), และหน้าต่างบริบทมีขนาดเล็ก (อินพุต 4K โทเค็น, เอาต์พุต 1K, โดยมีการขยายแบบยืดหยุ่นเป็น 8K รวม)
การเรียกครั้งแรกจากหน้าเว็บมีลักษณะดังนี้:
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);
}
}
ทุกส่วนสำคัญแสดงอยู่ในโค้ดตัวอย่างนี้: การตรวจจับคุณสมบัติ, การตรวจสอบความพร้อมใช้งาน, การดาวน์โหลดทางเลือก, การสร้างเซสชัน, system prompt, การเรียกใช้ prompt
แตกต่างจาก Gemini API บนคลาวด์อย่างไร
ตระกูลเดียวกัน, การติดตั้งใช้งานต่างกัน ความแตกต่างเหล่านี้กำหนดสิ่งที่คุณสามารถและไม่สามารถสร้างบนมันได้
| คุณสมบัติ | Chrome Prompt API | Gemini API (คลาวด์) |
|---|---|---|
| โมเดล | Gemini Nano (บนอุปกรณ์) | gemini-3-flash, gemini-3-flash-preview, gemini-3-pro |
| ค่าใช้จ่ายต่อการเรียก | ศูนย์ | การเรียกเก็บเงินตามโทเค็น |
| ความหน่วง | 50 ถึง 300 มิลลิวินาที สำหรับโทเค็นแรกโดยทั่วไป | 200 ถึง 800 มิลลิวินาที สำหรับโทเค็นแรก |
| เครือข่าย | ไม่จำเป็นต้องใช้หลังจากดาวน์โหลดโมเดล | จำเป็นทุกครั้งที่เรียก |
| ความเป็นส่วนตัว | อินพุตไม่เคยออกจากอุปกรณ์ | ถูกส่งไปยังเซิร์ฟเวอร์ของ Google |
| หน้าต่างบริบท | อินพุต 4K / เอาต์พุต 1K (รวม 8K) | สูงสุด 1M โทเค็น |
| การเรียกใช้เครื่องมือ | ไม่มี (มีแผน) | มี |
| มัลติโมดอล | อินพุตภาพในการทดลอง Origin Trial | มี |
| โหมด JSON | พยายามอย่างเต็มที่ผ่าน system prompt | ระดับเฟิร์สคลาสพร้อมสคีมา |
| ความพร้อมใช้งาน | เฉพาะ Chrome, เฉพาะฮาร์ดแวร์ที่รองรับ | ลูกค้าใดก็ได้ที่มีเครือข่าย |
โมเดลบนอุปกรณ์มีขนาดเล็กกว่า `gemini-3-flash` ประมาณสองอันดับขนาด ใช้สำหรับงานสั้นๆ ที่คุณเคยใช้ regex หรือตัวจัดประเภท prompt ที่ปรับแต่งด้วยมือ อย่าใช้แทนที่ Gemini บนคลาวด์โดยตรง
เหมาะสมกับเวิร์กโฟลว์ของนักพัฒนา API อย่างไร
สี่กรณีการใช้งานที่คุ้มค่ากับค่าใช้จ่ายในการรวมระบบ นอกเหนือจากนี้ Cloud API ยังคงเป็นตัวเลือกที่ถูกต้อง
- 1. การแยกวิเคราะห์และปรับโครงสร้างอินพุตของผู้ใช้ฝั่งไคลเอ็นต์ รับคำค้นหาแบบอิสระและแปลงให้เป็นตัวกรองที่มีโครงสร้างสำหรับ API ของคุณ ผู้ใช้พิมพ์ "ค่าใช้จ่าย Stripe มากกว่า $100 เมื่อสัปดาห์ที่แล้ว" Prompt API จะแปลงเป็น
{ "amount_gt": 100, "since": "2026-04-22", "provider": "stripe" }ก่อนที่คุณจะเรียกใช้เอนด์พอยต์การค้นหาของคุณ ช่วยประหยัดการเดินทางไปกลับและปกป้องความเป็นส่วนตัวของผู้ใช้ - 2. การสรุปผลตอบสนอง API สำหรับ UI คุณเรียกใช้ API ของคุณเอง, ได้รับ 40 รายการ, และต้องการสรุปแบบบรรทัดเดียวเพื่อแสดงในการ์ด การส่งรายการไปยังโมเดลคลาวด์จะเพิ่มความหน่วงและค่าใช้จ่าย Prompt API ทำงานแบบโลคัลและคืนค่าภายใน 200 มิลลิวินาที
- 3. การซ่อมแซมโครงสร้าง JSON การตอบสนองของ LLM มักจะมาในรูปแบบที่ไม่ถูกต้องบ่อยครั้งพอที่จะเป็นปัญหา ลองใช้ Gemini Nano แก้ไขแบบครั้งเดียว: "นี่คือ JSON ที่ไม่ถูกต้อง คืนค่าเฉพาะ JSON ที่ถูกต้องโดยมีฟิลด์เดียวกัน" ราคาถูก, รวดเร็ว, ไม่มีค่าใช้จ่าย
- 4. การสร้าง Stub แบบโลคัลระหว่างการพัฒนา ในขณะที่คุณกำลังเชื่อมต่อเอนด์พอยต์ใหม่และแบ็กเอนด์ยังสร้างไม่เสร็จ ให้สร้างบอดี้การตอบสนองที่สมเหตุสมผลได้ทันที รูปแบบอาจจะไม่ถูกต้องตามการผลิต แต่ช่วยให้งานส่วนหน้าดำเนินต่อไปได้ รวมกับเซิร์ฟเวอร์ Mock ของ Apidog สำหรับการตั้งค่าแบบไฮบริดที่เอนด์พอยต์ที่สำคัญมาจากตัวอย่างที่บันทึกไว้และเอนด์พอยต์สำหรับการสำรวจมาจาก Prompt API
การสร้างลงในส่วนขยาย
ส่วนขยายจะได้รับ Prompt API บนช่องสัญญาณที่เสถียรตั้งแต่ Chrome 138 เป็นต้นไป คุณประกาศสิทธิ์และเรียกใช้ 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;
}
});
สองสิ่งที่ควรกล่าวถึง temperature และ topK เป็นพารามิเตอร์การสุ่มตัวอย่างเดียวที่ API เปิดเผย; topP ไม่รองรับบนช่องสัญญาณที่เสถียร การสตรีมเป็น async iterator ไม่ใช่ server-sent events ดังนั้นรูปแบบการใช้งานคือ for await แทนที่จะเป็น SSE reader ที่คุณจะเขียนสำหรับ cloud Gemini
การสร้างลงในหน้าเว็บ
หน้าเว็บต้องการให้ผู้ใช้เปิดแฟล็กหรือให้ origin ของคุณลงทะเบียนในการทดลอง Origin Trial โทเค็นการทดลองจะอยู่ในแท็ก meta
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="origin-trial" content="YOUR_TRIAL_TOKEN_HERE" />
</head>
<body>
<textarea id="in" placeholder="Paste an API response..."></textarea>
<button id="go">Summarize</button>
<pre id="out"></pre>
<script type="module">
if (!('LanguageModel' in window)) {
document.getElementById('out').textContent =
'Prompt API not available in this browser.';
} else {
const session = await LanguageModel.create({
systemPrompt: 'Reply in 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>
หากคุณต้องการทดสอบหน้าเว็บโดยไม่มีโทเค็น Origin Trial ให้เปิด chrome://flags/#prompt-api-for-gemini-nano, ตั้งค่าเป็น Enabled, และรีสตาร์ท Chrome แฟล็กนี้เสถียรมาตลอดหกเวอร์ชันล่าสุด แต่ไม่ได้รับปากว่าจะคงอยู่ตลอดไป; ให้ใช้งานเส้นทาง Origin Trial หากคุณต้องการพฤติกรรมที่คาดเดาได้
ข้อจำกัดและข้อควรระวังที่เอกสารไม่ได้เน้นมากพอ
หกสิ่งที่อาจทำให้คุณสะดุด:
- 1. บริบทมีขนาดเล็ก อินพุต 4K, เอาต์พุต 1K ตัดทอนอย่างรุนแรง อย่าคัดลอกเอกสาร JSON ขนาด 50K โทเค็นและคาดว่าจะได้คำตอบที่เป็นประโยชน์
- 2. การสนับสนุนฮาร์ดแวร์ไม่สม่ำเสมอ โมเดลต้องการ VRAM หรือหน่วยความจำรวมประมาณ 4 GB และทำงานได้เฉพาะบน Chrome 138+ บน Windows, macOS, Linux และ ChromeOS รุ่นล่าสุด Chrome บนมือถือยังไม่รองรับในขณะที่เขียนนี้
- 3. การโหลดครั้งแรกช้า การดาวน์โหลด 2 GB เกิดขึ้นในพื้นหลังแต่จะบล็อกเซสชันแรก แสดง UI ความคืบหน้าการดาวน์โหลดเสมอ
- 4. ไม่มีการเรียกใช้เครื่องมือ หากงานของคุณต้องการให้โมเดลเรียกใช้ API ของคุณ ให้ทำสิ่งนั้นบนฝั่งไคลเอ็นต์เอง; โมเดลเพียงแค่ตัดสินใจว่าจะเรียกอะไร
- 5. การเบี่ยงเบนของ System prompt โมเดลบนอุปกรณ์ปฏิบัติตาม system prompt น้อยกว่ารุ่นบนคลาวด์ กำหนดรูปแบบด้วยตัวอย่างแบบครั้งเดียวใน system prompt
- 6. สิทธิ์มีความสำคัญ ส่วนขยายต้องการ
"languageModel"ในpermissionsหากลืมไป API จะคืนค่าunavailableโดยไม่มีการแจ้งเตือน
เชื่อมต่อ Fallback บนคลาวด์ก่อนที่คุณจะเผยแพร่
แอปของคุณเผยแพร่ให้กับผู้ใช้ที่ไม่มีโมเดล เชื่อมต่อ Fallback เสมอ รูปแบบสั้นๆ:
async function summarize(text) {
if ('LanguageModel' in window) {
const status = await LanguageModel.availability();
if (status === 'available') {
const session = await LanguageModel.create({
systemPrompt: 'Reply with one bullet summary, max 12 words.',
});
return session.prompt(text);
}
}
// Fallback: call your server, which calls cloud Gemini or your own model.
const r = await fetch('/api/summarize', {
method: 'POST', body: JSON.stringify({ text }),
});
return (await r.json()).summary;
}
ความเป็นส่วนตัวและสิ่งที่จะบอกผู้ใช้
จุดเด่นของ Prompt API คืออินพุตไม่เคยออกจากอุปกรณ์ นั่นเป็นความจริงในปัจจุบันและเป็นเจตนาการออกแบบที่ชัดเจนของโครงการ Built-in AI สองข้อสังเกตที่ควรทราบ:
- ตัวโมเดลเองได้รับการฝึกฝนโดย Google บนข้อมูลของ Google; การรันบนเครื่องไม่เปลี่ยนแปลงสิ่งนั้น Chrome จะจัดส่งน้ำหนักโมเดลมาพร้อมกับการอัปเดตเบราว์เซอร์
- ข้อมูลการใช้งานอาจยังคงถูกรายงานโดย Chrome ภายใต้การตั้งค่าข้อมูลทางไกลของ Chrome ตามปกติของผู้ใช้ เนื้อหาของ prompt ไม่ใช่ส่วนหนึ่งของข้อมูลทางไกลนั้น
สำหรับแอปสำหรับผู้บริโภคส่วนใหญ่ นี่เป็นเรื่องราวความเป็นส่วนตัวที่แข็งแกร่งที่คุณสามารถใส่ใน UI ของคุณได้โดยไม่ต้องมีการตรวจสอบทางกฎหมาย สำหรับภาระงานที่มีการควบคุม (HIPAA, PCI) ให้ปรึกษาทนายความก่อนที่คุณจะพึ่งพามัน
เมื่อใดที่ควรข้าม Prompt API
เลือกใช้ cloud Gemini API แทนเมื่อ:
- งานของคุณต้องการอินพุตมากกว่า 4K โทเค็น
- คุณต้องการการเรียกใช้เครื่องมือ, เอาต์พุตที่มีโครงสร้างพร้อมการบังคับใช้สคีมา, หรืออินพุตมัลติโมดอลที่นอกเหนือจากการทดลอง Origin Trial
- คุณให้บริการผู้ใช้บน Safari, Firefox หรือ Chrome บนมือถือ การรองรับเบราว์เซอร์ในปัจจุบันมีเพียง Chrome เท่านั้น และ Apple ยังไม่ได้แจ้งวันที่จะจัดส่ง
- คุณภาพของเอาต์พุตมีความสำคัญมากกว่าความหน่วง Nano มีขนาดเล็ก; Pro ไม่ได้เป็นเช่นนั้น
สำหรับมุมมองแบบ open-weight บทความ วิธีรัน DeepSeek V4 บนเครื่อง ครอบคลุมการรันโมเดลขนาดใหญ่ขึ้นอย่างมีนัยสำคัญบนเครื่องของนักพัฒนาโดยไม่ต้องออกจากเครือข่ายท้องถิ่น
คำถามที่พบบ่อย
Prompt API อยู่ในกระบวนการมาตรฐานเว็บอย่างเป็นทางการหรือไม่? อยู่ในกลุ่มชุมชน W3C WebML ในฐานะข้อเสนอ ถือว่าเป็นของ Chrome โดยเฉพาะจนกว่าเอนจิ้นอื่นจะรองรับ
ฉันสามารถใช้จาก Service Worker ได้หรือไม่? ใน Chrome 138+ ใช่สำหรับส่วนขยาย หน้าเว็บปัจจุบันจำกัดให้อยู่ในบริบทของเอกสาร ตรวจสอบเอกสารก่อนที่คุณจะเผยแพร่ไปยัง Service Worker
ฉันกำลังได้รับโมเดลขนาดเท่าใด? Gemini Nano อยู่ในช่วง 2-4 พันล้านพารามิเตอร์ โดยถูกควอนไทซ์เพื่อให้เหมาะสม Google ยังไม่ได้กำหนดขนาดที่แน่นอน; คาดว่าจะเติบโตขึ้น
รองรับการเรียกใช้ฟังก์ชันหรือไม่? ไม่รองรับบนช่องสัญญาณที่เสถียร สาขา Origin Trial มีการสนับสนุนเครื่องมือทดลอง; อย่าพึ่งพามันสำหรับการผลิต
ฉันจะทดสอบใน CI แบบอัตโนมัติได้อย่างไร? คุณยังไม่สามารถรันโมเดลบนอุปกรณ์ใน headless Chromium ได้ Mock LanguageModel ทั่วไปในการทดสอบและรันเส้นทาง fallback บนคลาวด์ใน CI
ใช้งานเชิงพาณิชย์ได้ฟรีหรือไม่? ได้ ไม่มีค่าใช้จ่ายต่อการเรียก คุณต้องรับผิดชอบค่าใช้จ่ายในการจัดเก็บข้อมูลบนอุปกรณ์ของผู้ใช้ (ประมาณ 2 GB) และ Chrome จะจัดการการอัปเดต
สำหรับทีมที่รันเวิร์กโฟลว์ LLM ฝั่งคลาวด์ควบคู่ไปกับสิ่งนี้ บทความ GPT-5.5 คืออะไร ครอบคลุมการแลกเปลี่ยนฝั่งคลาวด์อย่างละเอียด และ Apidog จัดการการจำลองและเชื่อมต่อ fallback โดยไม่ต้องใช้เครื่องมือทดสอบแยกต่างหาก
