@@ -21,7 +21,18 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
21
21
progress ?: Progress < IChatResponseFragment > ,
22
22
token ?: CancellationToken ,
23
23
) : Promise < string > {
24
+ // https://open.bigmodel.cn/dev/api#codegeex-4
25
+ // Using these 4 stops is enough
26
+ options . stop = [ "<|endoftext|>" , "<|user|>" , "<|assistant|>" , "<|observation|>" ] ;
24
27
const { model, ...rest } = options ;
28
+ // magic for completions prompt
29
+ if ( messages . length === 1 && messages [ 0 ] . content ) {
30
+ const partials = messages [ 0 ] . content . match ( / ^ < \| f i m _ p r e f i x \| > ( .* ) < \| f i m _ s u f f i x \| > ( .* ) < \| f i m _ m i d d l e \| > $ / s) ;
31
+ if ( partials ) {
32
+ messages [ 0 ] . content = `<|code_suffix|>${ partials [ 2 ] } <|code_prefix|>${ partials [ 1 ] } <|code_middle|>` ;
33
+ }
34
+ }
35
+
25
36
26
37
const llm = this . _newLLM ( options ) ;
27
38
@@ -33,7 +44,7 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
33
44
34
45
const completion = await llm . chat . completions . create (
35
46
{
36
- ...rest ,
47
+ ...rest ,
37
48
stream : true ,
38
49
model : this . _resolveChatModel ( model ) ,
39
50
messages : messages ,
@@ -69,10 +80,6 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
69
80
progress ?: Progress < IChatResponseFragment > ,
70
81
token ?: CancellationToken ,
71
82
) : Promise < string > {
72
- if ( this . configService . get ( 'completions.enableLegacyMode' ) ) {
73
- return this . _legacyCompletionResponse ( prompt , options , progress , token ) ;
74
- }
75
-
76
83
return this . provideChatResponse ( [ { role : ChatMessageRole . User , content : prompt } ] , options , progress , token ) ;
77
84
}
78
85
@@ -199,7 +206,8 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
199
206
}
200
207
201
208
private _resolveComletionModel ( model ?: string ) {
202
- return model || this . _resolveChatModel ( this . configService . get < string > ( 'zhipuai.model' ) ) ;
209
+ // codegeex-4 is the best choice for code completion :)
210
+ return 'codegeex-4' ;
203
211
}
204
212
205
213
private _resolveEmbeddingModel ( model ?: string ) {
0 commit comments