Skip to content

Commit 15a6c80

Browse files
committed
feat(completion): Add new language model "codegeex-4" for inline completion
1 parent 3e8e2d2 commit 15a6c80

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181
"description": "%configuration.completions.provider.description%",
182182
"enum": [
183183
"anthropic",
184+
"codegeex-4",
184185
"openai",
185186
"qianfan",
186187
"tongyi",

src/base/common/language-models/providers/zhipuaiProvider.ts

+14-6
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,18 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
2121
progress?: Progress<IChatResponseFragment>,
2222
token?: CancellationToken,
2323
): 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|>"];
2427
const { model, ...rest } = options;
28+
// magic for completions prompt
29+
if (messages.length === 1 && messages[0].content){
30+
const partials = messages[0].content.match(/^<\|fim_prefix\|>(.*)<\|fim_suffix\|>(.*)<\|fim_middle\|>$/s);
31+
if (partials) {
32+
messages[0].content = `<|code_suffix|>${partials[2]}<|code_prefix|>${partials[1]}<|code_middle|>`;
33+
}
34+
}
35+
2536

2637
const llm = this._newLLM(options);
2738

@@ -33,7 +44,7 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
3344

3445
const completion = await llm.chat.completions.create(
3546
{
36-
...rest,
47+
...rest ,
3748
stream: true,
3849
model: this._resolveChatModel(model),
3950
messages: messages,
@@ -69,10 +80,6 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
6980
progress?: Progress<IChatResponseFragment>,
7081
token?: CancellationToken,
7182
): Promise<string> {
72-
if (this.configService.get('completions.enableLegacyMode')) {
73-
return this._legacyCompletionResponse(prompt, options, progress, token);
74-
}
75-
7683
return this.provideChatResponse([{ role: ChatMessageRole.User, content: prompt }], options, progress, token);
7784
}
7885

@@ -199,7 +206,8 @@ export class ZhipuAILanguageModelProvider implements ILanguageModelProvider {
199206
}
200207

201208
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';
203211
}
204212

205213
private _resolveEmbeddingModel(model?: string) {

0 commit comments

Comments
 (0)