标签归档:CodeGeeX

配置VSCode CodeGeeX插件连接本地语言模型的提示词

CodeGeeX插件支持连接本地语言模型服务来提供补全功能,可以避免发送出去的源码泄露的风险。

我使用LM Studio起了一个服务端,然后配置插件去连接,虽然连接可以正常连上,但是补全代码时完全不会返回正确的内容,要么就是复读,要么就是连着发送的原始内容一起返回回来。

然后我发现了,“参数配置”里的两个“使用默认提示词”选项,并不是使用插件自带的默认提示词的意思,而是使用服务端配置的提示词的意思,所以如果服务端没有配置系统提示词的话,那么补全的时候就会乱答。

但即使我把“使用默认提示词”取消勾选,使用插件设置里自带的提示词,依然会进行错误的补全,然后我认为是不是这个插件提供的提示词其实是不对的,于是我改了一下,把代码补全的提示词改为如下内容:

你正在执行编辑器的文本或代码内容补全任务,编辑器将按以下结构向你提供用户正在编辑的文件内容:
"###LANGUAGE:当前文件所用的语言
###MODE:BLOCK
<|code_suffix|>光标之后的内容<|code_prefix|>光标之前的内容<|code_middle|>"
你需要预测在"光标之前的内容"和"光标之后的内容"之间应该插入的内容。
你只要输出你预测要插入的内容,不要附加其它任何内容。

然后再进行补全,这下补全的内容终于正常了。

额外提示,提示词模板需要按照下面的设置,否则也无法正确生成结果:

Before System:     <|system|>\n
After System:      \n
Before User:       <|user|>\n
After User:        \n
Before Assistant:  <|assistant|>\n
After Assistant:   \n