Prompt API

เผยแพร่เมื่อ: 20 พฤษภาคม 2025, อัปเดตล่าสุด: 26 สิงหาคม 2026

วิดีโออธิบาย เว็บ ส่วนขยาย สถานะ Chrome ความตั้งใจ
GitHub Chrome 148 Chrome 138 ดู ความตั้งใจที่จะเผยแพร่
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 API ที่ใช้โมเดลพื้นฐานยังไม่รองรับ Chrome สำหรับ Android, iOS และ ChromeOS ในอุปกรณ์ที่ไม่ใช่ Chromebook Plus
  • พื้นที่เก็บข้อมูล: มีพื้นที่ว่างอย่างน้อย 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 แต่ระบบจะดาวน์โหลดโมเดลแยกกันในครั้งแรกที่ Origin ใช้ 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,
});

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

{: #sampling_parameters }

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

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

โหมดการสุ่มตัวอย่างเว็บ (ช่วงทดลองใช้จากต้นทาง)

เมื่อเข้าร่วมการทดลองใช้แบบ Origin Trial สำหรับพารามิเตอร์การสุ่มตัวอย่าง คุณสามารถส่งตัวเลือก 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() แบบคงที่จะแจ้งให้คุณทราบถึงขีดจำกัดพารามิเตอร์เริ่มต้นและสูงสุดของโมเดลภาษา ดังนี้

  • defaultTopK: ค่าเริ่มต้นของ top-K
  • maxTopK: ค่าสูงสุดของ top-K
  • defaultTemperature: อุณหภูมิเริ่มต้น
  • maxTemperature: อุณหภูมิสูงสุด
// 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 Audio Prompt สำหรับการใช้ Prompt API กับอินพุตเสียง และตัวอย่าง Canvas Image Prompt demo สำหรับการใช้ 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);
};

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

ส่ง JSON Schema

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

ในตัวอย่างต่อไปนี้ JSON Schema จะตรวจสอบว่าโมเดลตอบกลับด้วย 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 Schema หรือ Regular Expression เป็นส่วนหนึ่งของข้อความที่ส่งไปยังโมเดล ซึ่งจะใช้หน้าต่างบริบทบางส่วน คุณสามารถวัดจำนวนหน้าต่างบริบทที่จะใช้ได้โดยส่งตัวเลือก 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 ที่มี Origin เดียวกันเท่านั้น คุณสามารถมอบสิทธิ์เข้าถึง 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 เวอร์ชันนี้และ AI API ในตัวทั้งหมดในอนาคต