一直在使用github 的 copilot 来编程,确实好用,对编码效率有很大提升。
但是站在公司角度,因为它只能对接公网(有代码安全问题)。另外,它的扩展能力也不强,无法适配公司特定领域的知识库,无法最大化作用,所以不太能大规模推广,当然,还有成本问题(每月每人70多元,不是个小数目)。
于是,想尝试选型 开源的Continue插件来试试,是否可以替代github copilot,完成公司内部的AI 编程。试用了一下,总如如下:
一、Continue介绍:
它是一款开源的领先的AI编程助手,主要作用是代码自动生成和在编码中问答。因为是完全开源的,可定制性也非常好,一些企业级的大模型产品,也采用类似的方案。它作为插件,支持VS Code 和 JetBrains 两种较通用的IDE。
主要的功能一览:
1:快速理解选中的代码,为你解释代码。通过问答(解释选中代码)
2:自动补全代码,提供编码的提示。使用 tab 来选择提示的代码。
3:对选定的代码进行重构。问题(可提出重构的要求)
4:针对当前项目/代码库的代码进行提问。使用 @codebase 进行范围限定后的提问。
还有一些默认范围。如:@Git Diff @Terminal @Problems
5:快速引用上下文。针对上下文进行提问。上下文有一些默认值,也可以自行定义。如:@a1.cpp 这是针对代码 @React 代码框架 ……
6:使用 / 快速执行命令,完成固定的任务。预置任务:
/comment 加注释,/edit 编辑修改代码,/share 将代码按指定格式输出用于分享,/cmd 执行命令,/test 生成单元测试。
命令可以自行定义(定义的执行是提示词)
7:进一步解释/解决调试终端中的错误。
二、安装初始化:
2.1:Configuration
配置主要是配使用的聊天模型,补齐代码模型,嵌入式索引算法模型,排序算法模型。
免费试用(在线):
{
"models": [
{
"title": "GPT-4o (trial)",
"provider": "free-trial",
"model": "gpt-4o"
}
],
"tabAutocompleteModel": {
"title": "Codestral (trial)",
"provider": "free-trial",
"model": "AUTODETECT"
},
"embeddingsProvider": {
"provider": "free-trial"
},
"reranker": {
"name": "free-trial"
}
}
使用的都是公网提供的代理服务,在时间,速度,性能,功能上都是有限制的。所以,对于企业级应用是基本不能用。
最佳配置(在线):
chatting:使用 Claude 3.5
autocomplete:Codestral
embeddings:Voyage AI
remark:Voyage AI
{
"models": [
{
"title": "Claude 3.5 Sonnet",
"provider": "anthropic",
"model": "claude-3-5-sonnet-20240620",
"apiKey": "[ANTHROPIC_API_KEY]"
}
],
"tabAutocompleteModel": {
"title": "Codestral",
"provider": "mistral",
"model": "codestral-latest",
"apiKey": "[CODESTRAL_API_KEY]"
},
"embeddingsProvider": {
"provider": "openai",
"model": "voyage-code-2",
"apiBase": "https://api.voyageai.com/v1/",
"apiKey": "[VOYAGE_AI_API_KEY]"
},
"reranker": {
"name": "voyage",
"params": {
"apiKey": "[VOYAGE_AI_API_KEY]"
}
}
}
这虽然是最佳配置,但因为涉及apikey,所以需要去相应的完成注册。
本地配置(离线):
主要使用ollama来完成本地服务的部署。可以保证使用中不会有什么内容外泄。
- For chat:
ollama pull llama3:8b
- For autocomplete:
ollama pull starcoder2:3b
- For embeddings:
ollama pull nomic-embed-text
{
"models": [
{
"title": "Ollama",
"provider": "ollama",
"model": "AUTODETECT"
}
],
"tabAutocompleteModel": {
"title": "Starcoder 2 3b",
"provider": "ollama",
"model": "starcoder2:3b"
},
"embeddingsProvider": {
"provider": "ollama",
"model": "nomic-embed-text"
}
}
注意:为了保证完全私密性,对于VSCode的插件安装需要单独下载后安装。
对于遥测监控功能需要关闭:将 "allowAnonymousTelemetry"
设置为 false
。这将阻止 Continue 插件向 PostHog 发送匿名遥测数据。
验权配置:
验权方式:通过apikey
"apiKey": "xxx"
上下文长度配置:
设置模型的上下文长度,确定了chat时能返回的长度
"contextLength": 8192
定制对话模板
如果你采用的模型,对于提示词有特殊的要求,可以通过定制对话模板,来统一不同模型造成的差异。这个需要你对采用的模型非常熟悉。
~/.continue/config.ts
function modifyConfig(config: Config): Config {
const model = config.models.find(
(model) => model.title === "My Alpaca Model",
);
if (model) {
model.templateMes