@@ -39,6 +39,7 @@ import {
39
39
} from '../telemetry/telemetryService' ;
40
40
import { DocsChatbotAIService } from './docsChatbotAIService' ;
41
41
import type TelemetryService from '../telemetry/telemetryService' ;
42
+ import type { ModelInput } from './prompts/promptBase' ;
42
43
import { processStreamWithIdentifiers } from './streamParsing' ;
43
44
import type { PromptIntent } from './prompts/intent' ;
44
45
@@ -164,10 +165,10 @@ export default class ParticipantController {
164
165
}
165
166
166
167
async _getChatResponse ( {
167
- messages ,
168
+ modelInput ,
168
169
token,
169
170
} : {
170
- messages : vscode . LanguageModelChatMessage [ ] ;
171
+ modelInput : ModelInput ;
171
172
token : vscode . CancellationToken ;
172
173
} ) : Promise < vscode . LanguageModelChatResponse > {
173
174
const model = await getCopilotModel ( ) ;
@@ -176,20 +177,22 @@ export default class ParticipantController {
176
177
throw new Error ( 'Copilot model not found' ) ;
177
178
}
178
179
179
- return await model . sendRequest ( messages , { } , token ) ;
180
+ this . _telemetryService . trackCopilotParticipantPrompt ( modelInput . stats ) ;
181
+
182
+ return await model . sendRequest ( modelInput . messages , { } , token ) ;
180
183
}
181
184
182
185
async streamChatResponse ( {
183
- messages ,
186
+ modelInput ,
184
187
stream,
185
188
token,
186
189
} : {
187
- messages : vscode . LanguageModelChatMessage [ ] ;
190
+ modelInput : ModelInput ;
188
191
stream : vscode . ChatResponseStream ;
189
192
token : vscode . CancellationToken ;
190
193
} ) : Promise < void > {
191
194
const chatResponse = await this . _getChatResponse ( {
192
- messages ,
195
+ modelInput ,
193
196
token,
194
197
} ) ;
195
198
for await ( const fragment of chatResponse . text ) {
@@ -226,16 +229,16 @@ export default class ParticipantController {
226
229
}
227
230
228
231
async streamChatResponseContentWithCodeActions ( {
229
- messages ,
232
+ modelInput ,
230
233
stream,
231
234
token,
232
235
} : {
233
- messages : vscode . LanguageModelChatMessage [ ] ;
236
+ modelInput : ModelInput ;
234
237
stream : vscode . ChatResponseStream ;
235
238
token : vscode . CancellationToken ;
236
239
} ) : Promise < void > {
237
240
const chatResponse = await this . _getChatResponse ( {
238
- messages ,
241
+ modelInput ,
239
242
token,
240
243
} ) ;
241
244
@@ -254,15 +257,15 @@ export default class ParticipantController {
254
257
// This will stream all of the response content and create a string from it.
255
258
// It should only be used when the entire response is needed at one time.
256
259
async getChatResponseContent ( {
257
- messages ,
260
+ modelInput ,
258
261
token,
259
262
} : {
260
- messages : vscode . LanguageModelChatMessage [ ] ;
263
+ modelInput : ModelInput ;
261
264
token : vscode . CancellationToken ;
262
265
} ) : Promise < string > {
263
266
let responseContent = '' ;
264
267
const chatResponse = await this . _getChatResponse ( {
265
- messages ,
268
+ modelInput ,
266
269
token,
267
270
} ) ;
268
271
for await ( const fragment of chatResponse . text ) {
@@ -278,14 +281,14 @@ export default class ParticipantController {
278
281
stream : vscode . ChatResponseStream ,
279
282
token : vscode . CancellationToken
280
283
) : Promise < ChatResult > {
281
- const messages = await Prompts . generic . buildMessages ( {
284
+ const modelInput = await Prompts . generic . buildMessages ( {
282
285
request,
283
286
context,
284
287
connectionNames : this . _getConnectionNames ( ) ,
285
288
} ) ;
286
289
287
290
await this . streamChatResponseContentWithCodeActions ( {
288
- messages ,
291
+ modelInput ,
289
292
token,
290
293
stream,
291
294
} ) ;
@@ -334,14 +337,14 @@ export default class ParticipantController {
334
337
request : vscode . ChatRequest ;
335
338
token : vscode . CancellationToken ;
336
339
} ) : Promise < PromptIntent > {
337
- const messages = await Prompts . intent . buildMessages ( {
340
+ const modelInput = await Prompts . intent . buildMessages ( {
338
341
connectionNames : this . _getConnectionNames ( ) ,
339
342
request,
340
343
context,
341
344
} ) ;
342
345
343
346
const responseContent = await this . getChatResponseContent ( {
344
- messages ,
347
+ modelInput ,
345
348
token,
346
349
} ) ;
347
350
@@ -708,7 +711,7 @@ export default class ParticipantController {
708
711
connectionNames : this . _getConnectionNames ( ) ,
709
712
} ) ;
710
713
const responseContentWithNamespace = await this . getChatResponseContent ( {
711
- messages : messagesWithNamespace ,
714
+ modelInput : messagesWithNamespace ,
712
715
token,
713
716
} ) ;
714
717
const { databaseName, collectionName } =
@@ -1043,7 +1046,7 @@ export default class ParticipantController {
1043
1046
return schemaRequestChatResult ( context . history ) ;
1044
1047
}
1045
1048
1046
- const messages = await Prompts . schema . buildMessages ( {
1049
+ const modelInput = await Prompts . schema . buildMessages ( {
1047
1050
request,
1048
1051
context,
1049
1052
databaseName,
@@ -1054,7 +1057,7 @@ export default class ParticipantController {
1054
1057
...( sampleDocuments ? { sampleDocuments } : { } ) ,
1055
1058
} ) ;
1056
1059
await this . streamChatResponse ( {
1057
- messages ,
1060
+ modelInput ,
1058
1061
stream,
1059
1062
token,
1060
1063
} ) ;
@@ -1147,7 +1150,7 @@ export default class ParticipantController {
1147
1150
) ;
1148
1151
}
1149
1152
1150
- const messages = await Prompts . query . buildMessages ( {
1153
+ const modelInput = await Prompts . query . buildMessages ( {
1151
1154
request,
1152
1155
context,
1153
1156
databaseName,
@@ -1158,7 +1161,7 @@ export default class ParticipantController {
1158
1161
} ) ;
1159
1162
1160
1163
await this . streamChatResponseContentWithCodeActions ( {
1161
- messages ,
1164
+ modelInput ,
1162
1165
stream,
1163
1166
token,
1164
1167
} ) ;
@@ -1230,14 +1233,14 @@ export default class ParticipantController {
1230
1233
]
1231
1234
) : Promise < void > {
1232
1235
const [ request , context , stream , token ] = args ;
1233
- const messages = await Prompts . generic . buildMessages ( {
1236
+ const modelInput = await Prompts . generic . buildMessages ( {
1234
1237
request,
1235
1238
context,
1236
1239
connectionNames : this . _getConnectionNames ( ) ,
1237
1240
} ) ;
1238
1241
1239
1242
await this . streamChatResponseContentWithCodeActions ( {
1240
- messages ,
1243
+ modelInput ,
1241
1244
stream,
1242
1245
token,
1243
1246
} ) ;
0 commit comments