Prompt API

เผยแพร่: 20 พฤษภาคม 2025 อัปเดตล่าสุด: 21 ตุลาคม 2026

วิดีโออธิบาย เว็บ ส่วนขยาย สถานะ Chrome ความตั้งใจ
GitHub Chrome 148 Chrome 138 ดู Intent to Ship
GitHub ช่วงทดลองใช้จากต้นทาง ช่วงทดลองใช้จากต้นทางสำหรับพารามิเตอร์การสุ่มตัวอย่าง Chrome 148 ดู ความตั้งใจที่จะทดสอบ

Prompt API ช่วยให้คุณส่งคำขอภาษาธรรมชาติไปยังโมเดลพื้นฐานใน Chrome ได้

คุณใช้ Prompt API ได้หลายวิธี ตัวอย่างเช่น คุณสามารถสร้างสิ่งต่อไปนี้ได้

  • การค้นหาที่ทำงานด้วยระบบ AI: ตอบคำถามโดยอิงตามเนื้อหาของหน้าเว็บ
  • ฟีดข่าวที่คัดสรรมาให้ผู้ใช้โดยเฉพาะ: สร้างฟีดที่จัดประเภทบทความตามหมวดหมู่แบบไดนามิก และอนุญาตให้ผู้ใช้กรองเนื้อหาดังกล่าว
  • ตัวกรองเนื้อหาที่กำหนดเอง วิเคราะห์บทความข่าวและเบลอหรือซ่อนเนื้อหาโดยอัตโนมัติตามหัวข้อที่ผู้ใช้กำหนด
  • การสร้างกิจกรรมในปฏิทิน พัฒนาส่วนขยาย Chrome ที่ดึงรายละเอียดกิจกรรมจากหน้าเว็บโดยอัตโนมัติ เพื่อให้ผู้ใช้สร้างรายการในปฏิทินได้ในไม่กี่ขั้นตอน
  • การดึงข้อมูลรายชื่อติดต่อที่ราบรื่น สร้างส่วนขยายที่ดึงข้อมูลติดต่อจากเว็บไซต์ ซึ่งช่วยให้ผู้ใช้ติดต่อธุรกิจหรือเพิ่มรายละเอียดลงในรายชื่อติดต่อได้ง่ายขึ้น

นี่เป็นเพียงตัวอย่างบางส่วนเท่านั้น และเราตื่นเต้นที่จะได้เห็นสิ่งที่คุณสร้างสรรค์

ตรวจสอบข้อกำหนดเกี่ยวกับฮาร์ดแวร์

ข้อกำหนดต่อไปนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์และผู้ใช้ที่ใช้งานฟีเจอร์ต่างๆ โดยใช้ API เหล่านี้ใน Chrome เบราว์เซอร์อื่นๆ อาจมีข้อกำหนดในการทำงานที่แตกต่างกัน

Language Detector และ Translator API ทำงานใน Chrome บนเดสก์ท็อป API เหล่านี้ใช้ไม่ได้ในอุปกรณ์เคลื่อนที่

Prompt API, Summarizer API, Writer API, Rewriter API และ Proofreader API จะทำงานใน Chrome เมื่อเป็นไปตามเงื่อนไขต่อไปนี้

  • ระบบปฏิบัติการ: Windows 10 หรือ 11, macOS 13 ขึ้นไป (Ventura เป็นต้นไป), Linux หรือ ChromeOS (จากแพลตฟอร์ม 16389.0.0 เป็นต้นไป) ในอุปกรณ์ Chromebook Plus Chrome สำหรับ Android, iOS และ ChromeOS ในอุปกรณ์ที่ไม่ใช่ Chromebook Plus ยังไม่รองรับ API ที่ใช้โมเดลพื้นฐาน
  • พื้นที่เก็บข้อมูล: พื้นที่ว่างอย่างน้อย 22 GB ในวอลุ่มที่มีโปรไฟล์ Chrome ของคุณ
  • GPU หรือ CPU: โมเดลในตัวสามารถทำงานร่วมกับ GPU หรือ CPU ได้
    • GPU: VRAM มากกว่า 4 GB
    • CPU: RAM 16 GB ขึ้นไปและ CPU 4 คอร์ขึ้นไป
    • หมายเหตุ: Prompt API ที่มีอินพุตเสียงต้องใช้ GPU
  • เครือข่าย: อินเทอร์เน็ตไม่จำกัดหรือการเชื่อมต่อแบบไม่มีการวัดปริมาณอินเทอร์เน็ต

ขนาดที่แน่นอนของ Gemini Nano อาจแตกต่างกันไปเมื่อเบราว์เซอร์อัปเดตโมเดล หากต้องการดูขนาดปัจจุบัน ให้ไปที่ chrome://on-device-internals

ใช้ Prompt API

Prompt API ใช้โมเดล Gemini Nano ใน Chrome แม้ว่า API จะติดตั้งมาใน Chrome แต่ระบบจะดาวน์โหลดโมเดลแยกต่างหากในครั้งแรกที่ต้นทางใช้ API

หากต้องการตรวจสอบว่าโมเดลพร้อมใช้งานหรือไม่ ให้เรียกใช้ LanguageModel.availability()

const availability = await LanguageModel.availability({
  // The same options in `prompt()` or `promptStreaming()`
});

หากต้องการทริกเกอร์การดาวน์โหลดและสร้างอินสแตนซ์โมเดลภาษา ให้ตรวจสอบกิจกรรมของผู้ใช้ จากนั้นเรียกใช้ฟังก์ชัน create()

const session = await LanguageModel.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  },
});

หากคำตอบสำหรับ availability() คือ downloading ให้ฟังความคืบหน้าในการดาวน์โหลดและแจ้งให้ผู้ใช้ทราบ เนื่องจากการดาวน์โหลดอาจใช้เวลาสักครู่

สร้างเซสชัน

เมื่อ Prompt API ทำงานได้แล้ว คุณจะสร้างเซสชันด้วยฟังก์ชัน create()

const session = await LanguageModel.create();

ออบเจ็กต์ตัวเลือกที่ไม่บังคับของฟังก์ชัน create() จะใช้ช่อง signal ซึ่งช่วยให้คุณส่ง AbortSignal เพื่อทำลายเซสชันได้

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

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

พารามิเตอร์การสุ่มตัวอย่าง

การควบคุมการสุ่มตัวอย่างช่วยให้คุณปรับแต่งความสามารถในการคาดเดา (เชิงกำหนด) หรือความคิดสร้างสรรค์ (หลากหลาย) ของคำตอบจากโมเดลได้ ความพร้อมใช้งานของพารามิเตอร์การสุ่มตัวอย่างจะแตกต่างกันระหว่างแพลตฟอร์มเว็บและส่วนขยาย Chrome ดังนี้

  • เว็บ: ใช้ตัวเลือก samplingMode ซึ่งใช้ค่า enum ที่สื่อความหมายแทนตัวเลขดิบเพื่อปรับความสามารถในการคาดการณ์เอาต์พุต
  • ส่วนขยาย Chrome: ระบบรองรับพารามิเตอร์ตัวเลขเดิม (topK, temperature) และเมธอด LanguageModel.params()

โหมดการสุ่มตัวอย่างเว็บ

ส่งตัวเลือก samplingMode ไปยัง LanguageModel.create() (หรือ LanguageModel.availability())

ค่า enum ของ samplingMode ที่รองรับมีดังนี้

  • "most-predictable": มีความแน่นอนและคาดการณ์ได้สูงสุด
  • "predictable": เอาต์พุตที่คาดการณ์ได้มากขึ้นโดยมีความแปรปรวนน้อยที่สุด
  • "slightly-predictable": ผลลัพธ์ที่คาดเดาได้เล็กน้อย
  • "balanced": ความสมดุลระหว่างความสามารถในการคาดเดาและความคิดสร้างสรรค์ (ลักษณะการทำงานเริ่มต้นทั่วไป)
  • "slightly-creative": ผลลัพธ์ที่หลากหลายและสร้างสรรค์เล็กน้อย
  • "creative": ผลลัพธ์ที่สร้างสรรค์และหลากหลาย
  • "most-creative": ความหลากหลายและความคิดสร้างสรรค์สูงสุด
// Available on the web with the Sampling Parameters Origin Trial enabled
const session = await LanguageModel.create({
  samplingMode: 'creative',
});

// The configured sampling mode is exposed on the session instance
console.log(session.samplingMode);
// "creative"

พารามิเตอร์การสุ่มตัวอย่างสำหรับส่วนขยาย Chrome

เมื่อใช้ Prompt API ในส่วนขยาย Chrome คุณจะยังคงปรับแต่งแต่ละเซสชันด้วย topK และ temperature ได้โดยใช้ออบเจ็กต์ตัวเลือก

ฟังก์ชัน LanguageModel.params() แบบคงที่จะแจ้งให้คุณทราบถึงขีดจำกัดพารามิเตอร์เริ่มต้นและสูงสุดของโมเดลภาษา ดังนี้

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

// Initializing a new session in extensions must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
  temperature: Math.min(params.defaultTemperature * 1.2, params.maxTemperature),
  topK: params.defaultTopK,
});

console.log(slightlyHighTemperatureSession.temperature);
console.log(slightlyHighTemperatureSession.topK);

เพิ่มบริบทด้วยพรอมต์เริ่มต้น

พรอมต์เริ่มต้นช่วยให้คุณระบุบริบทเกี่ยวกับการโต้ตอบก่อนหน้าให้โมเดลภาษาได้ เช่น เพื่ออนุญาตให้ผู้ใช้กลับมาใช้เซสชันที่จัดเก็บไว้ต่อหลังจากรีสตาร์ทเบราว์เซอร์

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.' },
    { role: 'user', content: 'What language is spoken there?' },
    {
      role: 'assistant',
      content: 'The official language of Italy is Italian. [...]',
    },
  ],
});

จำกัดคำตอบด้วยคำนำหน้า

คุณสามารถเพิ่มบทบาท "assistant" นอกเหนือจากบทบาทก่อนหน้าเพื่ออธิบายคำตอบก่อนหน้าของโมเดลอย่างละเอียดได้ เช่น

const followup = await session.prompt([
  {
    role: "user",
    content: "I'm nervous about my presentation tomorrow"
  },
  {
    role: "assistant",
    content: "Presentations are tough!"
  }
]);

ในบางกรณี แทนที่จะขอคำตอบใหม่ คุณอาจต้องการกรอกข้อมูลบางส่วนในข้อความตอบกลับของบทบาท "assistant" ไว้ล่วงหน้า ซึ่งจะเป็นประโยชน์ในการแนะนำโมเดลภาษาให้ใช้รูปแบบการตอบกลับที่เฉพาะเจาะจง โดยเพิ่ม prefix: true ลงในข้อความบทบาท "assistant" ต่อท้าย เช่น

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

เพิ่มอินพุตและเอาต์พุตที่คาดหวัง

Prompt API มีความสามารถแบบหลายโมดัลและรองรับหลายภาษา ตั้งค่ารูปแบบและภาษาของ expectedInputs และ expectedOutputs เมื่อสร้างเซสชัน

  • type: คาดว่าจะมีการระบุรูปแบบการขนส่ง
    • สำหรับ expectedInputs ค่านี้อาจเป็น text, image หรือ audio
    • สำหรับ expectedOutputs นั้น Prompt API จะอนุญาตเฉพาะ text เท่านั้น
  • languages: อาร์เรย์เพื่อตั้งค่าภาษาที่คาดไว้ Prompt API รองรับ "en", "ja", "es", "de" และ "fr" เรากำลังพัฒนาการรองรับภาษาอื่นๆ เพิ่มเติม
    • สำหรับ expectedInputs ให้ตั้งค่าภาษาของพรอมต์ของระบบและภาษาของพรอมต์ของผู้ใช้ที่คาดไว้ตั้งแต่ 1 ภาษาขึ้นไป
    • ตั้งค่าภาษา expectedOutputs อย่างน้อย 1 ภาษา
const session = await LanguageModel.create({
  expectedInputs: [
    { type: "text", languages: ["en" /* system prompt */, "ja" /* user prompt */] }
  ],
  expectedOutputs: [
    { type: "text", languages: ["ja"] }
  ]
});

คุณอาจได้รับ "NotSupportedError" DOMException หากโมเดลพบอินพุตหรือเอาต์พุตที่ไม่รองรับ

ความสามารถในการประมวลผลข้อมูลหลายรูปแบบ

ความสามารถเหล่านี้ช่วยให้คุณทำสิ่งต่อไปนี้ได้

  • อนุญาตให้ผู้ใช้ถอดเสียงข้อความเสียงที่ส่งในแอปพลิเคชันแชท
  • อธิบายรูปภาพที่อัปโหลดไปยังเว็บไซต์เพื่อใช้ในคำอธิบายภาพหรือข้อความแสดงแทน

ดูการสาธิตพรอมต์เสียงของ Mediarecorder สำหรับการใช้ Prompt API กับอินพุตเสียง และการสาธิตพรอมต์รูปภาพ Canvas สำหรับการใช้ Prompt API กับอินพุตรูปภาพ

Prompt API รองรับอินพุตประเภทต่อไปนี้

ข้อมูลโค้ดนี้แสดงเซสชันแบบหลายโมดัลที่ประมวลผลภาพ 2 ภาพก่อน (รูปภาพ Blob 1 รูปและ HTMLCanvasElement 1 รายการ) และให้ AI เปรียบเทียบภาพทั้งสอง จากนั้นจึงให้ผู้ใช้ตอบกลับด้วยการบันทึกเสียง (เป็น AudioBuffer)

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

const referenceImage = await (await fetch("reference-image.jpeg")).blob();
const userDrawnImage = document.querySelector("canvas");

const response1 = await session.prompt([
  {
    role: "user",
    content: [
      {
        type: "text",
        value:
          "Give a helpful artistic critique of how well the second image matches the first:",
      },
      { type: "image", value: referenceImage },
      { type: "image", value: userDrawnImage },
    ],
  },
]);
console.log(response1);

const audioBuffer = await captureMicrophoneInput({ seconds: 10 });

const response2 = await session.prompt([
  {
    role: "user",
    content: [
      { type: "text", value: "My response to your critique:" },
      { type: "audio", value: audioBuffer },
    ],
  },
]);
console.log(response2);

เพิ่มข้อความต่อท้าย

การอนุมานอาจใช้เวลาสักครู่ โดยเฉพาะเมื่อใช้พรอมต์ที่มีอินพุตแบบหลายโมดัล การส่งพรอมต์ที่กำหนดไว้ล่วงหน้าเพื่อป้อนข้อมูลในเซสชันอาจเป็นประโยชน์ เพื่อให้โมเดลเริ่มประมวลผลได้ทันที

แม้ว่า initialPrompts จะมีประโยชน์ในการสร้างเซสชัน แต่คุณสามารถใช้เมธอด append() นอกเหนือจากเมธอด prompt() หรือ promptStreaming() เพื่อให้พรอมต์ตามบริบทเพิ่มเติมหลังจากสร้างเซสชันแล้ว

เช่น

const session = await LanguageModel.create({
  initialPrompts: [
    {
      role: 'system',
      content:
        'You are a skilled analyst who correlates patterns across multiple images.',
    },
  ],
  expectedInputs: [{ type: 'image' }],
});

fileUpload.onchange = async () => {
  await session.append([
    {
      role: 'user',
      content: [
        {
          type: 'text',
          value: `Here's one image. Notes: ${fileNotesInput.value}`,
        },
        { type: 'image', value: fileUpload.files[0] },
      ],
    },
  ]);
};

analyzeButton.onclick = async (e) => {
  analysisResult.textContent = await session.prompt(userQuestionInput.value);
};

Promise ที่ append() แสดงผลจะดำเนินการเมื่อพรอมต์ได้รับการตรวจสอบ ประมวลผล และเพิ่มลงในเซสชันแล้ว ระบบจะปฏิเสธสัญญาหากไม่สามารถเพิ่มพรอมต์ได้

ส่งสคีมา JSON

เพิ่มช่อง responseConstraint ลงในเมธอด prompt() หรือ promptStreaming() เพื่อส่งสคีมา JSON เป็นค่า จากนั้นคุณจะใช้เอาต์พุตที่มีโครงสร้างกับ Prompt API ได้

ในตัวอย่างต่อไปนี้ สคีมา JSON จะตรวจสอบว่าโมเดลตอบกลับด้วย true หรือ false เพื่อแยกประเภทว่าข้อความที่ระบุเกี่ยวกับเครื่องปั้นดินเผาหรือไม่

const session = await LanguageModel.create();

const schema = {
  "type": "boolean"
};

const post = "Mugs and ramen bowls, both a bit smaller than intended, but that
happens with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";

const result = await session.prompt(
  `Is this post about pottery?\n\n${post}`,
  {
    responseConstraint: schema,
  }
);
console.log(JSON.parse(result));
// true

การติดตั้งใช้งานของคุณอาจรวมสคีมา JSON หรือนิพจน์ทั่วไปเป็นส่วนหนึ่งของข้อความที่ส่งไปยังโมเดล ซึ่งจะใช้หน้าต่างบริบทบางส่วน คุณสามารถวัดปริมาณหน้าต่างบริบทที่จะใช้ได้โดยส่งตัวเลือก responseConstraint ไปยัง session.measureContextUsage()

คุณหลีกเลี่ยงลักษณะการทำงานนี้ได้โดยใช้ตัวเลือก omitResponseConstraintInput หากคุณทำเช่นนั้น เราขอแนะนำให้ใส่คำแนะนำบางอย่างในพรอมต์ ดังนี้

const result = await session.prompt(`
  Summarize this feedback into a rating between 0-5. Only output a JSON
  object { rating }, with a single property whose value is a number:
  The food was delicious, service was excellent, will recommend.
`, { responseConstraint: schema, omitResponseConstraintInput: true });

พรอมต์โมเดล

คุณสามารถใช้พรอมต์กับโมเดลด้วยฟังก์ชัน prompt() หรือ promptStreaming() ก็ได้

เอาต์พุตตามคำขอ

หากคาดหวังผลลัพธ์สั้นๆ คุณสามารถใช้ฟังก์ชัน prompt() ที่จะแสดงผลการตอบกลับเมื่อพร้อมใช้งาน

// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const available = await LanguageModel.availability({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});

if (available !== 'unavailable') {
  const session = await LanguageModel.create();

  // Prompt the model and wait for the whole result to come back.
  const result = await session.prompt('Write me a poem!');
  console.log(result);
}

เอาต์พุตแบบสตรีม

หากคาดว่าคำตอบจะยาว คุณควรใช้ฟังก์ชัน promptStreaming() ซึ่งช่วยให้คุณแสดงผลลัพธ์บางส่วนเมื่อได้รับจากโมเดล ฟังก์ชัน promptStreaming() จะแสดงผล ReadableStream

const available = await LanguageModel.availability({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});
if (available !== 'unavailable') {
  const session = await LanguageModel.create();

  // Prompt the model and stream the result:
  const stream = session.promptStreaming('Write me an extra-long poem!');
  for await (const chunk of stream) {
    console.log(chunk);
  }
}

หยุดการเขียนพรอมต์

ทั้ง prompt() และ promptStreaming() ยอมรับพารามิเตอร์ที่ 2 ที่ไม่บังคับซึ่งมีช่อง signal ซึ่งช่วยให้คุณหยุดเรียกใช้พรอมต์ได้

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

const result = await session.prompt('Write me a poem!', {
  signal: controller.signal,
});

การจัดการเซสชัน

แต่ละเซสชันจะติดตามบริบทของการสนทนา ระบบจะพิจารณาการโต้ตอบก่อนหน้าสำหรับการโต้ตอบในอนาคตจนกว่าหน้าต่างบริบทของเซสชันจะเต็ม

แต่ละเซสชันมีจำนวนโทเค็นสูงสุดที่ประมวลผลได้ ตรวจสอบความคืบหน้าของคุณเกี่ยวกับขีดจำกัดนี้ด้วยวิธีต่อไปนี้

console.log(`${session.contextUsage}/${session.contextWindow}`);

คุณสามารถส่งพรอมต์ที่ทำให้หน้าต่างบริบทมีข้อมูลมากเกินไปได้ ในกรณีเช่นนี้ ระบบจะนำส่วนแรกๆ ของการสนทนากับโมเดลภาษาออกทีละคู่พรอมต์และคำตอบ จนกว่าจะมีโทเค็นเพียงพอที่จะประมวลผลพรอมต์ใหม่ ยกเว้นพรอมต์ของระบบซึ่งจะไม่มีการนำออก

คุณสามารถตรวจจับการล้นดังกล่าวได้โดยการฟังเหตุการณ์ contextoverflow ในเซสชัน ดังนี้

session.addEventListener("contextoverflow", () => {
  console.log("We've gone past the context window, and some inputs will be dropped!");
});

หากไม่สามารถนำโทเค็นออกจากประวัติการสนทนาได้มากพอที่จะประมวลผลพรอมต์ใหม่ การเรียกใช้ prompt() หรือ promptStreaming() จะไม่สำเร็จพร้อมข้อยกเว้น QuotaExceededError และจะไม่มีการนำสิ่งใดออก QuotaExceededError มีพร็อพเพอร์ตี้ต่อไปนี้

  • requested: จำนวนโทเค็นที่ประกอบเป็นอินพุต
  • contextWindow: จำนวนโทเค็นที่ใช้ได้

ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการเซสชัน

โคลนเซสชัน

หากต้องการรักษาทรัพยากรไว้ คุณสามารถคัดลอกเซสชันที่มีอยู่ด้วยฟังก์ชัน clone() ซึ่งจะสร้างการแยกการสนทนา โดยที่บริบทและพรอมต์เริ่มต้นจะยังคงอยู่

ฟังก์ชัน clone() จะรับออบเจ็กต์ตัวเลือกที่ไม่บังคับซึ่งมีช่อง signal ซึ่งช่วยให้คุณส่ง AbortSignal เพื่อทำลายเซสชันที่โคลนได้

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

const clonedSession = await session.clone({
  signal: controller.signal,
});

สิ้นสุดเซสชัน

เรียก destroy() เพื่อเพิ่มทรัพยากรหากไม่ต้องการเซสชันอีกต่อไป เมื่อเซสชันถูกทำลาย จะไม่สามารถใช้งานได้อีกต่อไป และการดำเนินการที่ดำเนินอยู่จะถูกยกเลิก คุณอาจต้องการเก็บเซสชันไว้หากตั้งใจจะแสดงข้อความแจ้งโมเดลบ่อยๆ เนื่องจากการสร้างเซสชันอาจใช้เวลาสักครู่

await session.prompt(
  "You are a friendly, helpful assistant specialized in clothing choices."
);

session.destroy();

// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
  "What should I wear today? It is sunny, and I am choosing between a t-shirt
  and a polo."
);

การสาธิต

เราได้สร้างเดโมหลายรายการเพื่อสำรวจกรณีการใช้งานที่หลากหลายสำหรับ Prompt API การสาธิตต่อไปนี้เป็นเว็บแอปพลิเคชัน

หากต้องการทดสอบ Prompt API ในส่วนขยาย Chrome ให้ติดตั้งส่วนขยายสาธิต ซอร์สโค้ดของส่วนขยายมีอยู่ใน GitHub

กลยุทธ์ด้านประสิทธิภาพ

Prompt API สำหรับเว็บยังอยู่ระหว่างการพัฒนา ในระหว่างที่เราสร้าง API นี้ โปรดดูแนวทางปฏิบัติแนะนำเกี่ยวกับการจัดการเซสชันเพื่อให้ได้ประสิทธิภาพสูงสุด

นโยบายสิทธิ์, iframe และ Web Worker

โดยค่าเริ่มต้น Prompt API จะใช้ได้กับหน้าต่างระดับบนสุดและ iframe ต้นทางเดียวกันเท่านั้น คุณสามารถมอบสิทธิ์เข้าถึง API ให้กับ iframe แบบข้ามต้นทางได้โดยใช้แอตทริบิวต์ allow="" ของนโยบายสิทธิ์ ดังนี้

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Prompt API by
  setting the `allow="language-model"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="language-model"></iframe>

ปัจจุบัน Prompt API ยังไม่พร้อมใช้งานใน Web Worker เนื่องจากความซับซ้อนของการสร้างเอกสารที่รับผิดชอบสำหรับ Worker แต่ละรายการเพื่อตรวจสอบสถานะนโยบายสิทธิ์

เข้าร่วมและแชร์ความคิดเห็น

ข้อมูลของคุณจะส่งผลโดยตรงต่อวิธีที่เราสร้างและใช้งาน API นี้และ API ของ AI ในตัวทั้งหมดในเวอร์ชันต่อๆ ไป