language-model-prompt.tentative.https.window.js (2910B)
1 // META: title=Language Model Prompt 2 // META: script=/resources/testdriver.js 3 // META: script=../resources/util.js 4 // META: timeout=long 5 6 'use strict'; 7 8 promise_test(async () => { 9 await ensureLanguageModel(); 10 const session = await createLanguageModel(); 11 const result = await session.prompt(kTestPrompt); 12 assert_equals(typeof result, 'string'); 13 }, 'Simple LanguageModel.prompt() call'); 14 15 promise_test(async (t) => { 16 await ensureLanguageModel(); 17 const session = await createLanguageModel(); 18 assert_true(!!(await session.prompt([]))); 19 // Invalid input should be stringified. 20 assert_regexp_match(await session.prompt({}), /\[object Object\]/); 21 }, 'Check empty input'); 22 23 promise_test(async (t) => { 24 await ensureLanguageModel(); 25 const session = await createLanguageModel(); 26 assert_regexp_match(await session.prompt('shorthand'), /shorthand/); 27 assert_regexp_match( 28 await session.prompt([{role: 'system', content: 'shorthand'}]), 29 /shorthand/); 30 }, 'Check Shorthand'); 31 32 promise_test(async () => { 33 const options = { 34 initialPrompts: 35 [{role: 'user', content: [{type: 'text', value: 'The word of the day is regurgitation.'}]}] 36 }; 37 await ensureLanguageModel(options); 38 const session = await LanguageModel.create(options); 39 const tokenLength = await session.measureInputUsage(options.initialPrompts); 40 assert_greater_than(tokenLength, 0); 41 assert_equals(session.inputUsage, tokenLength); 42 assert_regexp_match( 43 await session.prompt([{role: 'system', content: ''}]), 44 /regurgitation/); 45 }, 'Test that initialPrompt counts towards session inputUsage'); 46 47 promise_test(async () => { 48 await ensureLanguageModel(); 49 const session = await createLanguageModel(); 50 const promise = new Promise(resolve => { 51 session.addEventListener("quotaoverflow", resolve); 52 }); 53 // Make sure there is something to evict. 54 const kLongPrompt = kTestPrompt.repeat(10); 55 const usage = await session.measureInputUsage(kLongPrompt); 56 assert_greater_than(session.inputQuota, usage); 57 await session.prompt(kLongPrompt); 58 // Generate a repeated kLongPrompt string that exceeds inputQuota. 59 assert_greater_than(session.inputUsage, 0); 60 const repeatCount = session.inputQuota / session.inputUsage; 61 const promptString = kLongPrompt.repeat(repeatCount); 62 // The prompt promise succeeds, while causing older input to be evicted. 63 await Promise.all([promise, session.prompt(promptString)]); 64 }, 'The `quotaoverflow` event is fired when overall usage exceeds the quota'); 65 66 promise_test(async t => { 67 await ensureLanguageModel(); 68 const session = await createLanguageModel(); 69 const promptString = kTestPrompt.repeat(session.inputQuota); 70 const requested = await session.measureInputUsage(promptString); 71 await promise_rejects_quotaexceedederror(t, session.prompt(promptString), requested, session.inputQuota); 72 }, 'Test that prompt input exeeding the total quota rejects');