Files
sousa-gecko/testing/web-platform/tests/ai/language-model/language-model-create.tentative.https.window.js
T
Mike Wasserman 578c4035c3 Bug 2029365 [wpt PR 58888] - Prompt API: Setup experimental feature for sampling parameters, a=testonly
Automatic update from web-platform-tests
Prompt API: Setup experimental feature for sampling parameters

Adds a new runtime enabled feature "AIPromptAPIParams".
V0 restores legacy temperature and topK options and attributes.
Split handling of legacy params from other renamed identifiers.
Update IDL gating and comments. Consolidate deprecation notices.

Bug: 496663356
Change-Id: I6d3cb2701493582c8e6e7ccd24473d4bcd698b03
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7708992
Reviewed-by: Jingyun Liu <jingyun@google.com>
Auto-Submit: Mike Wasserman <msw@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Mike Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1608540}

--

wpt-commits: 01dec597449335db4ba39cc4ef082e8cfec18490
wpt-pr: 58888
2026-04-17 08:38:24 +00:00

101 lines
3.3 KiB
JavaScript

// META: title=Language Model Create
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=../resources/util.js
// META: timeout=long
'use strict';
promise_test(async t => {
await ensureLanguageModel();
}, 'Ensure sessions can be created');
promise_test(async t => {
let session = await createLanguageModel();
assert_true(session instanceof LanguageModel);
assert_equals(typeof session.prompt, 'function');
assert_equals(typeof session.promptStreaming, 'function');
assert_equals(typeof session.append, 'function');
assert_equals(typeof session.measureContextUsage, 'function');
assert_equals(typeof session.clone, 'function');
assert_equals(typeof session.destroy, 'function');
assert_equals(typeof session.contextUsage, 'number');
assert_equals(typeof session.contextWindow, 'number');
assert_equals(typeof session.oncontextoverflow, 'object');
}, 'LanguageModel.create() returns a valid object with default options');
promise_test(async t => {
await testMonitor(createLanguageModel);
}, 'LanguageModel.create() notifies its monitor on downloadprogress');
promise_test(async t => {
await testCreateMonitorWithAbort(t, createLanguageModel);
}, 'Progress events are not emitted after aborted.');
promise_test(async t => {
let session = await createLanguageModel({
initialPrompts: [
{role: 'system', content: 'you are a robot'},
{role: 'user', content: 'hello'}, {role: 'assistant', content: 'hello'}
]
});
assert_true(!!session);
}, 'Create with initialPrompts');
promise_test(async t => {
let session = await createLanguageModel({initialPrompts: []});
assert_true(!!session);
}, 'Create with empty initialPrompts');
promise_test(async t => {
let session = await createLanguageModel({
initialPrompts: [
{role: 'user', content: 'hello'}, {role: 'assistant', content: 'hello'}
]
});
assert_true(!!session);
}, 'Create with initialPrompts without system role');
promise_test(async t => {
let result1 = createLanguageModel({
initialPrompts: [
{role: 'user', content: 'hello'}, {role: 'assistant', content: 'hello'},
{role: 'system', content: 'you are a robot'}
]
});
await promise_rejects_js(t, TypeError, result1);
let result2 = createLanguageModel({
initialPrompts:
[{role: 'system', content: 'foo'}, {role: 'system', content: 'bar'}]
});
await promise_rejects_js(t, TypeError, result2);
}, 'Create with system role not ordered first should fail');
promise_test(async t => {
let result = createLanguageModel({
initialPrompts: [
{role: 'system', content: 'you are a robot'},
{role: 'system', content: 'you are a kitten'},
{role: 'user', content: 'hello'}, {role: 'assistant', content: 'hello'}
]
});
await promise_rejects_js(t, TypeError, result);
}, 'Create multiple system role entries should fail');
promise_test(async (t) => {
return promise_rejects_js(t, RangeError, LanguageModel.create({
expectedInputs: [{type: 'text', languages: ['en-abc-invalid']}]
}));
}, 'LanguageModel.create() rejects when given invalid language tags');
promise_test(async (t) => {
let session = await LanguageModel.create(
{expectedInputs: [{type: 'text', languages: ['EN']}]});
assert_true(!!session);
}, 'LanguageModel.create() canonicalizes language tags');