File tree 3 files changed +26
-3
lines changed
packages/vertexai/src/methods 3 files changed +26
-3
lines changed Original file line number Diff line number Diff line change @@ -314,7 +314,7 @@ async function callVertexAI(app) {
314
314
console . log ( '[VERTEXAI] start' ) ;
315
315
const vertexAI = getVertexAI ( app ) ;
316
316
const model = getGenerativeModel ( vertexAI , {
317
- mode : 'prefer_on_device '
317
+ mode : 'only_on_device '
318
318
} ) ;
319
319
const singleResult = await model . generateContent ( [
320
320
{ text : 'describe the following:' } ,
Original file line number Diff line number Diff line change @@ -194,7 +194,20 @@ describe('ChromeAdapter', () => {
194
194
) . to . be . false ;
195
195
} ) ;
196
196
} ) ;
197
- describe ( 'generateContentOnDevice' , ( ) => {
197
+ describe ( 'generateContent' , ( ) => {
198
+ it ( 'throws if Chrome API is undefined' , async ( ) => {
199
+ const adapter = new ChromeAdapter ( undefined , 'only_on_device' ) ;
200
+ await expect (
201
+ adapter . generateContent ( {
202
+ contents : [ ]
203
+ } )
204
+ )
205
+ . to . eventually . be . rejectedWith (
206
+ VertexAIError ,
207
+ 'Chrome AI requested for unsupported browser version.'
208
+ )
209
+ . and . have . property ( 'code' , VertexAIErrorCode . REQUEST_ERROR ) ;
210
+ } ) ;
198
211
it ( 'generates content' , async ( ) => {
199
212
const languageModelProvider = {
200
213
create : ( ) => Promise . resolve ( { } )
Original file line number Diff line number Diff line change @@ -63,14 +63,18 @@ export class ChromeAdapter {
63
63
if ( this . mode === 'only_in_cloud' ) {
64
64
return false ;
65
65
}
66
+
66
67
const availability = await this . languageModelProvider ?. availability ( ) ;
68
+
69
+ // Triggers async model download so it'll be available next time.
67
70
if ( availability === Availability . downloadable ) {
68
- // Triggers async model download so it'll be available next time.
69
71
this . download ( ) ;
70
72
}
73
+
71
74
if ( this . mode === 'only_on_device' ) {
72
75
return true ;
73
76
}
77
+
74
78
// Applies prefer_on_device logic.
75
79
return (
76
80
availability === Availability . available &&
@@ -214,6 +218,12 @@ export class ChromeAdapter {
214
218
// TODO: define a default value, since these are optional.
215
219
options : LanguageModelCreateOptions
216
220
) : Promise < LanguageModel > {
221
+ if ( ! this . languageModelProvider ) {
222
+ throw new VertexAIError (
223
+ VertexAIErrorCode . REQUEST_ERROR ,
224
+ 'Chrome AI requested for unsupported browser version.'
225
+ ) ;
226
+ }
217
227
// TODO: could we use this.onDeviceParams instead of passing in options?
218
228
ChromeAdapter . addImageTypeAsExpectedInput ( options ) ;
219
229
const newSession = await this . languageModelProvider ! . create ( options ) ;
You can’t perform that action at this time.
0 commit comments