2
2
3
3
/** @type {import('..').PromptInterface } */
4
4
export async function prompt ( userPrompt , promptOptions ) {
5
- const promptFetch = promptOptions . request ?. fetch || fetch ;
5
+ const options = typeof userPrompt === "string" ? promptOptions : userPrompt ;
6
6
7
- const systemMessage = promptOptions . tools
7
+ const promptFetch = options . request ?. fetch || fetch ;
8
+
9
+ const systemMessage = options . tools
8
10
? "You are a helpful assistant. Use the supplied tools to assist the user."
9
11
: "You are a helpful assistant." ;
10
12
13
+ const messages = [
14
+ {
15
+ role : "system" ,
16
+ content : systemMessage ,
17
+ } ,
18
+ ] ;
19
+
20
+ if ( options . messages ) {
21
+ messages . push ( ...options . messages ) ;
22
+ }
23
+
24
+ if ( typeof userPrompt === "string" ) {
25
+ messages . push ( {
26
+ role : "user" ,
27
+ content : userPrompt ,
28
+ } ) ;
29
+ }
30
+
11
31
const response = await promptFetch (
12
32
"https://api.githubcopilot.com/chat/completions" ,
13
33
{
@@ -16,22 +36,13 @@ export async function prompt(userPrompt, promptOptions) {
16
36
accept : "application/json" ,
17
37
"content-type" : "application/json; charset=UTF-8" ,
18
38
"user-agent" : "copilot-extensions/preview-sdk.js" ,
19
- authorization : `Bearer ${ promptOptions . token } ` ,
39
+ authorization : `Bearer ${ options . token } ` ,
20
40
} ,
21
41
body : JSON . stringify ( {
22
- messages : [
23
- {
24
- role : "system" ,
25
- content : systemMessage ,
26
- } ,
27
- {
28
- role : "user" ,
29
- content : userPrompt ,
30
- } ,
31
- ] ,
32
- model : promptOptions . model ,
33
- toolChoice : promptOptions . tools ? "auto" : undefined ,
34
- tools : promptOptions . tools ,
42
+ messages : messages ,
43
+ model : options . model ,
44
+ toolChoice : options . tools ? "auto" : undefined ,
45
+ tools : options . tools ,
35
46
} ) ,
36
47
}
37
48
) ;
0 commit comments