diff --git a/common/api-review/ai.api.md b/common/api-review/ai.api.md
index a603a531358..a7da6210ada 100644
--- a/common/api-review/ai.api.md
+++ b/common/api-review/ai.api.md
@@ -664,6 +664,70 @@ export class IntegerSchema extends Schema {
constructor(schemaParams?: SchemaParams);
}
+// @public (undocumented)
+export interface LanguageModelCreateCoreOptions {
+ // (undocumented)
+ expectedInputs?: LanguageModelExpectedInput[];
+ // (undocumented)
+ temperature?: number;
+ // (undocumented)
+ topK?: number;
+}
+
+// @public (undocumented)
+export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions {
+ // (undocumented)
+ initialPrompts?: LanguageModelInitialPrompts;
+ // (undocumented)
+ signal?: AbortSignal;
+ // (undocumented)
+ systemPrompt?: string;
+}
+
+// @public (undocumented)
+export interface LanguageModelExpectedInput {
+ // (undocumented)
+ languages?: string[];
+ // (undocumented)
+ type: LanguageModelMessageType;
+}
+
+// @public (undocumented)
+export type LanguageModelInitialPrompts = LanguageModelMessage[] | LanguageModelMessageShorthand[];
+
+// @public (undocumented)
+export interface LanguageModelMessage {
+ // (undocumented)
+ content: LanguageModelMessageContent[];
+ // (undocumented)
+ role: LanguageModelMessageRole;
+}
+
+// @public (undocumented)
+export interface LanguageModelMessageContent {
+ // (undocumented)
+ content: LanguageModelMessageContentValue;
+ // (undocumented)
+ type: LanguageModelMessageType;
+}
+
+// @public (undocumented)
+export type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string;
+
+// @public (undocumented)
+export type LanguageModelMessageRole = 'system' | 'user' | 'assistant';
+
+// @public (undocumented)
+export interface LanguageModelMessageShorthand {
+ // (undocumented)
+ content: string;
+ // (undocumented)
+ role: LanguageModelMessageRole;
+}
+
+// @public (undocumented)
+export type LanguageModelMessageType = 'text' | 'image' | 'audio';
+
// @public
export enum Modality {
AUDIO = "AUDIO",
@@ -722,8 +786,6 @@ export interface ObjectSchemaInterface extends SchemaInterface {
// @public
export interface OnDeviceParams {
- // Warning: (ae-forgotten-export) The symbol "LanguageModelCreateOptions" needs to be exported by the entry point index.d.ts
- //
// (undocumented)
createOptions?: LanguageModelCreateOptions;
// Warning: (ae-forgotten-export) The symbol "LanguageModelPromptOptions" needs to be exported by the entry point index.d.ts
diff --git a/docs-devsite/_toc.yaml b/docs-devsite/_toc.yaml
index 4076c443ddc..e8359727cda 100644
--- a/docs-devsite/_toc.yaml
+++ b/docs-devsite/_toc.yaml
@@ -102,6 +102,18 @@ toc:
path: /docs/reference/js/ai.inlinedatapart.md
- title: IntegerSchema
path: /docs/reference/js/ai.integerschema.md
+ - title: LanguageModelCreateCoreOptions
+ path: /docs/reference/js/ai.languagemodelcreatecoreoptions.md
+ - title: LanguageModelCreateOptions
+ path: /docs/reference/js/ai.languagemodelcreateoptions.md
+ - title: LanguageModelExpectedInput
+ path: /docs/reference/js/ai.languagemodelexpectedinput.md
+ - title: LanguageModelMessage
+ path: /docs/reference/js/ai.languagemodelmessage.md
+ - title: LanguageModelMessageContent
+ path: /docs/reference/js/ai.languagemodelmessagecontent.md
+ - title: LanguageModelMessageShorthand
+ path: /docs/reference/js/ai.languagemodelmessageshorthand.md
- title: ModalityTokenCount
path: /docs/reference/js/ai.modalitytokencount.md
- title: ModelParams
diff --git a/docs-devsite/ai.languagemodelcreatecoreoptions.md b/docs-devsite/ai.languagemodelcreatecoreoptions.md
new file mode 100644
index 00000000000..2c9f61b149f
--- /dev/null
+++ b/docs-devsite/ai.languagemodelcreatecoreoptions.md
@@ -0,0 +1,49 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LanguageModelCreateCoreOptions interface
+Signature:
+
+```typescript
+export interface LanguageModelCreateCoreOptions
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [expectedInputs](./ai.languagemodelcreatecoreoptions.md#languagemodelcreatecoreoptionsexpectedinputs) | [LanguageModelExpectedInput](./ai.languagemodelexpectedinput.md#languagemodelexpectedinput_interface)\[\] | |
+| [temperature](./ai.languagemodelcreatecoreoptions.md#languagemodelcreatecoreoptionstemperature) | number | |
+| [topK](./ai.languagemodelcreatecoreoptions.md#languagemodelcreatecoreoptionstopk) | number | |
+
+## LanguageModelCreateCoreOptions.expectedInputs
+
+Signature:
+
+```typescript
+expectedInputs?: LanguageModelExpectedInput[];
+```
+
+## LanguageModelCreateCoreOptions.temperature
+
+Signature:
+
+```typescript
+temperature?: number;
+```
+
+## LanguageModelCreateCoreOptions.topK
+
+Signature:
+
+```typescript
+topK?: number;
+```
diff --git a/docs-devsite/ai.languagemodelcreateoptions.md b/docs-devsite/ai.languagemodelcreateoptions.md
new file mode 100644
index 00000000000..44edcf7e221
--- /dev/null
+++ b/docs-devsite/ai.languagemodelcreateoptions.md
@@ -0,0 +1,50 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LanguageModelCreateOptions interface
+Signature:
+
+```typescript
+export interface LanguageModelCreateOptions extends LanguageModelCreateCoreOptions
+```
+Extends: [LanguageModelCreateCoreOptions](./ai.languagemodelcreatecoreoptions.md#languagemodelcreatecoreoptions_interface)
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [initialPrompts](./ai.languagemodelcreateoptions.md#languagemodelcreateoptionsinitialprompts) | [LanguageModelInitialPrompts](./ai.md#languagemodelinitialprompts) | |
+| [signal](./ai.languagemodelcreateoptions.md#languagemodelcreateoptionssignal) | AbortSignal | |
+| [systemPrompt](./ai.languagemodelcreateoptions.md#languagemodelcreateoptionssystemprompt) | string | |
+
+## LanguageModelCreateOptions.initialPrompts
+
+Signature:
+
+```typescript
+initialPrompts?: LanguageModelInitialPrompts;
+```
+
+## LanguageModelCreateOptions.signal
+
+Signature:
+
+```typescript
+signal?: AbortSignal;
+```
+
+## LanguageModelCreateOptions.systemPrompt
+
+Signature:
+
+```typescript
+systemPrompt?: string;
+```
diff --git a/docs-devsite/ai.languagemodelexpectedinput.md b/docs-devsite/ai.languagemodelexpectedinput.md
new file mode 100644
index 00000000000..d6cbe028fc1
--- /dev/null
+++ b/docs-devsite/ai.languagemodelexpectedinput.md
@@ -0,0 +1,40 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LanguageModelExpectedInput interface
+Signature:
+
+```typescript
+export interface LanguageModelExpectedInput
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [languages](./ai.languagemodelexpectedinput.md#languagemodelexpectedinputlanguages) | string\[\] | |
+| [type](./ai.languagemodelexpectedinput.md#languagemodelexpectedinputtype) | [LanguageModelMessageType](./ai.md#languagemodelmessagetype) | |
+
+## LanguageModelExpectedInput.languages
+
+Signature:
+
+```typescript
+languages?: string[];
+```
+
+## LanguageModelExpectedInput.type
+
+Signature:
+
+```typescript
+type: LanguageModelMessageType;
+```
diff --git a/docs-devsite/ai.languagemodelmessage.md b/docs-devsite/ai.languagemodelmessage.md
new file mode 100644
index 00000000000..420059e4892
--- /dev/null
+++ b/docs-devsite/ai.languagemodelmessage.md
@@ -0,0 +1,40 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LanguageModelMessage interface
+Signature:
+
+```typescript
+export interface LanguageModelMessage
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [content](./ai.languagemodelmessage.md#languagemodelmessagecontent) | [LanguageModelMessageContent](./ai.languagemodelmessagecontent.md#languagemodelmessagecontent_interface)\[\] | |
+| [role](./ai.languagemodelmessage.md#languagemodelmessagerole) | [LanguageModelMessageRole](./ai.md#languagemodelmessagerole) | |
+
+## LanguageModelMessage.content
+
+Signature:
+
+```typescript
+content: LanguageModelMessageContent[];
+```
+
+## LanguageModelMessage.role
+
+Signature:
+
+```typescript
+role: LanguageModelMessageRole;
+```
diff --git a/docs-devsite/ai.languagemodelmessagecontent.md b/docs-devsite/ai.languagemodelmessagecontent.md
new file mode 100644
index 00000000000..06830ace272
--- /dev/null
+++ b/docs-devsite/ai.languagemodelmessagecontent.md
@@ -0,0 +1,40 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LanguageModelMessageContent interface
+Signature:
+
+```typescript
+export interface LanguageModelMessageContent
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [content](./ai.languagemodelmessagecontent.md#languagemodelmessagecontentcontent) | [LanguageModelMessageContentValue](./ai.md#languagemodelmessagecontentvalue) | |
+| [type](./ai.languagemodelmessagecontent.md#languagemodelmessagecontenttype) | [LanguageModelMessageType](./ai.md#languagemodelmessagetype) | |
+
+## LanguageModelMessageContent.content
+
+Signature:
+
+```typescript
+content: LanguageModelMessageContentValue;
+```
+
+## LanguageModelMessageContent.type
+
+Signature:
+
+```typescript
+type: LanguageModelMessageType;
+```
diff --git a/docs-devsite/ai.languagemodelmessageshorthand.md b/docs-devsite/ai.languagemodelmessageshorthand.md
new file mode 100644
index 00000000000..bf821b31d52
--- /dev/null
+++ b/docs-devsite/ai.languagemodelmessageshorthand.md
@@ -0,0 +1,40 @@
+Project: /docs/reference/js/_project.yaml
+Book: /docs/reference/_book.yaml
+page_type: reference
+
+{% comment %}
+DO NOT EDIT THIS FILE!
+This is generated by the JS SDK team, and any local changes will be
+overwritten. Changes should be made in the source code at
+https://github.com/firebase/firebase-js-sdk
+{% endcomment %}
+
+# LanguageModelMessageShorthand interface
+Signature:
+
+```typescript
+export interface LanguageModelMessageShorthand
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [content](./ai.languagemodelmessageshorthand.md#languagemodelmessageshorthandcontent) | string | |
+| [role](./ai.languagemodelmessageshorthand.md#languagemodelmessageshorthandrole) | [LanguageModelMessageRole](./ai.md#languagemodelmessagerole) | |
+
+## LanguageModelMessageShorthand.content
+
+Signature:
+
+```typescript
+content: string;
+```
+
+## LanguageModelMessageShorthand.role
+
+Signature:
+
+```typescript
+role: LanguageModelMessageRole;
+```
diff --git a/docs-devsite/ai.md b/docs-devsite/ai.md
index 01b3a455682..699d3a83cd6 100644
--- a/docs-devsite/ai.md
+++ b/docs-devsite/ai.md
@@ -105,6 +105,12 @@ The Firebase AI Web SDK.
| [ImagenModelParams](./ai.imagenmodelparams.md#imagenmodelparams_interface) | (Public Preview) Parameters for configuring an [ImagenModel](./ai.imagenmodel.md#imagenmodel_class). |
| [ImagenSafetySettings](./ai.imagensafetysettings.md#imagensafetysettings_interface) | (Public Preview) Settings for controlling the aggressiveness of filtering out sensitive content.See the [documentation](http://firebase.google.com/docs/vertex-ai/generate-images) for more details. |
| [InlineDataPart](./ai.inlinedatapart.md#inlinedatapart_interface) | Content part interface if the part represents an image. |
+| [LanguageModelCreateCoreOptions](./ai.languagemodelcreatecoreoptions.md#languagemodelcreatecoreoptions_interface) | |
+| [LanguageModelCreateOptions](./ai.languagemodelcreateoptions.md#languagemodelcreateoptions_interface) | |
+| [LanguageModelExpectedInput](./ai.languagemodelexpectedinput.md#languagemodelexpectedinput_interface) | |
+| [LanguageModelMessage](./ai.languagemodelmessage.md#languagemodelmessage_interface) | |
+| [LanguageModelMessageContent](./ai.languagemodelmessagecontent.md#languagemodelmessagecontent_interface) | |
+| [LanguageModelMessageShorthand](./ai.languagemodelmessageshorthand.md#languagemodelmessageshorthand_interface) | |
| [ModalityTokenCount](./ai.modalitytokencount.md#modalitytokencount_interface) | Represents token counting info for a single modality. |
| [ModelParams](./ai.modelparams.md#modelparams_interface) | Params passed to [getGenerativeModel()](./ai.md#getgenerativemodel_c63f46a). |
| [ObjectSchemaInterface](./ai.objectschemainterface.md#objectschemainterface_interface) | Interface for [ObjectSchema](./ai.objectschema.md#objectschema_class) class. |
@@ -143,6 +149,10 @@ The Firebase AI Web SDK.
| --- | --- |
| [BackendType](./ai.md#backendtype) | Type alias representing valid backend types. It can be either 'VERTEX_AI'
or 'GOOGLE_AI'
. |
| [InferenceMode](./ai.md#inferencemode) | Determines whether inference happens on-device or in-cloud. |
+| [LanguageModelInitialPrompts](./ai.md#languagemodelinitialprompts) | |
+| [LanguageModelMessageContentValue](./ai.md#languagemodelmessagecontentvalue) | |
+| [LanguageModelMessageRole](./ai.md#languagemodelmessagerole) | |
+| [LanguageModelMessageType](./ai.md#languagemodelmessagetype) | |
| [Part](./ai.md#part) | Content part - includes text, image/video, or function call/response part types. |
| [ResponseModality](./ai.md#responsemodality) | (Public Preview) Generation modalities to be returned in generation responses. |
| [Role](./ai.md#role) | Role is the producer of the content. |
@@ -373,6 +383,38 @@ Determines whether inference happens on-device or in-cloud.
export type InferenceMode = 'prefer_on_device' | 'only_on_device' | 'only_in_cloud';
```
+## LanguageModelInitialPrompts
+
+Signature:
+
+```typescript
+export type LanguageModelInitialPrompts = LanguageModelMessage[] | LanguageModelMessageShorthand[];
+```
+
+## LanguageModelMessageContentValue
+
+Signature:
+
+```typescript
+export type LanguageModelMessageContentValue = ImageBitmapSource | AudioBuffer | BufferSource | string;
+```
+
+## LanguageModelMessageRole
+
+Signature:
+
+```typescript
+export type LanguageModelMessageRole = 'system' | 'user' | 'assistant';
+```
+
+## LanguageModelMessageType
+
+Signature:
+
+```typescript
+export type LanguageModelMessageType = 'text' | 'image' | 'audio';
+```
+
## Part
Content part - includes text, image/video, or function call/response part types.
diff --git a/docs-devsite/ai.ondeviceparams.md b/docs-devsite/ai.ondeviceparams.md
index f4bfcbb5cff..16fed65560d 100644
--- a/docs-devsite/ai.ondeviceparams.md
+++ b/docs-devsite/ai.ondeviceparams.md
@@ -22,7 +22,7 @@ export interface OnDeviceParams
| Property | Type | Description |
| --- | --- | --- |
-| [createOptions](./ai.ondeviceparams.md#ondeviceparamscreateoptions) | LanguageModelCreateOptions | |
+| [createOptions](./ai.ondeviceparams.md#ondeviceparamscreateoptions) | [LanguageModelCreateOptions](./ai.languagemodelcreateoptions.md#languagemodelcreateoptions_interface) | |
| [promptOptions](./ai.ondeviceparams.md#ondeviceparamspromptoptions) | LanguageModelPromptOptions | |
## OnDeviceParams.createOptions
diff --git a/packages/ai/src/methods/chrome-adapter.ts b/packages/ai/src/methods/chrome-adapter.ts
index aa3709048a2..d6de108668d 100644
--- a/packages/ai/src/methods/chrome-adapter.ts
+++ b/packages/ai/src/methods/chrome-adapter.ts
@@ -104,7 +104,7 @@ export class ChromeAdapter {
*
*
This is comparable to {@link GenerativeModel.generateContent} for generating content in * Cloud.
- * @param request a standard Vertex {@link GenerateContentRequest} + * @param request - a standard Vertex {@link GenerateContentRequest} * @returns {@link Response}, so we can reuse common response formatting. */ async generateContent(request: GenerateContentRequest): PromiseThis is comparable to {@link GenerativeModel.generateContentStream} for generating content in * Cloud.
- * @param request a standard Vertex {@link GenerateContentRequest} + * @param request - a standard Vertex {@link GenerateContentRequest} * @returns {@link Response}, so we can reuse common response formatting. */ async generateContentStream( diff --git a/packages/ai/src/types/index.ts b/packages/ai/src/types/index.ts index 01f3e7a701a..698f15b8aea 100644 --- a/packages/ai/src/types/index.ts +++ b/packages/ai/src/types/index.ts @@ -23,3 +23,15 @@ export * from './error'; export * from './schema'; export * from './imagen'; export * from './googleai'; +export { + LanguageModelCreateOptions, + LanguageModelCreateCoreOptions, + LanguageModelExpectedInput, + LanguageModelInitialPrompts, + LanguageModelMessage, + LanguageModelMessageContent, + LanguageModelMessageContentValue, + LanguageModelMessageRole, + LanguageModelMessageShorthand, + LanguageModelMessageType +} from './language-model'; diff --git a/packages/ai/src/types/language-model.ts b/packages/ai/src/types/language-model.ts index 22916e7ff96..de4020f66bf 100644 --- a/packages/ai/src/types/language-model.ts +++ b/packages/ai/src/types/language-model.ts @@ -53,20 +53,20 @@ export interface LanguageModelPromptOptions { responseConstraint?: object; // TODO: Restore AbortSignal once the API is defined. } -interface LanguageModelExpectedInput { +export interface LanguageModelExpectedInput { type: LanguageModelMessageType; languages?: string[]; } // TODO: revert to type from Prompt API explainer once it's supported. export type LanguageModelPrompt = LanguageModelMessageContent[]; -type LanguageModelInitialPrompts = +export type LanguageModelInitialPrompts = | LanguageModelMessage[] | LanguageModelMessageShorthand[]; -interface LanguageModelMessage { +export interface LanguageModelMessage { role: LanguageModelMessageRole; content: LanguageModelMessageContent[]; } -interface LanguageModelMessageShorthand { +export interface LanguageModelMessageShorthand { role: LanguageModelMessageRole; content: string; } @@ -74,9 +74,9 @@ export interface LanguageModelMessageContent { type: LanguageModelMessageType; content: LanguageModelMessageContentValue; } -type LanguageModelMessageRole = 'system' | 'user' | 'assistant'; -type LanguageModelMessageType = 'text' | 'image' | 'audio'; -type LanguageModelMessageContentValue = +export type LanguageModelMessageRole = 'system' | 'user' | 'assistant'; +export type LanguageModelMessageType = 'text' | 'image' | 'audio'; +export type LanguageModelMessageContentValue = | ImageBitmapSource | AudioBuffer | BufferSource