16
16
*/
17
17
18
18
import { AIError } from '../errors' ;
19
+ import { logger } from '../logger' ;
19
20
import {
20
21
CountTokensRequest ,
21
22
GenerateContentRequest ,
@@ -100,6 +101,7 @@ export class ChromeAdapter {
100
101
content . parts . map ( ChromeAdapter . toLanguageModelMessageContent )
101
102
)
102
103
) ;
104
+ logger . warn ( 'Only generating content from first item in "contents" array.' ) ;
103
105
const text = await session . prompt ( contents ) ;
104
106
return ChromeAdapter . toResponse ( text ) ;
105
107
}
@@ -124,6 +126,7 @@ export class ChromeAdapter {
124
126
content . parts . map ( ChromeAdapter . toLanguageModelMessageContent )
125
127
)
126
128
) ;
129
+ logger . warn ( 'Only generating content from first item in "contents" array.' ) ;
127
130
const stream = await session . promptStreaming ( contents ) ;
128
131
return ChromeAdapter . toStreamResponse ( stream ) ;
129
132
}
@@ -141,13 +144,15 @@ export class ChromeAdapter {
141
144
private static isOnDeviceRequest ( request : GenerateContentRequest ) : boolean {
142
145
// Returns false if the prompt is empty.
143
146
if ( request . contents . length === 0 ) {
147
+ logger . debug ( 'Empty prompt rejected for on-device inference.' ) ;
144
148
return false ;
145
149
}
146
150
147
151
for ( const content of request . contents ) {
148
152
// Returns false if the request contains multiple roles, eg a chat history.
149
153
// TODO: remove this guard once LanguageModelMessage is supported.
150
154
if ( content . role !== 'user' ) {
155
+ logger . debug ( 'Non-user role "${content.role}" rejected for on-device inference.' ) ;
151
156
return false ;
152
157
}
153
158
@@ -159,6 +164,9 @@ export class ChromeAdapter {
159
164
part . inlineData . mimeType
160
165
) === - 1
161
166
) {
167
+ logger . debug (
168
+ `Unsupported mime type "${ part . inlineData . mimeType } " rejected for on-device inference.`
169
+ ) ;
162
170
return false ;
163
171
}
164
172
}
0 commit comments