Skip to content

Commit e2ae331

Browse files
committed
Merge branch 'main' into ch-ac-limited
2 parents 72c370b + cc605e7 commit e2ae331

File tree

77 files changed

+2541
-176
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+2541
-176
lines changed

.changeset/strong-avocados-prove.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

common/api-review/ai.api.md

Lines changed: 95 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export class BooleanSchema extends Schema {
140140

141141
// @public
142142
export class ChatSession {
143-
constructor(apiSettings: ApiSettings, model: string, params?: StartChatParams | undefined, requestOptions?: RequestOptions | undefined);
143+
constructor(apiSettings: ApiSettings, model: string, chromeAdapter?: ChromeAdapter | undefined, params?: StartChatParams | undefined, requestOptions?: RequestOptions | undefined);
144144
getHistory(): Promise<Content[]>;
145145
// (undocumented)
146146
model: string;
@@ -152,6 +152,15 @@ export class ChatSession {
152152
sendMessageStream(request: string | Array<string | Part>): Promise<GenerateContentStreamResult>;
153153
}
154154

155+
// @public
156+
export interface ChromeAdapter {
157+
// @internal (undocumented)
158+
countTokens(request: CountTokensRequest): Promise<Response>;
159+
generateContent(request: GenerateContentRequest): Promise<Response>;
160+
generateContentStream(request: GenerateContentRequest): Promise<Response>;
161+
isAvailable(request: GenerateContentRequest): Promise<boolean>;
162+
}
163+
155164
// @public
156165
export interface Citation {
157166
// (undocumented)
@@ -436,7 +445,7 @@ export interface GenerativeContentBlob {
436445

437446
// @public
438447
export class GenerativeModel extends AIModel {
439-
constructor(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions);
448+
constructor(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions, chromeAdapter?: ChromeAdapter | undefined);
440449
countTokens(request: CountTokensRequest | string | Array<string | Part>): Promise<CountTokensResponse>;
441450
generateContent(request: GenerateContentRequest | string | Array<string | Part>): Promise<GenerateContentResult>;
442451
generateContentStream(request: GenerateContentRequest | string | Array<string | Part>): Promise<GenerateContentStreamResult>;
@@ -459,7 +468,7 @@ export class GenerativeModel extends AIModel {
459468
export function getAI(app?: FirebaseApp, options?: AIOptions): AI;
460469

461470
// @public
462-
export function getGenerativeModel(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions): GenerativeModel;
471+
export function getGenerativeModel(ai: AI, modelParams: ModelParams | HybridParams, requestOptions?: RequestOptions): GenerativeModel;
463472

464473
// @beta
465474
export function getImagenModel(ai: AI, modelParams: ImagenModelParams, requestOptions?: RequestOptions): ImagenModel;
@@ -608,6 +617,13 @@ export const HarmSeverity: {
608617
// @public
609618
export type HarmSeverity = (typeof HarmSeverity)[keyof typeof HarmSeverity];
610619

620+
// @public
621+
export interface HybridParams {
622+
inCloudParams?: ModelParams;
623+
mode: InferenceMode;
624+
onDeviceParams?: OnDeviceParams;
625+
}
626+
611627
// @beta
612628
export const ImagenAspectRatio: {
613629
readonly SQUARE: "1:1";
@@ -620,7 +636,7 @@ export const ImagenAspectRatio: {
620636
// @beta
621637
export type ImagenAspectRatio = (typeof ImagenAspectRatio)[keyof typeof ImagenAspectRatio];
622638

623-
// @public
639+
// @beta
624640
export interface ImagenGCSImage {
625641
gcsURI: string;
626642
mimeType: string;
@@ -701,6 +717,16 @@ export interface ImagenSafetySettings {
701717
safetyFilterLevel?: ImagenSafetyFilterLevel;
702718
}
703719

720+
// @public
721+
export const InferenceMode: {
722+
readonly PREFER_ON_DEVICE: "prefer_on_device";
723+
readonly ONLY_ON_DEVICE: "only_on_device";
724+
readonly ONLY_IN_CLOUD: "only_in_cloud";
725+
};
726+
727+
// @public
728+
export type InferenceMode = (typeof InferenceMode)[keyof typeof InferenceMode];
729+
704730
// @public
705731
export interface InlineDataPart {
706732
// (undocumented)
@@ -719,6 +745,63 @@ export class IntegerSchema extends Schema {
719745
constructor(schemaParams?: SchemaParams);
720746
}
721747

748+
// @public
749+
export interface LanguageModelCreateCoreOptions {
750+
// (undocumented)
751+
expectedInputs?: LanguageModelExpected[];
752+
// (undocumented)
753+
temperature?: number;
754+
// (undocumented)
755+
topK?: number;
756+
}
757+
758+
// @public
759+
export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions {
760+
// (undocumented)
761+
initialPrompts?: LanguageModelMessage[];
762+
// (undocumented)
763+
signal?: AbortSignal;
764+
}
765+
766+
// @public
767+
export interface LanguageModelExpected {
768+
// (undocumented)
769+
languages?: string[];
770+
// (undocumented)
771+
type: LanguageModelMessageType;
772+
}
773+
774+
// @public
775+
export interface LanguageModelMessage {
776+
// (undocumented)
777+
content: LanguageModelMessageContent[];
778+
// (undocumented)
779+
role: LanguageModelMessageRole;
780+
}
781+
782+
// @public
783+
export interface LanguageModelMessageContent {
784+
// (undocumented)
785+
type: LanguageModelMessageType;
786+
// (undocumented)
787+
value: LanguageModelMessageContentValue;
788+
}
789+
790+
// @public
791+
export type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string;
792+
793+
// @public
794+
export type LanguageModelMessageRole = 'system' | 'user' | 'assistant';
795+
796+
// @public
797+
export type LanguageModelMessageType = 'text' | 'image' | 'audio';
798+
799+
// @public
800+
export interface LanguageModelPromptOptions {
801+
// (undocumented)
802+
responseConstraint?: object;
803+
}
804+
722805
// @public
723806
export const Modality: {
724807
readonly MODALITY_UNSPECIFIED: "MODALITY_UNSPECIFIED";
@@ -777,6 +860,14 @@ export interface ObjectSchemaRequest extends SchemaRequest {
777860
type: 'object';
778861
}
779862

863+
// @public
864+
export interface OnDeviceParams {
865+
// (undocumented)
866+
createOptions?: LanguageModelCreateOptions;
867+
// (undocumented)
868+
promptOptions?: LanguageModelPromptOptions;
869+
}
870+
780871
// @public
781872
export type Part = TextPart | InlineDataPart | FunctionCallPart | FunctionResponsePart | FileDataPart;
782873

docs-devsite/_toc.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ toc:
2626
path: /docs/reference/js/ai.booleanschema.md
2727
- title: ChatSession
2828
path: /docs/reference/js/ai.chatsession.md
29+
- title: ChromeAdapter
30+
path: /docs/reference/js/ai.chromeadapter.md
2931
- title: Citation
3032
path: /docs/reference/js/ai.citation.md
3133
- title: CitationMetadata
@@ -90,6 +92,8 @@ toc:
9092
path: /docs/reference/js/ai.groundingmetadata.md
9193
- title: GroundingSupport
9294
path: /docs/reference/js/ai.groundingsupport.md
95+
- title: HybridParams
96+
path: /docs/reference/js/ai.hybridparams.md
9397
- title: ImagenGCSImage
9498
path: /docs/reference/js/ai.imagengcsimage.md
9599
- title: ImagenGenerationConfig
@@ -110,6 +114,18 @@ toc:
110114
path: /docs/reference/js/ai.inlinedatapart.md
111115
- title: IntegerSchema
112116
path: /docs/reference/js/ai.integerschema.md
117+
- title: LanguageModelCreateCoreOptions
118+
path: /docs/reference/js/ai.languagemodelcreatecoreoptions.md
119+
- title: LanguageModelCreateOptions
120+
path: /docs/reference/js/ai.languagemodelcreateoptions.md
121+
- title: LanguageModelExpected
122+
path: /docs/reference/js/ai.languagemodelexpected.md
123+
- title: LanguageModelMessage
124+
path: /docs/reference/js/ai.languagemodelmessage.md
125+
- title: LanguageModelMessageContent
126+
path: /docs/reference/js/ai.languagemodelmessagecontent.md
127+
- title: LanguageModelPromptOptions
128+
path: /docs/reference/js/ai.languagemodelpromptoptions.md
113129
- title: ModalityTokenCount
114130
path: /docs/reference/js/ai.modalitytokencount.md
115131
- title: ModelParams
@@ -120,6 +136,8 @@ toc:
120136
path: /docs/reference/js/ai.objectschema.md
121137
- title: ObjectSchemaRequest
122138
path: /docs/reference/js/ai.objectschemarequest.md
139+
- title: OnDeviceParams
140+
path: /docs/reference/js/ai.ondeviceparams.md
123141
- title: PromptFeedback
124142
path: /docs/reference/js/ai.promptfeedback.md
125143
- title: RequestOptions

docs-devsite/ai.chatsession.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export declare class ChatSession
2222

2323
| Constructor | Modifiers | Description |
2424
| --- | --- | --- |
25-
| [(constructor)(apiSettings, model, params, requestOptions)](./ai.chatsession.md#chatsessionconstructor) | | Constructs a new instance of the <code>ChatSession</code> class |
25+
| [(constructor)(apiSettings, model, chromeAdapter, params, requestOptions)](./ai.chatsession.md#chatsessionconstructor) | | Constructs a new instance of the <code>ChatSession</code> class |
2626

2727
## Properties
2828

@@ -47,7 +47,7 @@ Constructs a new instance of the `ChatSession` class
4747
<b>Signature:</b>
4848

4949
```typescript
50-
constructor(apiSettings: ApiSettings, model: string, params?: StartChatParams | undefined, requestOptions?: RequestOptions | undefined);
50+
constructor(apiSettings: ApiSettings, model: string, chromeAdapter?: ChromeAdapter | undefined, params?: StartChatParams | undefined, requestOptions?: RequestOptions | undefined);
5151
```
5252

5353
#### Parameters
@@ -56,6 +56,7 @@ constructor(apiSettings: ApiSettings, model: string, params?: StartChatParams |
5656
| --- | --- | --- |
5757
| apiSettings | ApiSettings | |
5858
| model | string | |
59+
| chromeAdapter | [ChromeAdapter](./ai.chromeadapter.md#chromeadapter_interface) \| undefined | |
5960
| params | [StartChatParams](./ai.startchatparams.md#startchatparams_interface) \| undefined | |
6061
| requestOptions | [RequestOptions](./ai.requestoptions.md#requestoptions_interface) \| undefined | |
6162

docs-devsite/ai.chromeadapter.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
Project: /docs/reference/js/_project.yaml
2+
Book: /docs/reference/_book.yaml
3+
page_type: reference
4+
5+
{% comment %}
6+
DO NOT EDIT THIS FILE!
7+
This is generated by the JS SDK team, and any local changes will be
8+
overwritten. Changes should be made in the source code at
9+
https://github.com/firebase/firebase-js-sdk
10+
{% endcomment %}
11+
12+
# ChromeAdapter interface
13+
<b>(EXPERIMENTAL)</b> Defines an inference "backend" that uses Chrome's on-device model, and encapsulates logic for detecting when on-device inference is possible.
14+
15+
These methods should not be called directly by the user.
16+
17+
<b>Signature:</b>
18+
19+
```typescript
20+
export interface ChromeAdapter
21+
```
22+
23+
## Methods
24+
25+
| Method | Description |
26+
| --- | --- |
27+
| [generateContent(request)](./ai.chromeadapter.md#chromeadaptergeneratecontent) | Generates content using on-device inference. |
28+
| [generateContentStream(request)](./ai.chromeadapter.md#chromeadaptergeneratecontentstream) | Generates a content stream using on-device inference. |
29+
| [isAvailable(request)](./ai.chromeadapter.md#chromeadapterisavailable) | Checks if the on-device model is capable of handling a given request. |
30+
31+
## ChromeAdapter.generateContent()
32+
33+
Generates content using on-device inference.
34+
35+
This is comparable to [GenerativeModel.generateContent()](./ai.generativemodel.md#generativemodelgeneratecontent) for generating content using in-cloud inference.
36+
37+
<b>Signature:</b>
38+
39+
```typescript
40+
generateContent(request: GenerateContentRequest): Promise<Response>;
41+
```
42+
43+
#### Parameters
44+
45+
| Parameter | Type | Description |
46+
| --- | --- | --- |
47+
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | a standard Firebase AI [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) |
48+
49+
<b>Returns:</b>
50+
51+
Promise&lt;Response&gt;
52+
53+
## ChromeAdapter.generateContentStream()
54+
55+
Generates a content stream using on-device inference.
56+
57+
This is comparable to [GenerativeModel.generateContentStream()](./ai.generativemodel.md#generativemodelgeneratecontentstream) for generating a content stream using in-cloud inference.
58+
59+
<b>Signature:</b>
60+
61+
```typescript
62+
generateContentStream(request: GenerateContentRequest): Promise<Response>;
63+
```
64+
65+
#### Parameters
66+
67+
| Parameter | Type | Description |
68+
| --- | --- | --- |
69+
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | a standard Firebase AI [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) |
70+
71+
<b>Returns:</b>
72+
73+
Promise&lt;Response&gt;
74+
75+
## ChromeAdapter.isAvailable()
76+
77+
Checks if the on-device model is capable of handling a given request.
78+
79+
<b>Signature:</b>
80+
81+
```typescript
82+
isAvailable(request: GenerateContentRequest): Promise<boolean>;
83+
```
84+
85+
#### Parameters
86+
87+
| Parameter | Type | Description |
88+
| --- | --- | --- |
89+
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | A potential request to be passed to the model. |
90+
91+
<b>Returns:</b>
92+
93+
Promise&lt;boolean&gt;
94+

docs-devsite/ai.generativemodel.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export declare class GenerativeModel extends AIModel
2323
2424
| Constructor | Modifiers | Description |
2525
| --- | --- | --- |
26-
| [(constructor)(ai, modelParams, requestOptions)](./ai.generativemodel.md#generativemodelconstructor) | | Constructs a new instance of the <code>GenerativeModel</code> class |
26+
| [(constructor)(ai, modelParams, requestOptions, chromeAdapter)](./ai.generativemodel.md#generativemodelconstructor) | | Constructs a new instance of the <code>GenerativeModel</code> class |
2727
2828
## Properties
2929
@@ -52,7 +52,7 @@ Constructs a new instance of the `GenerativeModel` class
5252
<b>Signature:</b>
5353
5454
```typescript
55-
constructor(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions);
55+
constructor(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions, chromeAdapter?: ChromeAdapter | undefined);
5656
```
5757
5858
#### Parameters
@@ -62,6 +62,7 @@ constructor(ai: AI, modelParams: ModelParams, requestOptions?: RequestOptions);
6262
| ai | [AI](./ai.ai.md#ai_interface) | |
6363
| modelParams | [ModelParams](./ai.modelparams.md#modelparams_interface) | |
6464
| requestOptions | [RequestOptions](./ai.requestoptions.md#requestoptions_interface) | |
65+
| chromeAdapter | [ChromeAdapter](./ai.chromeadapter.md#chromeadapter_interface) \| undefined | |
6566
6667
## GenerativeModel.generationConfig
6768

0 commit comments

Comments
 (0)