Skip to content

Commit 72cd626

Browse files
authored
AI Hybrid Inference: guard against undefined mode (#9045)
1 parent 50f142a commit 72cd626

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

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

+16-2
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,14 @@ describe('ChromeAdapter', () => {
109109
});
110110
});
111111
describe('isAvailable', () => {
112+
it('returns false if mode is undefined', async () => {
113+
const adapter = new ChromeAdapter();
114+
expect(
115+
await adapter.isAvailable({
116+
contents: []
117+
})
118+
).to.be.false;
119+
});
112120
it('returns false if mode is only cloud', async () => {
113121
const adapter = new ChromeAdapter(undefined, 'only_in_cloud');
114122
expect(
@@ -239,7 +247,10 @@ describe('ChromeAdapter', () => {
239247
const createStub = stub(languageModelProvider, 'create').returns(
240248
downloadPromise
241249
);
242-
const adapter = new ChromeAdapter(languageModelProvider);
250+
const adapter = new ChromeAdapter(
251+
languageModelProvider,
252+
'prefer_on_device'
253+
);
243254
await adapter.isAvailable({
244255
contents: [{ role: 'user', parts: [{ text: 'hi' }] }]
245256
});
@@ -260,7 +271,10 @@ describe('ChromeAdapter', () => {
260271
const createStub = stub(languageModelProvider, 'create').returns(
261272
downloadPromise
262273
);
263-
const adapter = new ChromeAdapter(languageModelProvider);
274+
const adapter = new ChromeAdapter(
275+
languageModelProvider,
276+
'prefer_on_device'
277+
);
264278
await adapter.isAvailable({
265279
contents: [{ role: 'user', parts: [{ text: 'hi' }] }]
266280
});

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

+6
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ export class ChromeAdapter {
6868
* separation of concerns.</p>
6969
*/
7070
async isAvailable(request: GenerateContentRequest): Promise<boolean> {
71+
if (!this.mode) {
72+
logger.debug(
73+
`On-device inference unavailable because mode is undefined.`
74+
);
75+
return false;
76+
}
7177
if (this.mode === 'only_in_cloud') {
7278
logger.debug(
7379
`On-device inference unavailable because mode is "only_in_cloud".`

0 commit comments

Comments
 (0)