1616 */
1717
1818import { AIError } from '../errors' ;
19+ import { logger } from '../logger' ;
1920import {
2021 CountTokensRequest ,
2122 GenerateContentRequest ,
@@ -65,6 +66,9 @@ export class ChromeAdapter {
6566 */
6667 async isAvailable ( request : GenerateContentRequest ) : Promise < boolean > {
6768 if ( this . mode === 'only_in_cloud' ) {
69+ logger . debug (
70+ `On-device inference unavailable because mode is "only_in_cloud".`
71+ ) ;
6872 return false ;
6973 }
7074
@@ -76,10 +80,20 @@ export class ChromeAdapter {
7680 }
7781
7882 // Applies prefer_on_device logic.
79- return (
80- availability === Availability . available &&
81- ChromeAdapter . isOnDeviceRequest ( request )
82- ) ;
83+ if ( availability !== Availability . available ) {
84+ logger . debug (
85+ `On-device inference unavailable because availability is "${ availability } ".`
86+ ) ;
87+ return false ;
88+ }
89+ if ( ! ChromeAdapter . isOnDeviceRequest ( request ) ) {
90+ logger . debug (
91+ `On-device inference unavailable because request is incompatible.`
92+ ) ;
93+ return false ;
94+ }
95+
96+ return true ;
8397 }
8498
8599 /**
@@ -135,13 +149,17 @@ export class ChromeAdapter {
135149 private static isOnDeviceRequest ( request : GenerateContentRequest ) : boolean {
136150 // Returns false if the prompt is empty.
137151 if ( request . contents . length === 0 ) {
152+ logger . debug ( 'Empty prompt rejected for on-device inference.' ) ;
138153 return false ;
139154 }
140155
141156 for ( const content of request . contents ) {
142157 // Returns false if the request contains multiple roles, eg a chat history.
143158 // TODO: remove this guard once LanguageModelMessage is supported.
144159 if ( content . role !== 'user' ) {
160+ logger . debug (
161+ `Non-user role "${ content . role } " rejected for on-device inference.`
162+ ) ;
145163 return false ;
146164 }
147165
@@ -153,6 +171,9 @@ export class ChromeAdapter {
153171 part . inlineData . mimeType
154172 ) === - 1
155173 ) {
174+ logger . debug (
175+ `Unsupported mime type "${ part . inlineData . mimeType } " rejected for on-device inference.`
176+ ) ;
156177 return false ;
157178 }
158179 }
0 commit comments