@firebase/ai 2.12.0 → 2.13.0-20260526192810

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,9 @@
16
16
  */
17
17
  import { CountTokensRequest, GenerateContentRequest, InferenceMode, OnDeviceParams } from '../types';
18
18
  import { ChromeAdapter } from '../types/chrome-adapter';
19
- import { LanguageModel } from '../types/language-model';
19
+ import { Availability, LanguageModel, LanguageModelExpected } from '../types/language-model';
20
+ export declare const defaultExpectedInputs: LanguageModelExpected[];
21
+ export declare const defaultExpectedOutputs: LanguageModelExpected[];
20
22
  /**
21
23
  * Defines an inference "backend" that uses Chrome's on-device model,
22
24
  * and encapsulates logic for detecting when on-device inference is
@@ -26,8 +28,7 @@ export declare class ChromeAdapterImpl implements ChromeAdapter {
26
28
  languageModelProvider: LanguageModel;
27
29
  mode: InferenceMode;
28
30
  static SUPPORTED_MIME_TYPES: string[];
29
- private isDownloading;
30
- private downloadPromise;
31
+ downloadPromise: Promise<LanguageModel | void> | null;
31
32
  private oldSession;
32
33
  onDeviceParams: OnDeviceParams;
33
34
  constructor(languageModelProvider: LanguageModel, mode: InferenceMode, onDeviceParams?: OnDeviceParams);
@@ -38,7 +39,7 @@ export declare class ChromeAdapterImpl implements ChromeAdapter {
38
39
  * the mode
39
40
  * API existence
40
41
  * prompt formatting
41
- * model availability, including triggering download if necessary
42
+ * model availability
42
43
  *
43
44
  *
44
45
  * Pros: callers needn't be concerned with details of on-device availability.</p>
@@ -75,12 +76,12 @@ export declare class ChromeAdapterImpl implements ChromeAdapter {
75
76
  /**
76
77
  * Encapsulates logic to get availability and download a model if one is downloadable.
77
78
  */
78
- private downloadIfAvailable;
79
+ downloadIfAvailable(onDownloadProgress?: (progressValue: number) => void): Promise<Availability | undefined>;
79
80
  /**
80
81
  * Triggers out-of-band download of an on-device model.
81
82
  *
82
- * Chrome only downloads models as needed. Chrome knows a model is needed when code calls
83
- * LanguageModel.create.
83
+ * Chrome may automatically begin a download on startup or
84
+ * it may trigger a download when code calls LanguageModel.create.
84
85
  *
85
86
  * Since Chrome manages the download, the SDK can only avoid redundant download requests by
86
87
  * tracking if a download has previously been requested.
@@ -32,6 +32,35 @@ export declare class GenerativeModel extends AIModel {
32
32
  toolConfig?: ToolConfig;
33
33
  systemInstruction?: Content;
34
34
  constructor(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions, chromeAdapter?: ChromeAdapter | undefined);
35
+ /**
36
+ * Initializes on-device models.
37
+ *
38
+ * @remarks
39
+ * This may trigger a download on first
40
+ * use. Wait for this promise to complete before calling inference
41
+ * methods if you want to ensure the device models are ready before
42
+ * any calls. Calling inference methods before the device is ready
43
+ * will result in a cloud fallback if `inferenceMode` is set to
44
+ * `PREFER_ON_DEVICE`, and an error if set to `ONLY_ON_DEVICE`.
45
+ *
46
+ * IMPORTANT: This call must be made on or after a user has interacted
47
+ * with the page (for example, through a button click or key press).
48
+ * If it is called without a user interaction, and it requires a download,
49
+ * this will cause an error.
50
+ *
51
+ * See the
52
+ * {@link https://developer.chrome.com/docs/ai/prompt-api#use_the_prompt_api | Prompt API docs }
53
+ * for more details on this requirement.
54
+ *
55
+ * @param onDownloadProgress A callback called repeatedly as the
56
+ * download progresses that provides a `progressValue` between 0
57
+ * and 1 representing how much of the download is complete. This
58
+ * will be ignored if `monitor` was populated in
59
+ * {@link LanguageModelCreateOptions}.
60
+ *
61
+ * @public
62
+ */
63
+ initializeDeviceModel(onDownloadProgress?: (progressValue: number) => void): Promise<void>;
35
64
  /**
36
65
  * Makes a single non-streaming call to the model
37
66
  * and returns an object containing a single {@link GenerateContentResponse}.
@@ -23,7 +23,7 @@ import { CountTokensRequest, GenerateContentRequest } from './requests';
23
23
  *
24
24
  * These methods should not be called directly by the user.
25
25
  *
26
- * @beta
26
+ * @public
27
27
  */
28
28
  export interface ChromeAdapter {
29
29
  /**
@@ -415,7 +415,7 @@ export type ResponseModality = (typeof ResponseModality)[keyof typeof ResponseMo
415
415
  * cloud-hosted model. If not available, the SDK will fall back to an
416
416
  * on-device model.
417
417
  *
418
- * @beta
418
+ * @public
419
419
  */
420
420
  export declare const InferenceMode: {
421
421
  readonly PREFER_ON_DEVICE: "prefer_on_device";
@@ -426,13 +426,13 @@ export declare const InferenceMode: {
426
426
  /**
427
427
  * Determines whether inference happens on-device or in-cloud.
428
428
  *
429
- * @beta
429
+ * @public
430
430
  */
431
431
  export type InferenceMode = (typeof InferenceMode)[keyof typeof InferenceMode];
432
432
  /**
433
433
  * Indicates whether inference happened on-device or in-cloud.
434
434
  *
435
- * @beta
435
+ * @public
436
436
  */
437
437
  export declare const InferenceSource: {
438
438
  readonly ON_DEVICE: "on_device";
@@ -441,7 +441,7 @@ export declare const InferenceSource: {
441
441
  /**
442
442
  * Indicates whether inference happened on-device or in-cloud.
443
443
  *
444
- * @beta
444
+ * @public
445
445
  */
446
446
  export type InferenceSource = (typeof InferenceSource)[keyof typeof InferenceSource];
447
447
  /**
@@ -22,5 +22,5 @@ export * from './error';
22
22
  export * from './schema';
23
23
  export * from './imagen';
24
24
  export * from './googleai';
25
- export { LanguageModelCreateOptions, LanguageModelCreateCoreOptions, LanguageModelExpected, LanguageModelMessage, LanguageModelMessageContent, LanguageModelMessageContentValue, LanguageModelMessageRole, LanguageModelMessageType, LanguageModelPromptOptions } from './language-model';
25
+ export { LanguageModelCreateOptions, LanguageModelCreateCoreOptions, LanguageModelExpected, LanguageModelMessage, LanguageModelMessageContent, LanguageModelMessageContentValue, LanguageModelMessageRole, LanguageModelMessageType, LanguageModelPromptOptions, LanguageModelDownloadMonitor } from './language-model';
26
26
  export * from './chrome-adapter';
@@ -40,7 +40,7 @@ export declare enum Availability {
40
40
  }
41
41
  /**
42
42
  * Configures the creation of an on-device language model session.
43
- * @beta
43
+ * @public
44
44
  */
45
45
  export interface LanguageModelCreateCoreOptions {
46
46
  /**
@@ -51,11 +51,41 @@ export interface LanguageModelCreateCoreOptions {
51
51
  * @deprecated
52
52
  */
53
53
  temperature?: number;
54
+ /**
55
+ * Defaults to image input and English text input
56
+ * if not overriden.
57
+ */
54
58
  expectedInputs?: LanguageModelExpected[];
59
+ /**
60
+ * Defaults to English text output if not overriden.
61
+ */
62
+ expectedOutputs?: LanguageModelExpected[];
63
+ /**
64
+ * The native download monitor provided by the Chrome API.
65
+ * This provides direct access to the monitor object and is
66
+ * only needed for advanced cases. For
67
+ * a simpler download monitoring interface, provide an
68
+ * `onDownloadProgress` callback
69
+ * to {@link GenerativeModel.initializeDeviceModel} instead.
70
+ */
71
+ monitor?: (monitor: LanguageModelDownloadMonitor) => void;
72
+ }
73
+ /**
74
+ * Interface representing the Chrome Prompt API's native
75
+ * download monitor object.
76
+ * @public
77
+ */
78
+ export interface LanguageModelDownloadMonitor {
79
+ addEventListener: (eventType: 'downloadprogress', eventListener: (e: {
80
+ loaded: number;
81
+ }) => void) => void;
82
+ removeEventListener: (eventType: 'downloadprogress', eventListener: (e: {
83
+ loaded: number;
84
+ }) => void) => void;
55
85
  }
56
86
  /**
57
87
  * Configures the creation of an on-device language model session.
58
- * @beta
88
+ * @public
59
89
  */
60
90
  export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions {
61
91
  signal?: AbortSignal;
@@ -63,26 +93,26 @@ export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptio
63
93
  }
64
94
  /**
65
95
  * Options for an on-device language model prompt.
66
- * @beta
96
+ * @public
67
97
  */
68
98
  export interface LanguageModelPromptOptions {
69
99
  responseConstraint?: object;
70
100
  }
71
101
  /**
72
102
  * Options for the expected inputs for an on-device language model.
73
- * @beta
103
+ * @public
74
104
  */ export interface LanguageModelExpected {
75
105
  type: LanguageModelMessageType;
76
106
  languages?: string[];
77
107
  }
78
108
  /**
79
109
  * An on-device language model prompt.
80
- * @beta
110
+ * @public
81
111
  */
82
112
  export type LanguageModelPrompt = LanguageModelMessage[];
83
113
  /**
84
114
  * An on-device language model message.
85
- * @beta
115
+ * @public
86
116
  */
87
117
  export interface LanguageModelMessage {
88
118
  role: LanguageModelMessageRole;
@@ -90,7 +120,7 @@ export interface LanguageModelMessage {
90
120
  }
91
121
  /**
92
122
  * An on-device language model content object.
93
- * @beta
123
+ * @public
94
124
  */
95
125
  export interface LanguageModelMessageContent {
96
126
  type: LanguageModelMessageType;
@@ -98,16 +128,16 @@ export interface LanguageModelMessageContent {
98
128
  }
99
129
  /**
100
130
  * Allowable roles for on-device language model usage.
101
- * @beta
131
+ * @public
102
132
  */
103
133
  export type LanguageModelMessageRole = 'system' | 'user' | 'assistant';
104
134
  /**
105
135
  * Allowable types for on-device language model messages.
106
- * @beta
136
+ * @public
107
137
  */
108
138
  export type LanguageModelMessageType = 'text' | 'image' | 'audio';
109
139
  /**
110
140
  * Content formats that can be provided as on-device message content.
111
- * @beta
141
+ * @public
112
142
  */
113
143
  export type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string;
@@ -673,7 +673,7 @@ export interface RetrievalConfig {
673
673
  /**
674
674
  * Encapsulates configuration for on-device inference.
675
675
  *
676
- * @beta
676
+ * @public
677
677
  */
678
678
  export interface OnDeviceParams {
679
679
  createOptions?: LanguageModelCreateOptions;
@@ -681,7 +681,7 @@ export interface OnDeviceParams {
681
681
  }
682
682
  /**
683
683
  * Configures hybrid inference.
684
- * @beta
684
+ * @public
685
685
  */
686
686
  export interface HybridParams {
687
687
  /**
@@ -79,7 +79,7 @@ export interface EnhancedGenerateContentResponse extends GenerateContentResponse
79
79
  /**
80
80
  * Indicates whether inference happened on-device or in-cloud.
81
81
  *
82
- * @beta
82
+ * @public
83
83
  */
84
84
  inferenceSource?: InferenceSource;
85
85
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firebase/ai",
3
- "version": "2.12.0",
3
+ "version": "2.13.0-20260526192810",
4
4
  "description": "The Firebase AI SDK",
5
5
  "author": "Firebase <firebase-support@google.com> (https://firebase.google.com/)",
6
6
  "engines": {