เผยแพร่: 16 กรกฎาคม 2026
AI SDK ของ Vercel เป็นชุดเครื่องมือ TypeScript ที่ไม่ขึ้นอยู่กับผู้ให้บริการ ซึ่งออกแบบมาเพื่อช่วยคุณสร้างแอปพลิเคชันและเอเจนต์ที่ทำงานด้วยระบบ AI โดยใช้ เฟรมเวิร์ก UI ยอดนิยม เช่น Next.js, React, Svelte, Vue, Angular และรันไทม์ อย่าง Node.js แม้ว่าผู้ให้บริการส่วนใหญ่จะใช้ระบบคลาวด์ แต่คำแนะนำแรกนี้ ในชุด 2 ตอนจะมุ่งเน้นไปที่ผู้ให้บริการในชุมชนที่ชื่อ Browser AI ซึ่งสร้างโดย Jakob Hoeg Mørk (ผู้ที่ได้รับ เงินทุนจาก Google) AI ในเบราว์เซอร์ช่วยให้คุณใช้ Prompt API กับ AI SDK ของ Vercel ได้ ส่วนที่ 2 ของซีรีส์จะอธิบายวิธีเพิ่มอินเทอร์เฟซผู้ใช้แบบกราฟิกให้กับแอปพลิเคชัน AI
ติดตั้งไลบรารี
แพ็กเกจ @browser-ai/core
คือผู้ให้บริการ AI SDK สำหรับ Prompt API คุณติดตั้งได้ด้วย npm
แพ็กเกจจะติดตั้ง Vercel AI SDK ที่อยู่เบื้องหลังโดยอัตโนมัติเป็น
การขึ้นต่อกันแบบเพียร์
npm install @browser-ai/core
การใช้งานพื้นฐาน
วิธีใช้ผู้ให้บริการ
- นำเข้าตัวสร้าง
browserAIจากแพ็กเกจ@browser-ai/core - นำเข้าฟังก์ชัน
generateText()หรือstreamText()จาก Vercel AI SDK ทั้ง 2 ฟังก์ชันจะสร้างข้อความและเรียกใช้เครื่องมือสำหรับพรอมต์ที่กำหนดโดยใช้โมเดลภาษา
- ฟังก์ชัน
generateText()ไม่ใช่การสตรีมและเหมาะสำหรับเอาต์พุตสั้นๆ หรือเอาต์พุตที่คุณจะดำเนินการต่อได้เมื่อได้รับเอาต์พุตทั้งหมดแล้วเท่านั้น - ฟังก์ชัน
streamText()จะสตรีมข้อความที่สร้างขึ้นจากโมเดลภาษา คุณสามารถใช้ฟังก์ชันนี้สำหรับกรณีการใช้งานแบบอินเทอร์แอกทีฟ เช่น แชทบอท และแอปพลิเคชันแบบเรียลไทม์อื่นๆ
วิธีสร้างอินสแตนซ์โมเดล
โทรมาที่
browserAI()หมายเหตุ: แนวทางปฏิบัติแนะนำคือให้ตรวจสอบavailability()ของโมเดลเสมอ ซึ่งจะช่วยให้คุณใช้การสำรองได้ (ดูการใช้งานแบบไฮบริด) เมื่อโมเดล'unavailable'หรือแสดงการอัปเดตความคืบหน้าเมื่อโมเดล'downloadable'หรือ'downloading'จากนั้นคุณสามารถโทรหา
generateText()หรือstreamText()ได้ ดูรายการพารามิเตอร์ทั้งหมดได้ในเอกสารประกอบของ Vercel AI SDK เช่น คุณสามารถส่งออบเจ็กต์messagesที่ซับซ้อนมากขึ้นสำหรับการแจ้งหลายครั้ง หรือ ส่งพรอมต์systemแทนการส่งpromptโดยตรงตามตัวอย่างโค้ดต่อไปนี้
import { browserAI } from '@browser-ai/core';
import { generateText, streamText } from 'ai';
(async () => {
const model = browserAI();
const availability = await model.availability();
if (availability === 'unavailable') {
console.log('Your browser cannot run the built-in AI model.');
return;
}
if (availability === 'downloadable' || availability === 'downloading') {
await model.createSessionWithProgress((progress) => {
console.log(`Download progress: ${Math.round(progress * 100)}%`);
});
}
// Non-streaming text generation.
const { text } = await generateText({
model,
prompt: 'Tell me a short joke',
});
console.log(text);
// Streaming text generation.
const result = streamText({
model,
prompt: 'Tell me a long joke',
});
for await (const chunk of result.textStream) {
console.log(chunk);
}
})();
การใช้งานแบบหลายรูปแบบ
แพ็กเกจ @browser-ai/core รองรับอินพุตหลายรูปแบบโดยใช้ออบเจ็กต์ type: 'file'
ในออบเจ็กต์เนื้อหาของอาร์เรย์ messages
content ฟิลด์ออบเจ็กต์ (type: 'file')
| ฟิลด์ | ประเภทค่าที่ยอมรับ | คำอธิบาย |
|---|---|---|
type |
'file' |
ทำเครื่องหมายออบเจ็กต์เนื้อหานี้เป็นอินพุตไฟล์ |
data |
string | Uint8Array | Buffer | ArrayBuffer | URL |
เนื้อหาไฟล์ในรูปแบบที่รองรับ |
เมื่อ data เป็น string ค่าดังกล่าวต้องเป็นค่าใดค่าหนึ่งต่อไปนี้
| รูปแบบ | คำอธิบาย |
|---|---|
| เนื้อหาที่เข้ารหัส Base64 | ไบต์ของไฟล์ดิบที่เข้ารหัสเป็น Base64 |
| URL ข้อมูล Base64 | เช่น data:image/png;base64,... |
| URL ของ http(s) | URL ระยะไกลที่จะดึงข้อมูลไฟล์ |
ดูตัวอย่างได้ที่ข้อมูลโค้ดต่อไปนี้
import { streamText } from 'ai';
import { browserAI } from '@browser-ai/core';
const base64ImageData = await getBase64ImageData();
const audioData = await getAudioBuffer();
const result = streamText({
model: browserAI(),
messages: [
{
role: 'user',
content: [
{ type: 'text', text: "What's in this image?" },
{ type: 'file', mediaType: 'image/png', data: base64ImageData },
],
},
{
role: 'user',
content: [
{ type: 'text', text: 'Transcribe this audio file!' },
{ type: 'file', mediaType: 'audio/mp3', data: audioData },
],
},
],
});
for await (const chunk of result.textStream) {
console.log(chunk);
}
เอาต์พุตที่มีโครงสร้าง
Vercel AI SDK รองรับเอาต์พุตที่มีโครงสร้างผ่าน zod ซึ่งเป็น การตรวจสอบสคีมาที่ใช้ TypeScript เป็นหลักพร้อมการอนุมานประเภทแบบคงที่ ดูรายละเอียดได้ที่เอกสารประกอบการกำหนดสคีมาของ Zod
หากต้องการขอออบเจ็กต์ JSON ที่ตรงกับสคีมา ให้ส่ง output: Output.object({
schema }) ไปยัง generateText() หรือ streamText()
generateText()ที่มีOutput.object()จะแสดงออบเจ็กต์ JSON สุดท้าย ในช่องoutputเมื่อสร้างเสร็จแล้วstreamText()ที่มีOutput.object()จะให้partialOutputStreamasync iterable ซึ่งรับประกันว่าผลลัพธ์ระดับกลางแต่ละรายการจะแยกวิเคราะห์ เป็น JSON ได้อย่างถูกต้อง เช่น หากสคีมาบังคับใช้อาร์เรย์ของตัวเลข 2 ตัว คุณจะได้รับ[]เป็นผลลัพธ์บางส่วนแรก[123]เป็นผลลัพธ์บางส่วนที่ 2 และ[123, 456]เป็นผลลัพธ์สุดท้าย
import { browserAI } from '@browser-ai/core';
import { generateText, streamText, Output } from 'ai';
import z from 'zod';
const model = browserAI();
const schema = z.object({
recipe: z.object({
name: z.string(),
ingredients: z.array(z.object({ name: z.string(), amount: z.string() })),
steps: z.array(z.string()),
}),
});
const prompt = 'Generate a lasagna recipe.';
// Non-streaming object generation.
const { output } = await generateText({
model,
output: Output.object({ schema }),
prompt,
});
console.log(output);
// Streaming object generation.
const { partialOutputStream } = streamText({
model,
output: Output.object({ schema }),
prompt,
});
for await (const partialObject of partialOutputStream) {
console.log(partialObject);
}
การใช้งานแบบผสม
สิ่งที่ทำให้ AI SDK ของ Vercel โดดเด่นจริงๆ คือการใช้งานแบบไฮบริด โดยจะจัดเลเยอร์การแยกรายละเอียดระดับสูงกว่า
ไว้เหนือการติดตั้งใช้งานระดับล่างกว่า
ของผู้ให้บริการพื้นฐาน เมื่อใช้ Prompt API เป็นผู้ให้บริการ คุณจะสร้าง
model ได้โดยการเรียกตัวสร้าง browserAI
import { browserAI } from '@browser-ai/core';
const model = browserAI();
หากต้องการใช้ผู้ให้บริการรายอื่น เช่น ผู้ให้บริการ Generative AI ของ Google คุณต้องทำดังนี้
ติดตั้งผู้ให้บริการที่เลือก
npm install @ai-sdk/googleสร้างอินสแตนซ์ของ
modelโดยใช้ตัวสร้างของผู้ให้บริการ ซึ่งโดยปกติแล้วสำหรับผู้ให้บริการระบบคลาวด์ เช่น Google Generative AI จะเกี่ยวข้องกับการส่งคีย์ API ในกรณีของผู้ให้บริการ Generative AI ของ Google คุณยังสามารถ ส่งตัวระบุโมเดลระบบคลาวด์ได้ด้วย เช่น'gemini-2.5-flash'ส่วนโค้ดที่เหลือทั้งหมด เช่น การเรียกใช้streamText()จะยังคงเหมือนเดิมทุกประการimport { createGoogleGenerativeAI } from '@ai-sdk/google'; const API_KEY = 'YOUR_GOOGLE_AI_API_KEY'; const google = createGoogleGenerativeAI({ apiKey: API_KEY }); const model = google('gemini-2.5-flash');
การสำรองข้อมูลในระบบคลาวด์
กรณีการใช้งานแบบไฮบริดคลาสสิกคือการใช้ Prompt API เมื่อพร้อมใช้งานและ
เปลี่ยนไปใช้ผู้ให้บริการระบบคลาวด์ในกรณีอื่นๆ หากต้องการตรวจสอบว่า Prompt API
พร้อมใช้งานหรือไม่ @browser-ai/core แพ็กเกจมีฟังก์ชัน doesBrowserSupportBuiltInAI()
คุณสามารถใช้ฟังก์ชันนี้เพื่อสร้างอินสแตนซ์ model แบบไดนามิกเป็นโมเดลบนคลาวด์หรือโมเดลในตัว
ก็ได้
import { doesBrowserSupportBuiltInAI } from '@browser-ai/core';
const API_KEY = 'YOUR_GOOGLE_AI_API_KEY';
const model = await (async () => {
if (doesBrowserSupportBuiltInAI()) {
const { browserAI } = await import('@browser-ai/core');
return browserAI();
}
const { createGoogleGenerativeAI } = await import('@ai-sdk/google');
const google = createGoogleGenerativeAI({ apiKey: API_KEY });
return google('gemini-2.5-flash');
})();
การสำรองข้อมูลในตัว
อีกกรณีการใช้งานแบบไฮบริดคือการใช้ผู้ให้บริการระบบคลาวด์เมื่อออนไลน์ แต่ให้กลับไปใช้ผู้ให้บริการในตัวหาก Prompt API รองรับ
import { doesBrowserSupportBuiltInAI } from '@browser-ai/core';
const API_KEY = 'YOUR_GOOGLE_AI_API_KEY';
let model;
const switchProvider = async (forceCloud = false) => {
model = await (async () => {
if (navigator.onLine || forceCloud) {
const { createGoogleGenerativeAI } = await import('@ai-sdk/google');
const google = createGoogleGenerativeAI({ apiKey: API_KEY });
return google('gemini-2.5-flash');
}
const { browserAI } = await import('@browser-ai/core');
return browserAI();
})();
};
if (doesBrowserSupportBuiltInAI()) {
window.addEventListener('online', switchProvider);
window.addEventListener('offline', switchProvider);
}
await switchProvider(true);
สาธิต
การสาธิตแบบสด
ช่วยให้คุณลองใช้ผู้ให้บริการทั้ง 2 รายแบบเทียบกันได้ เลือก Cloud API (Gemini 2.5
Flash) หรือ AI ในตัว จากปุ่มตัวเลือก กดเรียกใช้ แล้วดูหน้าเว็บเติมข้อมูลใน 4 ส่วนตามลำดับ ได้แก่ มุกตลกสั้นๆ ที่สร้างขึ้นพร้อมกันด้วย generateText() มุกตลกยาวๆ ที่สตรีมโทเค็นทีละรายการด้วย streamText() สูตรลาซานญ่าที่แสดงเป็นออบเจ็กต์ JSON ที่สมบูรณ์ จากนั้นสูตรเดียวกันนั้นจะสตรีมเป็น JSON ที่ถูกต้องแบบเพิ่มขึ้นโดยใช้ partialOutputStream หากเลือก AI ในตัวและเบราว์เซอร์ยังไม่ได้ดาวน์โหลดโมเดล ตัวบ่งชี้ความคืบหน้าจะปรากฏขึ้นก่อนที่การสาธิตจะเริ่ม

ขั้นตอนถัดไป
ตอนนี้คุณทราบวิธีใช้ Prompt API กับ Vercel AI SDK แล้ว ขั้นตอนถัดไปคือการใช้UI ของ AI SDK และองค์ประกอบ AI เพื่อเพิ่มอินเทอร์เฟซผู้ใช้แบบกราฟิกในแอป
UI ของ AI SDK ออกแบบมาเพื่อช่วยคุณสร้างแอปพลิเคชันแชทแบบอินเทอร์แอกทีฟ การเติมข้อความ และ แอปพลิเคชันผู้ช่วยได้อย่างง่ายดาย เป็นชุดเครื่องมือที่ไม่ขึ้นกับเฟรมเวิร์ก ซึ่งช่วยเพิ่มความคล่องตัวให้กับการผสานรวมฟังก์ชันการทำงานของ AI ขั้นสูงเข้ากับแอปพลิเคชันของคุณ
AI Elements คือคลังคอมโพเนนต์และรีจิสทรีที่กำหนดเองซึ่งจะช่วยให้คุณสร้างแอปพลิเคชันที่ทำงานด้วยระบบ AI ได้เร็วขึ้น โดยมีคอมโพเนนต์ที่สร้างไว้ล่วงหน้า เช่น การสนทนา ข้อความ และอื่นๆ
อ่านใช้ UI และองค์ประกอบ AI ของ Vercel AI SDK กับ Prompt API เพื่อดูวิธีเพิ่ม GUI ลงในแอป