Skip to content

Commit 69f393e

Browse files
committed
Throw Vertex error
1 parent 8979482 commit 69f393e

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

e2e/sample-apps/modular.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ async function callVertexAI(app) {
314314
console.log('[VERTEXAI] start');
315315
const vertexAI = getVertexAI(app);
316316
const model = getGenerativeModel(vertexAI, {
317-
mode: 'prefer_on_device'
317+
mode: 'only_on_device'
318318
});
319319
const singleResult = await model.generateContent([
320320
{ text: 'describe the following:' },

packages/vertexai/src/methods/chrome-adapter.test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,20 @@ describe('ChromeAdapter', () => {
194194
).to.be.false;
195195
});
196196
});
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+
});
198211
it('generates content', async () => {
199212
const languageModelProvider = {
200213
create: () => Promise.resolve({})

packages/vertexai/src/methods/chrome-adapter.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,18 @@ export class ChromeAdapter {
6363
if (this.mode === 'only_in_cloud') {
6464
return false;
6565
}
66+
6667
const availability = await this.languageModelProvider?.availability();
68+
69+
// Triggers async model download so it'll be available next time.
6770
if (availability === Availability.downloadable) {
68-
// Triggers async model download so it'll be available next time.
6971
this.download();
7072
}
73+
7174
if (this.mode === 'only_on_device') {
7275
return true;
7376
}
77+
7478
// Applies prefer_on_device logic.
7579
return (
7680
availability === Availability.available &&
@@ -214,6 +218,12 @@ export class ChromeAdapter {
214218
// TODO: define a default value, since these are optional.
215219
options: LanguageModelCreateOptions
216220
): Promise<LanguageModel> {
221+
if (!this.languageModelProvider) {
222+
throw new VertexAIError(
223+
VertexAIErrorCode.REQUEST_ERROR,
224+
'Chrome AI requested for unsupported browser version.'
225+
);
226+
}
217227
// TODO: could we use this.onDeviceParams instead of passing in options?
218228
ChromeAdapter.addImageTypeAsExpectedInput(options);
219229
const newSession = await this.languageModelProvider!.create(options);

0 commit comments

Comments
 (0)