Skip to content

Commit 9763167

Browse files
committed
Define ChromeAdapter class
1 parent 1f720b9 commit 9763167

File tree

1 file changed

+161
-0
lines changed
  • packages/vertexai/src/types

1 file changed

+161
-0
lines changed

packages/vertexai/src/types/ai.ts

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
/**
2+
* Shims @types/dom-chromium-ai
3+
* TODO: replace with @types/dom-chromium-ai once we can use es2020.intl.
4+
*/
5+
export interface AI {
6+
readonly languageModel: AILanguageModelFactory;
7+
}
8+
9+
interface AICreateMonitor extends EventTarget {
10+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
11+
ondownloadprogress: ((this: AICreateMonitor, ev: DownloadProgressEvent) => any) | null;
12+
13+
addEventListener<K extends keyof AICreateMonitorEventMap>(
14+
type: K,
15+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
16+
listener: (this: AICreateMonitor, ev: AICreateMonitorEventMap[K]) => any,
17+
options?: boolean | AddEventListenerOptions,
18+
): void;
19+
addEventListener(
20+
type: string,
21+
listener: EventListenerOrEventListenerObject,
22+
options?: boolean | AddEventListenerOptions,
23+
): void;
24+
removeEventListener<K extends keyof AICreateMonitorEventMap>(
25+
type: K,
26+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
27+
listener: (this: AICreateMonitor, ev: AICreateMonitorEventMap[K]) => any,
28+
options?: boolean | EventListenerOptions,
29+
): void;
30+
removeEventListener(
31+
type: string,
32+
listener: EventListenerOrEventListenerObject,
33+
options?: boolean | EventListenerOptions,
34+
): void;
35+
}
36+
37+
interface DownloadProgressEvent extends Event {
38+
readonly loaded: number;
39+
readonly total: number;
40+
}
41+
42+
interface AICreateMonitorEventMap {
43+
downloadprogress: DownloadProgressEvent;
44+
}
45+
46+
type AICreateMonitorCallback = (monitor: AICreateMonitor) => void;
47+
48+
type AICapabilityAvailability = "readily" | "after-download" | "no";
49+
50+
// Language Model
51+
// https://github.com/explainers-by-googlers/prompt-api/#full-api-surface-in-web-idl
52+
53+
interface AILanguageModelFactory {
54+
create(
55+
options?: AILanguageModelCreateOptionsWithSystemPrompt | AILanguageModelCreateOptionsWithoutSystemPrompt,
56+
): Promise<AILanguageModel>;
57+
capabilities(): Promise<AILanguageModelCapabilities>;
58+
}
59+
60+
interface AILanguageModelCreateOptions {
61+
signal?: AbortSignal;
62+
monitor?: AICreateMonitorCallback;
63+
64+
topK?: number;
65+
temperature?: number;
66+
}
67+
68+
export interface AILanguageModelCreateOptionsWithSystemPrompt extends AILanguageModelCreateOptions {
69+
systemPrompt?: string;
70+
initialPrompts?: AILanguageModelPrompt[];
71+
}
72+
73+
interface AILanguageModelCreateOptionsWithoutSystemPrompt extends AILanguageModelCreateOptions {
74+
systemPrompt?: never;
75+
initialPrompts?:
76+
| [AILanguageModelSystemPrompt, ...AILanguageModelPrompt[]]
77+
| AILanguageModelPrompt[];
78+
}
79+
80+
type AILanguageModelPromptRole = "user" | "assistant";
81+
type AILanguageModelInitialPromptRole = "system" | AILanguageModelPromptRole;
82+
83+
interface AILanguageModelPrompt {
84+
role: AILanguageModelPromptRole;
85+
content: string;
86+
}
87+
88+
interface AILanguageModelInitialPrompt {
89+
role: AILanguageModelInitialPromptRole;
90+
content: string;
91+
}
92+
93+
interface AILanguageModelSystemPrompt extends AILanguageModelInitialPrompt {
94+
role: "system";
95+
}
96+
97+
type AILanguageModelPromptInput = string | AILanguageModelPrompt | AILanguageModelPrompt[];
98+
99+
interface AILanguageModel extends EventTarget {
100+
prompt(input: AILanguageModelPromptInput, options?: AILanguageModelPromptOptions): Promise<string>;
101+
promptStreaming(input: AILanguageModelPromptInput, options?: AILanguageModelPromptOptions): ReadableStream<string>;
102+
103+
countPromptTokens(input: AILanguageModelPromptInput, options?: AILanguageModelPromptOptions): Promise<number>;
104+
readonly maxTokens: number;
105+
readonly tokensSoFar: number;
106+
readonly tokensLeft: number;
107+
108+
readonly topK: number;
109+
readonly temperature: number;
110+
111+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
112+
oncontextoverflow: ((this: AILanguageModel, ev: Event) => any) | null;
113+
114+
addEventListener<K extends keyof AILanguageModelEventMap>(
115+
type: K,
116+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
117+
listener: (this: AILanguageModel, ev: AILanguageModelEventMap[K]) => any,
118+
options?: boolean | AddEventListenerOptions,
119+
): void;
120+
addEventListener(
121+
type: string,
122+
listener: EventListenerOrEventListenerObject,
123+
options?: boolean | AddEventListenerOptions,
124+
): void;
125+
removeEventListener<K extends keyof AILanguageModelEventMap>(
126+
type: K,
127+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
128+
listener: (this: AILanguageModel, ev: AILanguageModelEventMap[K]) => any,
129+
options?: boolean | EventListenerOptions,
130+
): void;
131+
removeEventListener(
132+
type: string,
133+
listener: EventListenerOrEventListenerObject,
134+
options?: boolean | EventListenerOptions,
135+
): void;
136+
137+
clone(options?: AILanguageModelCloneOptions): Promise<AILanguageModel>;
138+
destroy(): void;
139+
}
140+
141+
interface AILanguageModelEventMap {
142+
contextoverflow: Event;
143+
}
144+
145+
interface AILanguageModelPromptOptions {
146+
signal?: AbortSignal;
147+
}
148+
149+
interface AILanguageModelCloneOptions {
150+
signal?: AbortSignal;
151+
}
152+
153+
interface AILanguageModelCapabilities {
154+
readonly available: AICapabilityAvailability;
155+
languageAvailable(languageTag: Intl.UnicodeBCP47LocaleIdentifier): AICapabilityAvailability;
156+
157+
readonly defaultTopK: number | null;
158+
readonly maxTopK: number | null;
159+
readonly defaultTemperature: number | null;
160+
readonly maxTemperature: number | null;
161+
}

0 commit comments

Comments
 (0)