diff --git a/types/dom-chromium-ai/dom-chromium-ai-tests.ts b/types/dom-chromium-ai/dom-chromium-ai-tests.ts index a4b814a6c1161f..7f37fa7943265a 100644 --- a/types/dom-chromium-ai/dom-chromium-ai-tests.ts +++ b/types/dom-chromium-ai/dom-chromium-ai-tests.ts @@ -122,36 +122,47 @@ async function topLevel() { await languageModel.append("foo", { signal: (new AbortController()).signal }); await languageModel.append([{ role: "assistant", content: "foo" }], { signal: (new AbortController()).signal }); - const languageModelInputUsage1: number = await languageModel.measureInputUsage("foo", { + const languageModelContextUsage1: number = await languageModel.measureContextUsage("foo", { signal: (new AbortController()).signal, }); - console.log(languageModelInputUsage1); + console.log(languageModelContextUsage1); - const languageModelInputUsage2: number = await languageModel.measureInputUsage([{ + const languageModelContextUsage2: number = await languageModel.measureContextUsage([{ role: "assistant", content: "foo", }], { signal: (new AbortController()).signal, }); - console.log(languageModelInputUsage2); + console.log(languageModelContextUsage2); - const languageModelInputUsage3: number = await languageModel.measureInputUsage([ + const languageModelContextUsage3: number = await languageModel.measureContextUsage([ { role: "assistant", content: "foo" }, { role: "user", content: "bar" }, ], { signal: (new AbortController()).signal }); - console.log(languageModelInputUsage3); + console.log(languageModelContextUsage3); + console.log( + languageModel.contextUsage, + languageModel.contextWindow, + ); + + // Legacy names (Deprecated in extensions, removed in web) console.log( languageModel.inputUsage, languageModel.inputQuota, ); - const quotaOverflowListener = (e: Event) => { + const contextOverflowListener = (e: Event) => { console.log(e); }; - languageModel.onquotaoverflow = quotaOverflowListener; - languageModel.addEventListener("quotaoverflow", quotaOverflowListener); - languageModel.removeEventListener("quotaoverflow", quotaOverflowListener); + languageModel.oncontextoverflow = contextOverflowListener; + languageModel.addEventListener("contextoverflow", contextOverflowListener); + languageModel.removeEventListener("contextoverflow", contextOverflowListener); + + // Legacy (Deprecated in extensions, removed in web) + languageModel.onquotaoverflow = contextOverflowListener; + languageModel.addEventListener("quotaoverflow", contextOverflowListener); + languageModel.removeEventListener("quotaoverflow", contextOverflowListener); console.log( languageModel.topK, diff --git a/types/dom-chromium-ai/index.d.ts b/types/dom-chromium-ai/index.d.ts index 434453a91773f5..076843f6142dc6 100644 --- a/types/dom-chromium-ai/index.d.ts +++ b/types/dom-chromium-ai/index.d.ts @@ -44,6 +44,7 @@ interface DestroyableModel { declare abstract class LanguageModel extends EventTarget implements DestroyableModel { static create(options?: LanguageModelCreateOptions): Promise; static availability(options?: LanguageModelCreateCoreOptions): Promise; + /** @deprecated Restricted to web extension contexts only. */ static params(): Promise; prompt(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; @@ -52,11 +53,20 @@ declare abstract class LanguageModel extends EventTarget implements DestroyableM append(input: LanguageModelPrompt, options?: LanguageModelAppendOptions): Promise; + measureContextUsage(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; + /** @deprecated Use measureContextUsage instead. Deprecated in extensions, removed in web. */ measureInputUsage(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; + readonly contextUsage: number; + /** @deprecated Use contextUsage instead. Deprecated in extensions, removed in web. */ readonly inputUsage: number; + + readonly contextWindow: number; + /** @deprecated Use contextWindow instead. Deprecated in extensions, removed in web. */ readonly inputQuota: number; + oncontextoverflow: ((this: LanguageModel, ev: Event) => any) | null; + /** @deprecated Use oncontextoverflow instead. Deprecated in extensions, removed in web. */ onquotaoverflow: ((this: LanguageModel, ev: Event) => any) | null; addEventListener( @@ -80,7 +90,9 @@ declare abstract class LanguageModel extends EventTarget implements DestroyableM options?: boolean | EventListenerOptions, ): void; + /** @deprecated Restricted to web extension contexts only. */ readonly topK: number; + /** @deprecated Restricted to web extension contexts only. */ readonly temperature: number; clone(options?: LanguageModelCloneOptions): Promise; @@ -88,18 +100,26 @@ declare abstract class LanguageModel extends EventTarget implements DestroyableM } interface LanguageModelEventMap { + contextoverflow: Event; + /** @deprecated Use contextoverflow instead. Deprecated in extensions, removed in web. */ quotaoverflow: Event; } interface LanguageModelParams { + /** @deprecated Restricted to web extension contexts only. */ readonly defaultTopK: number; + /** @deprecated Restricted to web extension contexts only. */ readonly maxTopK: number; + /** @deprecated Restricted to web extension contexts only. */ readonly defaultTemperature: number; + /** @deprecated Restricted to web extension contexts only. */ readonly maxTemperature: number; } interface LanguageModelCreateCoreOptions { + /** @deprecated Restricted to web extension contexts only. Use the topK option within LanguageModel.create() is now restricted to web extensions. */ topK?: number; + /** @deprecated Restricted to web extension contexts only. Use the temperature option within LanguageModel.create() is now restricted to web extensions. */ temperature?: number; expectedInputs?: LanguageModelExpected[];