From 6aee3ef18c7082ceba5ff1d9d48b525bdd01ab90 Mon Sep 17 00:00:00 2001 From: Siddharth Gupta Date: Tue, 15 Apr 2025 14:05:52 -0700 Subject: [PATCH 1/5] Adding LanguageModel types. These are based off https://github.com/webmachinelearning/prompt-api?tab=readme-ov-file#full-api-surface-in-web-idl --- packages/vertexai/src/types/language-model.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 packages/vertexai/src/types/language-model.ts diff --git a/packages/vertexai/src/types/language-model.ts b/packages/vertexai/src/types/language-model.ts new file mode 100644 index 00000000000..9c389eadcca --- /dev/null +++ b/packages/vertexai/src/types/language-model.ts @@ -0,0 +1,56 @@ +export interface LanguageModel extends EventTarget { + create(options?: LanguageModelCreateOptions): Promise; + availability(options?: LanguageModelCreateCoreOptions): Promise; + prompt(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; + promptStreaming(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): ReadableStream; + measureInputUsage(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; + destroy(): undefined; +} +export enum Availability { "unavailable", "downloadable", "downloading", "available" }; +export interface LanguageModelParams { + readonly defaultTopK: number; + readonly maxTopK: number; + readonly defaultTemperature: number; + readonly maxTemperature: number; +} +export interface LanguageModelCreateCoreOptions { + topK?: number; + temperature?: number; + expectedInputs?: Array; +} +export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions { + signal?: AbortSignal; + monitor?: AICreateMonitorCallback; + systemPrompt?: string; + initialPrompts?: LanguageModelInitialPrompts; +} +export interface LanguageModelPromptOptions { + responseJSONSchema?: any; + signal?: AbortSignal; +} +export interface LanguageModelExpectedInput { + type: LanguageModelMessageType; + languages?: Array; +} +export type LanguageModelPrompt = Array | Array | string; +export type LanguageModelInitialPrompts = Array | Array; +export interface LanguageModelMessage { + role: LanguageModelMessageRole; + content: Array; +} +export interface LanguageModelMessageShorthand { + role: LanguageModelMessageRole; + content: string; +} +export interface LanguageModelMessageContent { + type: LanguageModelMessageType; + content: LanguageModelMessageContentValue; +} +export interface LanguageModelPromptDict { + role?: LanguageModelMessageRole; + type?: LanguageModelMessageType; + content: LanguageModelMessageContent; +} +export type LanguageModelMessageRole = "system" | "user" | "assistant"; +export type LanguageModelMessageType = "text" | "image" | "audio"; +export type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string; \ No newline at end of file From b49775d785e9cccbb4def73a0be52fca54f05474 Mon Sep 17 00:00:00 2001 From: Siddharth Gupta Date: Tue, 15 Apr 2025 14:11:10 -0700 Subject: [PATCH 2/5] Adding LanguageModel types. --- packages/vertexai/src/types/index.ts | 1 + packages/vertexai/src/types/language-model.ts | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/vertexai/src/types/index.ts b/packages/vertexai/src/types/index.ts index f575c5ba8e9..a95d19f3a05 100644 --- a/packages/vertexai/src/types/index.ts +++ b/packages/vertexai/src/types/index.ts @@ -17,6 +17,7 @@ export * from './content'; export * from './enums'; +export * from './language-model'; export * from './requests'; export * from './responses'; export * from './error'; diff --git a/packages/vertexai/src/types/language-model.ts b/packages/vertexai/src/types/language-model.ts index 9c389eadcca..ac8c6e16c87 100644 --- a/packages/vertexai/src/types/language-model.ts +++ b/packages/vertexai/src/types/language-model.ts @@ -16,7 +16,7 @@ export interface LanguageModelParams { export interface LanguageModelCreateCoreOptions { topK?: number; temperature?: number; - expectedInputs?: Array; + expectedInputs?: LanguageModelExpectedInput[]; } export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions { signal?: AbortSignal; @@ -25,18 +25,17 @@ export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptio initialPrompts?: LanguageModelInitialPrompts; } export interface LanguageModelPromptOptions { - responseJSONSchema?: any; signal?: AbortSignal; } export interface LanguageModelExpectedInput { type: LanguageModelMessageType; - languages?: Array; + languages?: string[]; } -export type LanguageModelPrompt = Array | Array | string; -export type LanguageModelInitialPrompts = Array | Array; +export type LanguageModelPrompt = LanguageModelMessage[] | LanguageModelMessageShorthand[] | string; +export type LanguageModelInitialPrompts = LanguageModelMessage[] | LanguageModelMessageShorthand[]; export interface LanguageModelMessage { role: LanguageModelMessageRole; - content: Array; + content: LanguageModelMessageContent[]; } export interface LanguageModelMessageShorthand { role: LanguageModelMessageRole; From 603ed27b352f818917b017a9c9bd91f38fbd580b Mon Sep 17 00:00:00 2001 From: Siddharth Gupta Date: Tue, 15 Apr 2025 14:38:29 -0700 Subject: [PATCH 3/5] Remove bunch of exports --- packages/vertexai/src/types/index.ts | 1 - packages/vertexai/src/types/language-model.ts | 31 +++++++++---------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/packages/vertexai/src/types/index.ts b/packages/vertexai/src/types/index.ts index a95d19f3a05..f575c5ba8e9 100644 --- a/packages/vertexai/src/types/index.ts +++ b/packages/vertexai/src/types/index.ts @@ -17,7 +17,6 @@ export * from './content'; export * from './enums'; -export * from './language-model'; export * from './requests'; export * from './responses'; export * from './error'; diff --git a/packages/vertexai/src/types/language-model.ts b/packages/vertexai/src/types/language-model.ts index ac8c6e16c87..35b87184e08 100644 --- a/packages/vertexai/src/types/language-model.ts +++ b/packages/vertexai/src/types/language-model.ts @@ -6,50 +6,49 @@ export interface LanguageModel extends EventTarget { measureInputUsage(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; destroy(): undefined; } -export enum Availability { "unavailable", "downloadable", "downloading", "available" }; -export interface LanguageModelParams { +enum Availability { "unavailable", "downloadable", "downloading", "available" }; +interface LanguageModelParams { readonly defaultTopK: number; readonly maxTopK: number; readonly defaultTemperature: number; readonly maxTemperature: number; } -export interface LanguageModelCreateCoreOptions { +interface LanguageModelCreateCoreOptions { topK?: number; temperature?: number; expectedInputs?: LanguageModelExpectedInput[]; } -export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions { +interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions { signal?: AbortSignal; - monitor?: AICreateMonitorCallback; systemPrompt?: string; initialPrompts?: LanguageModelInitialPrompts; } -export interface LanguageModelPromptOptions { +interface LanguageModelPromptOptions { signal?: AbortSignal; } -export interface LanguageModelExpectedInput { +interface LanguageModelExpectedInput { type: LanguageModelMessageType; languages?: string[]; } -export type LanguageModelPrompt = LanguageModelMessage[] | LanguageModelMessageShorthand[] | string; -export type LanguageModelInitialPrompts = LanguageModelMessage[] | LanguageModelMessageShorthand[]; -export interface LanguageModelMessage { +type LanguageModelPrompt = LanguageModelMessage[] | LanguageModelMessageShorthand[] | string; +type LanguageModelInitialPrompts = LanguageModelMessage[] | LanguageModelMessageShorthand[]; +interface LanguageModelMessage { role: LanguageModelMessageRole; content: LanguageModelMessageContent[]; } -export interface LanguageModelMessageShorthand { +interface LanguageModelMessageShorthand { role: LanguageModelMessageRole; content: string; } -export interface LanguageModelMessageContent { +interface LanguageModelMessageContent { type: LanguageModelMessageType; content: LanguageModelMessageContentValue; } -export interface LanguageModelPromptDict { +interface LanguageModelPromptDict { role?: LanguageModelMessageRole; type?: LanguageModelMessageType; content: LanguageModelMessageContent; } -export type LanguageModelMessageRole = "system" | "user" | "assistant"; -export type LanguageModelMessageType = "text" | "image" | "audio"; -export type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string; \ No newline at end of file +type LanguageModelMessageRole = "system" | "user" | "assistant"; +type LanguageModelMessageType = "text" | "image" | "audio"; +type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string; \ No newline at end of file From 7785d2a7eebaeccfddbd8fc1eed6edf7833eeda9 Mon Sep 17 00:00:00 2001 From: Siddharth Gupta Date: Tue, 15 Apr 2025 14:39:17 -0700 Subject: [PATCH 4/5] yarn formatted --- packages/vertexai/src/types/language-model.ts | 110 ++++++++++++------ 1 file changed, 75 insertions(+), 35 deletions(-) diff --git a/packages/vertexai/src/types/language-model.ts b/packages/vertexai/src/types/language-model.ts index 35b87184e08..4c46396daed 100644 --- a/packages/vertexai/src/types/language-model.ts +++ b/packages/vertexai/src/types/language-model.ts @@ -1,54 +1,94 @@ +/** + * @license + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + export interface LanguageModel extends EventTarget { - create(options?: LanguageModelCreateOptions): Promise; - availability(options?: LanguageModelCreateCoreOptions): Promise; - prompt(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; - promptStreaming(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): ReadableStream; - measureInputUsage(input: LanguageModelPrompt, options?: LanguageModelPromptOptions): Promise; - destroy(): undefined; -} -enum Availability { "unavailable", "downloadable", "downloading", "available" }; + create(options?: LanguageModelCreateOptions): Promise; + availability(options?: LanguageModelCreateCoreOptions): Promise; + prompt( + input: LanguageModelPrompt, + options?: LanguageModelPromptOptions + ): Promise; + promptStreaming( + input: LanguageModelPrompt, + options?: LanguageModelPromptOptions + ): ReadableStream; + measureInputUsage( + input: LanguageModelPrompt, + options?: LanguageModelPromptOptions + ): Promise; + destroy(): undefined; +} +enum Availability { + 'unavailable', + 'downloadable', + 'downloading', + 'available' +} interface LanguageModelParams { - readonly defaultTopK: number; - readonly maxTopK: number; - readonly defaultTemperature: number; - readonly maxTemperature: number; + readonly defaultTopK: number; + readonly maxTopK: number; + readonly defaultTemperature: number; + readonly maxTemperature: number; } interface LanguageModelCreateCoreOptions { - topK?: number; - temperature?: number; - expectedInputs?: LanguageModelExpectedInput[]; + topK?: number; + temperature?: number; + expectedInputs?: LanguageModelExpectedInput[]; } interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions { - signal?: AbortSignal; - systemPrompt?: string; - initialPrompts?: LanguageModelInitialPrompts; + signal?: AbortSignal; + systemPrompt?: string; + initialPrompts?: LanguageModelInitialPrompts; } interface LanguageModelPromptOptions { - signal?: AbortSignal; + signal?: AbortSignal; } interface LanguageModelExpectedInput { - type: LanguageModelMessageType; - languages?: string[]; + type: LanguageModelMessageType; + languages?: string[]; } -type LanguageModelPrompt = LanguageModelMessage[] | LanguageModelMessageShorthand[] | string; -type LanguageModelInitialPrompts = LanguageModelMessage[] | LanguageModelMessageShorthand[]; +type LanguageModelPrompt = + | LanguageModelMessage[] + | LanguageModelMessageShorthand[] + | string; +type LanguageModelInitialPrompts = + | LanguageModelMessage[] + | LanguageModelMessageShorthand[]; interface LanguageModelMessage { - role: LanguageModelMessageRole; - content: LanguageModelMessageContent[]; + role: LanguageModelMessageRole; + content: LanguageModelMessageContent[]; } interface LanguageModelMessageShorthand { - role: LanguageModelMessageRole; - content: string; + role: LanguageModelMessageRole; + content: string; } interface LanguageModelMessageContent { - type: LanguageModelMessageType; - content: LanguageModelMessageContentValue; + type: LanguageModelMessageType; + content: LanguageModelMessageContentValue; } interface LanguageModelPromptDict { - role?: LanguageModelMessageRole; - type?: LanguageModelMessageType; - content: LanguageModelMessageContent; + role?: LanguageModelMessageRole; + type?: LanguageModelMessageType; + content: LanguageModelMessageContent; } -type LanguageModelMessageRole = "system" | "user" | "assistant"; -type LanguageModelMessageType = "text" | "image" | "audio"; -type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string; \ No newline at end of file +type LanguageModelMessageRole = 'system' | 'user' | 'assistant'; +type LanguageModelMessageType = 'text' | 'image' | 'audio'; +type LanguageModelMessageContentValue = + | ImageBitmapSource + | AudioBuffer + | BufferSource + | string; From 33e455518cbf8defd9598acff9703141e845aa25 Mon Sep 17 00:00:00 2001 From: Siddharth Gupta Date: Tue, 15 Apr 2025 14:45:53 -0700 Subject: [PATCH 5/5] after lint --- packages/vertexai/src/types/language-model.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/packages/vertexai/src/types/language-model.ts b/packages/vertexai/src/types/language-model.ts index 4c46396daed..5bfb38beea4 100644 --- a/packages/vertexai/src/types/language-model.ts +++ b/packages/vertexai/src/types/language-model.ts @@ -38,12 +38,6 @@ enum Availability { 'downloading', 'available' } -interface LanguageModelParams { - readonly defaultTopK: number; - readonly maxTopK: number; - readonly defaultTemperature: number; - readonly maxTemperature: number; -} interface LanguageModelCreateCoreOptions { topK?: number; temperature?: number; @@ -80,11 +74,6 @@ interface LanguageModelMessageContent { type: LanguageModelMessageType; content: LanguageModelMessageContentValue; } -interface LanguageModelPromptDict { - role?: LanguageModelMessageRole; - type?: LanguageModelMessageType; - content: LanguageModelMessageContent; -} type LanguageModelMessageRole = 'system' | 'user' | 'assistant'; type LanguageModelMessageType = 'text' | 'image' | 'audio'; type LanguageModelMessageContentValue =