tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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');