เผยแพร่เมื่อวันที่ 20 พฤษภาคม 2025
วิดีโออธิบาย | เว็บ | ส่วนขยาย | สถานะ Chrome | ความตั้งใจ |
---|---|---|---|---|
GitHub | ดู | ความตั้งใจที่จะทดสอบ |
Writer API ช่วยให้คุณสร้างเนื้อหาใหม่ที่สอดคล้องกับงานเขียนที่ระบุ Writer API และ Rewriter API เป็นส่วนหนึ่งของข้อเสนอ API ความช่วยเหลือด้านการเขียน
ซึ่ง API ของพาร์ทเนอร์เหล่านี้จะช่วยปรับปรุงเนื้อหาที่ผู้ใช้สร้างขึ้น
กรณีการใช้งาน
เขียนเนื้อหาใหม่โดยอิงตามไอเดียเริ่มต้นและบริบทที่ไม่บังคับ ซึ่งอาจใช้เพื่อวัตถุประสงค์ต่อไปนี้
- รองรับให้ผู้ใช้เขียนเนื้อหาประเภทใดก็ได้ เช่น รีวิว บล็อกโพสต์ หรืออีเมล
- ช่วยให้ผู้ใช้เขียนคำขอรับการสนับสนุนได้ดียิ่งขึ้น
- ร่างคํานําสําหรับชุดตัวอย่างงานเพื่อแสดงทักษะบางอย่างได้ดีขึ้น
หากไม่มี Use Case เข้าร่วมโปรแกรมทดลองใช้ก่อนเปิดตัวเพื่อแชร์ความคิดเห็น
เริ่มต้นใช้งาน
เข้าร่วมช่วงทดลองใช้ Writer API จากต้นทาง ซึ่งทํางานใน Chrome 137 ถึง 142
ตรวจสอบข้อกำหนดด้านฮาร์ดแวร์
เครื่องมือตรวจหาภาษาและ Translator API ใช้งานได้ในเดสก์ท็อปใน Chrome เท่านั้น
Prompt API, Summarizer API, Writer API และ Rewriter API จะทำงานใน Chrome ได้เมื่อมีคุณสมบัติตรงตามเงื่อนไขต่อไปนี้
- ระบบปฏิบัติการ: Windows 10 หรือ 11, macOS 13 ขึ้นไป (Ventura ขึ้นไป) หรือ Linux API ที่ Gemini Nano รองรับยังไม่รองรับ Chrome สำหรับ Android, iOS และ ChromeOS
- พื้นที่เก็บข้อมูล: อย่างน้อย 22 GB ในวอลุ่มที่มีโปรไฟล์ Chrome
- GPU: VRAM มากกว่า 4 GB เท่านั้น
- เครือข่าย: อินเทอร์เน็ตแบบไม่จำกัดหรือการเชื่อมต่อแบบไม่จำกัดปริมาณ
ข้อกำหนดเหล่านี้มีไว้สำหรับคุณในกระบวนการพัฒนาและผู้ใช้ของคุณที่ใช้ฟีเจอร์ที่คุณสร้างขึ้น
ลงชื่อสมัครทดลองใช้จากต้นทาง
Writer API พร้อมใช้งานในช่วงทดลองใช้จากต้นทางร่วมกับ Rewriter API วิธีเริ่มใช้ API เหล่านี้
- รับทราบนโยบายการใช้งานที่ไม่อนุญาตสำหรับ Generative AI ของ Google
- ไปที่ช่วงทดลองใช้ Writer API จากต้นทาง
- คลิกลงทะเบียน แล้วกรอกแบบฟอร์ม ในช่องต้นทางของเว็บ ให้ระบุต้นทางหรือรหัสส่วนขยาย
chrome-extension://YOUR_EXTENSION_ID
- คลิกลงทะเบียนเพื่อส่งข้อมูล
- คัดลอกโทเค็นที่ระบุ แล้วเพิ่มลงในหน้าเว็บทุกหน้าในต้นทางของคุณที่เข้าร่วม หรือรวมไว้ในไฟล์ Manifest ของส่วนขยาย
- เริ่มใช้ Writer และ Rewriter API
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเริ่มต้นใช้งานการทดสอบต้นทาง
เพิ่มการรองรับ localhost
หากต้องการเข้าถึง Writer และ Rewriter API ใน localhost ในระหว่างช่วงทดลองใช้จากต้นทาง คุณต้องอัปเดต Chrome เป็นเวอร์ชันล่าสุด จากนั้น ดำเนินการตามขั้นตอนเหล่านี้:
- ไปที่
chrome://flags/#writer-api-for-gemini-nano
- เลือกเปิดใช้
- คลิกเปิดใหม่หรือรีสตาร์ท Chrome
ใช้ Writer API
ก่อนอื่น ให้เรียกใช้การตรวจหาฟีเจอร์เพื่อดูว่าเบราว์เซอร์รองรับ API เหล่านี้หรือไม่
if ('Writer' in self) {
// The Writer API is supported.
}
Writer API และ AI API ในตัวอื่นๆ ทั้งหมดผสานรวมอยู่ในเบราว์เซอร์ ระบบจะดาวน์โหลด Gemini Nano แยกต่างหากเมื่อเว็บไซต์ใดก็ตามใช้ AI API ในตัวเป็นครั้งแรก ในทางปฏิบัติ หากผู้ใช้โต้ตอบกับ API ในตัวแล้ว แสดงว่าผู้ใช้ได้ดาวน์โหลดโมเดลลงในเบราว์เซอร์แล้ว
หากต้องการตรวจสอบว่าโมเดลพร้อมใช้งานหรือไม่ ให้เรียกใช้ฟังก์ชันแบบแอซิงโครนัส Writer.availability()
โดยจะแสดงผลสตริงที่มีค่าได้ 4 ค่า ดังนี้
unavailable
: เบราว์เซอร์รองรับ Writer API แต่ใช้งานไม่ได้ในขณะนี้ ซึ่งอาจเกิดจากสาเหตุหลายประการ เช่น พื้นที่ในดิสก์ไม่เพียงพอที่จะดาวน์โหลดโมเดลavailable
: เบราว์เซอร์รองรับ Writer API และพร้อมใช้งานทันทีdownloadable
: เบราว์เซอร์รองรับ Writer API แต่ต้องดาวน์โหลดรูปแบบก่อนdownloading
: เบราว์เซอร์รองรับ Writer API และกำลังดาวน์โหลดโมเดล
หากต้องการเรียกให้ดาวน์โหลดโมเดลและเริ่มโปรแกรมเขียน ให้เรียกใช้ฟังก์ชัน Writer.create()
หากคำตอบสำหรับ availability()
คือ downloadable
ให้ฟังความคืบหน้าการดาวน์โหลดและแจ้งให้ผู้ใช้ทราบ เนื่องจากอาจใช้เวลาสักครู่ในการดาวน์โหลด
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
ฟังก์ชัน API
ฟังก์ชัน create()
ช่วยให้คุณกําหนดค่าออบเจ็กต์ผู้เขียนใหม่ได้ โดยจะใช้ออบเจ็กต์ options
(ไม่บังคับ) ที่มีพารามิเตอร์ต่อไปนี้
tone
: ระดับภาษา อาจหมายถึงสไตล์ ลักษณะ หรือทัศนคติของเนื้อหา โดยสามารถตั้งค่าเป็นformal
,neutral
(ค่าเริ่มต้น) หรือcasual
format
: การจัดรูปแบบเอาต์พุตซึ่งมีค่าที่อนุญาตคือmarkdown
(ค่าเริ่มต้น) และplain-text
length
: ความยาวของเอาต์พุต ซึ่งมีค่าที่อนุญาตคือshort
,medium
(ค่าเริ่มต้น) และlong
sharedContext
: เมื่อเขียนเอาต์พุตหลายรายการ บริบทที่แชร์จะช่วยให้โมเดลสร้างเนื้อหาที่สอดคล้องกับความคาดหวังของคุณได้ดียิ่งขึ้น
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้นออบเจ็กต์ writer
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'casual',
format: 'plain-text',
length: 'medium',
};
const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
// The Writer API isn't usable.
return;
}
if (available === 'available') {
// The Writer API can be used immediately .
writer = await Writer.create(options);
} else {
// The Writer can be used after the model is downloaded.
writer = await Writer.create(options);
writer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
}
เริ่มเขียน
การส่งออกการเขียนจากโมเดลทำได้ 2 วิธี ได้แก่ แบบไม่สตรีมและสตรีม
เอาต์พุตแบบไม่สตรีม
เมื่อใช้การเขียนแบบไม่สตรีม โมเดลจะประมวลผลอินพุตทั้งหมดแล้วสร้างเอาต์พุต
หากต้องการเอาต์พุตแบบไม่สตรีม ให้เรียกใช้ฟังก์ชัน write()
แบบไม่พร้อมกัน คุณต้องใส่พรอมต์สำหรับเนื้อหาที่ต้องการเขียน คุณเพิ่มcontext
(ไม่บังคับ) เพื่อระบุข้อมูลเบื้องหลังของโมเดลได้ ซึ่งอาจช่วยให้โมเดลทำงานได้ตามที่คุณคาดหวังสำหรับเอาต์พุตมากขึ้น
// Non-streaming
const writer = await Writer.create();
const result = await writer.write(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
เอาต์พุตการเขียนสตรีม
สตรีมมิงแสดงผลลัพธ์แบบเรียลไทม์ เอาต์พุตจะอัปเดตอย่างต่อเนื่องเมื่อมีการเพิ่มและปรับอินพุต
หากต้องการรับโปรแกรมเขียนสตรีม ให้เรียกใช้ฟังก์ชัน writeStreaming()
แล้ววนซ้ำผ่านกลุ่มข้อความที่มีในสตรีม คุณเพิ่มcontext
(ไม่บังคับ) เพื่อระบุข้อมูลเบื้องหลังของโมเดลได้ ซึ่งอาจช่วยให้โมเดลทำงานได้ตามที่คุณคาดหวังสำหรับเอาต์พุตมากขึ้น
// Streaming
const writer = await Writer.create();
const stream = writer.writeStreaming(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
แชร์บริบทสำหรับงานหลายรายการ
คุณอาจต้องการใช้ writer
เพื่อสร้างเนื้อหาหลายรายการ ในกรณีนี้ คุณควรเพิ่ม sharedContext
เช่น คุณอาจต้องช่วยให้ผู้รีวิวแสดงความคิดเห็นที่เป็นประโยชน์มากขึ้น
// Shared context and per writing task context
const writer = await Writer.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = writer.writeStreaming(
"Write a blog post about how I love all this work on gen AI at Google!" +
"Mention that there's so much to learn and so many new things I can do!",
{ context: " The request comes from someone working at a startup providing an e-commerce CMS solution."}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
ใช้ผู้เขียนซ้ำ
คุณใช้ผู้เขียนคนเดียวกันเพื่อสร้างเนื้อหาหลายรายการได้
// Reuse a writer
const writer = await Writer.create({ tone: "formal" });
const reviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => writer.write(reviewEl.textContent)
),
);
หยุดผู้เขียน
หากต้องการสิ้นสุดกระบวนการเขียน ให้ยกเลิกตัวควบคุมและทำลายโปรแกรมเขียน
// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });
// Destroying a writer
writer.destroy();
สาธิต
มีส่วนร่วมและแชร์ความคิดเห็น
Writer และ Rewriter API อยู่ระหว่างการหารืออย่างต่อเนื่องและอาจมีการเปลี่ยนแปลงในอนาคต หากคุณลองใช้ API นี้แล้วมีความคิดเห็น เรายินดีรับฟัง
- อ่านคำอธิบาย ตั้งคำถาม และเข้าร่วมการสนทนา
- ตรวจสอบการใช้งาน Chrome ในสถานะ Chrome
- เข้าร่วมโปรแกรมตัวอย่างก่อนเปิดตัวเพื่อดูตัวอย่าง API ใหม่ก่อนเปิดตัวและเข้าถึงรายชื่ออีเมลของเรา
- หากมีความคิดเห็นเกี่ยวกับการใช้งาน Chrome ให้รายงานข้อบกพร่อง Chromium
สำรวจ AI API ในตัวทั้งหมดที่ใช้โมเดล ซึ่งรวมถึง Gemini Nano และโมเดลผู้เชี่ยวชาญอื่นๆ ในเบราว์เซอร์