Skip to content

Commit 2e80af4

Browse files
authored
🤖 Merge PR DefinitelyTyped#75111 [dom-chromium-ai] Add samplingMode; make it mutually exclusive with topK/temperature by @tomayac
1 parent f0cf8e5 commit 2e80af4

2 files changed

Lines changed: 42 additions & 9 deletions

File tree

‎types/dom-chromium-ai/dom-chromium-ai-tests.ts‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@ async function topLevel() {
1111
initialPrompts: [{ role: "assistant", content: "foo", prefix: true }],
1212
});
1313

14+
// samplingMode is valid on its own
15+
await LanguageModel.create({ samplingMode: "most-creative" });
16+
await LanguageModel.create({ samplingMode: "balanced" });
17+
18+
await LanguageModel.create({
19+
samplingMode: "balanced",
20+
// @ts-expect-error - samplingMode and topK/temperature are mutually exclusive.
21+
topK: 1,
22+
});
23+
24+
await LanguageModel.create({
25+
samplingMode: "balanced",
26+
// @ts-expect-error - samplingMode and topK/temperature are mutually exclusive.
27+
temperature: 0.5,
28+
});
29+
1430
const languageModel = await LanguageModel.create({
1531
topK: 1,
1632
temperature: 0,

‎types/dom-chromium-ai/index.d.ts‎

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,25 +116,42 @@ interface LanguageModelParams {
116116
readonly maxTemperature: number;
117117
}
118118

119-
interface LanguageModelCreateCoreOptions {
120-
/** @deprecated Restricted to web extension contexts only. Use the topK option within LanguageModel.create() is now restricted to web extensions. */
121-
topK?: number;
122-
/** @deprecated Restricted to web extension contexts only. Use the temperature option within LanguageModel.create() is now restricted to web extensions. */
123-
temperature?: number;
124-
119+
type LanguageModelSamplingMode =
120+
| "most-predictable"
121+
| "predictable"
122+
| "balanced"
123+
| "creative"
124+
| "most-creative";
125+
126+
/**
127+
* samplingMode and the raw sampling params (topK, temperature) are mutually exclusive.
128+
* Providing both results in a TypeError at runtime.
129+
* Note: topK and temperature are only available in Chrome extension contexts (Chrome 151+).
130+
*/
131+
type LanguageModelSamplingOptions =
132+
| { samplingMode?: LanguageModelSamplingMode; topK?: never; temperature?: never }
133+
| {
134+
samplingMode?: never;
135+
/** @deprecated Restricted to web extension contexts only. */
136+
topK?: number;
137+
/** @deprecated Restricted to web extension contexts only. */
138+
temperature?: number;
139+
};
140+
141+
type LanguageModelCreateCoreOptions = {
125142
expectedInputs?: LanguageModelExpected[];
126143
expectedOutputs?: LanguageModelExpected[];
127144
tools?: LanguageModelTool[];
128-
}
145+
} & LanguageModelSamplingOptions;
129146

130-
interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions {
147+
type LanguageModelCreateOptions = LanguageModelCreateCoreOptions & {
131148
signal?: AbortSignal;
132149
monitor?: CreateMonitorCallback;
133150

134151
initialPrompts?:
135152
| [LanguageModelSystemMessage, ...LanguageModelMessage[]]
136153
| LanguageModelMessage[];
137-
}
154+
};
138155

139156
interface LanguageModelPromptOptions {
140157
responseConstraint?: Record<string, unknown>;

0 commit comments

Comments
 (0)