Skip to content

Commit 5df0f21

Browse files
committed
add experimental tag to ChromeAdapter
1 parent f9f641d commit 5df0f21

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

docs-devsite/ai.chromeadapter.md

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ https://github.com/firebase/firebase-js-sdk
1010
{% endcomment %}
1111

1212
# ChromeAdapter interface
13+
(EXPERIMENTAL)
14+
1315
Defines an inference "backend" that uses Chrome's on-device model, and encapsulates logic for detecting when on-device is possible.
1416

17+
These methods should not be called directly by the user.
18+
1519
<b>Signature:</b>
1620

1721
```typescript
@@ -22,13 +26,15 @@ export interface ChromeAdapter
2226

2327
| Method | Description |
2428
| --- | --- |
25-
| [countTokens(\_request)](./ai.chromeadapter.md#chromeadaptercounttokens) | |
26-
| [generateContent(request)](./ai.chromeadapter.md#chromeadaptergeneratecontent) | |
27-
| [generateContentStream(request)](./ai.chromeadapter.md#chromeadaptergeneratecontentstream) | |
28-
| [isAvailable(request)](./ai.chromeadapter.md#chromeadapterisavailable) | |
29+
| [countTokens(\_request)](./ai.chromeadapter.md#chromeadaptercounttokens) | Stub - not yet available for on-device. |
30+
| [generateContent(request)](./ai.chromeadapter.md#chromeadaptergeneratecontent) | Generates content on device.<p>This is comparable to [GenerativeModel.generateContent()](./ai.generativemodel.md#generativemodelgeneratecontent) for generating content in Cloud.</p> |
31+
| [generateContentStream(request)](./ai.chromeadapter.md#chromeadaptergeneratecontentstream) | Generates content stream on device.<p>This is comparable to [GenerativeModel.generateContentStream()](./ai.generativemodel.md#generativemodelgeneratecontentstream) for generating content in Cloud.</p> |
32+
| [isAvailable(request)](./ai.chromeadapter.md#chromeadapterisavailable) | Checks if a given request can be made on-device.<ol>Encapsulates a few concerns: <li>the mode</li> <li>API existence</li> <li>prompt formatting</li> <li>model availability, including triggering download if necessary</li> </ol><p>Pros: callers needn't be concerned with details of on-device availability.</p> <p>Cons: this method spans a few concerns and splits request validation from usage. If instance variables weren't already part of the API, we could consider a better separation of concerns.</p> |
2933

3034
## ChromeAdapter.countTokens()
3135

36+
Stub - not yet available for on-device.
37+
3238
<b>Signature:</b>
3339

3440
```typescript
@@ -47,6 +53,10 @@ Promise&lt;Response&gt;
4753

4854
## ChromeAdapter.generateContent()
4955

56+
Generates content on device.
57+
58+
<p>This is comparable to [GenerativeModel.generateContent()](./ai.generativemodel.md#generativemodelgeneratecontent) for generating content in Cloud.</p>
59+
5060
<b>Signature:</b>
5161

5262
```typescript
@@ -57,14 +67,20 @@ generateContent(request: GenerateContentRequest): Promise<Response>;
5767

5868
| Parameter | Type | Description |
5969
| --- | --- | --- |
60-
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | |
70+
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | a standard Firebase AI [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) |
6171

6272
<b>Returns:</b>
6373

6474
Promise&lt;Response&gt;
6575

76+
, so we can reuse common response formatting.
77+
6678
## ChromeAdapter.generateContentStream()
6779

80+
Generates content stream on device.
81+
82+
<p>This is comparable to [GenerativeModel.generateContentStream()](./ai.generativemodel.md#generativemodelgeneratecontentstream) for generating content in Cloud.</p>
83+
6884
<b>Signature:</b>
6985

7086
```typescript
@@ -75,14 +91,22 @@ generateContentStream(request: GenerateContentRequest): Promise<Response>;
7591

7692
| Parameter | Type | Description |
7793
| --- | --- | --- |
78-
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | |
94+
| request | [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) | a standard Firebase AI [GenerateContentRequest](./ai.generatecontentrequest.md#generatecontentrequest_interface) |
7995

8096
<b>Returns:</b>
8197

8298
Promise&lt;Response&gt;
8399

100+
, so we can reuse common response formatting.
101+
84102
## ChromeAdapter.isAvailable()
85103

104+
Checks if a given request can be made on-device.
105+
106+
<ol>Encapsulates a few concerns: <li>the mode</li> <li>API existence</li> <li>prompt formatting</li> <li>model availability, including triggering download if necessary</li> </ol>
107+
108+
<p>Pros: callers needn't be concerned with details of on-device availability.</p> <p>Cons: this method spans a few concerns and splits request validation from usage. If instance variables weren't already part of the API, we could consider a better separation of concerns.</p>
109+
86110
<b>Signature:</b>
87111

88112
```typescript

docs-devsite/ai.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ The Firebase AI Web SDK.
5151
| [AI](./ai.ai.md#ai_interface) | An instance of the Firebase AI SDK.<!-- -->Do not create this instance directly. Instead, use [getAI()](./ai.md#getai_a94a413)<!-- -->. |
5252
| [AIOptions](./ai.aioptions.md#aioptions_interface) | Options for initializing the AI service using [getAI()](./ai.md#getai_a94a413)<!-- -->. This allows specifying which backend to use (Vertex AI Gemini API or Gemini Developer API) and configuring its specific options (like location for Vertex AI). |
5353
| [BaseParams](./ai.baseparams.md#baseparams_interface) | Base parameters for a number of methods. |
54-
| [ChromeAdapter](./ai.chromeadapter.md#chromeadapter_interface) | Defines an inference "backend" that uses Chrome's on-device model, and encapsulates logic for detecting when on-device is possible. |
54+
| [ChromeAdapter](./ai.chromeadapter.md#chromeadapter_interface) | (EXPERIMENTAL)<!-- -->Defines an inference "backend" that uses Chrome's on-device model, and encapsulates logic for detecting when on-device is possible.<!-- -->These methods should not be called directly by the user. |
5555
| [Citation](./ai.citation.md#citation_interface) | A single citation. |
5656
| [CitationMetadata](./ai.citationmetadata.md#citationmetadata_interface) | Citation metadata that may be found on a [GenerateContentCandidate](./ai.generatecontentcandidate.md#generatecontentcandidate_interface)<!-- -->. |
5757
| [Content](./ai.content.md#content_interface) | Content type for both prompts and response candidates. |

packages/ai/src/types/chrome-adapter.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import { CountTokensRequest, GenerateContentRequest } from './requests';
1919

2020
/**
21+
* (EXPERIMENTAL)
22+
*
2123
* Defines an inference "backend" that uses Chrome's on-device model,
2224
* and encapsulates logic for detecting when on-device is possible.
2325
*

0 commit comments

Comments
 (0)