作为生成式人工智能的早期用例,代码助手实践已经获得了相当多的关注——尤其是在微软推出 GitHub Copilot 之后。但是,如果你不喜欢让微软动你的代码,或者不愿意每月支付 10 美元的费用,那么你可以构建自己的助手。
虽然微软是最早将人工智能代码助手 商业化 并集成到 IDE 中的公司之一,但它远不是唯一选项。事实上,有许多为代码生成而训练的大型语言模型(LLM)。
而且,你现在正在使用的电脑很有可能就能够运行这些模型。关键是以一种有实际用处的方式将它们集成到 IDE 中。
这就轮到像 Continue 这样的应用程序发挥作用了。这个 开源的代码助手 被设计成可以嵌入流行的 IDE,如 JetBrains 或 Visual Studio Code,并连接到你可能已经比较熟悉的流行的 LLM 运行程序,如 Ollama、Llama.cpp 和 LM Studio。
像其他流行的代码助手一样,Continue 支持代码补全和生成,并且能够针对不同的用例优化、注释或重构代码。此外,Continue 还提供了一个具有 RAG 功能的集成聊天机器人,让你可以有效地与代码库对话。
在本指南中,我们将搭配使用 Continue 与 Ollama,但 Continue 也可以与多个专有模型(包括 OpenAI 和 Anthropic)搭配使用——通过各模型的 API,如果你愿意按令牌付费而不是每月支付固定费用的话。
你需要做好以下准备:
-
一台能够运行普通 LLM 的机器。一个处理器相对比较新的系统就可以,但为了获得最佳性能,我们建议使用 Nvidia、AMD 或 Intel GPU ,且 vRAM 至少为 6GB。如果你更喜欢用 Mac 电脑,那么任何 Apple Silicon 系统应该都可以,包括最初的 M1。不过,为了能达到最佳效果,我们建议内存至少要有 16GB。
-
本指南还假设,你已经在机器上安装并运行了 Ollama 模型运行程序。如果没有,可以看下我们提供的 这份指南,它应该可以帮你在十分钟内运行起来。对于那些使用 Intel Integrated 或 Arc 显卡的用户,这里 有一份使用 IPEX-LLM 部署 Ollama 的指南。
-
兼容的 IDE。在撰写本文时,Continue 支持 JetBrains 和 Visual Studio Code。如果你想完全避开微软的遥测技术,像我们一样,开源社区构建的 VSCodium 是个不错的选择。
安装 Continue
在本指南中,我们将在 VSCodium 中部署 Continue。首先,启动 IDE 并打开扩展管理面板,搜索并安装 Continue。
几秒钟后,Continue 的初始设置向导启动,你可以选择是在本地托管模型还是使用另一个提供商的 API。
在这个例子中,我们将通过 Ollama 在本地托管我们的模型,因此,我们将选择“Local models(本地模型)”。该配置使 Continue 可以使用下列开箱即用的模型。稍后,我们会讨论如何将这些模型更换为其他选项,但现在,我们先从这些模型开始:
-
Llama 3 8B: 来自 Meta 的通用 LLM,用于注释、优化和 / 或重构代码。要了解关于 Llama 3 的更多信息,请阅读 我们的发布日报道。
-
Nomic-embed-text: 用于在本地索引代码库的嵌入式模型,使你能够在给集成聊天机器人提示时引用代码库。
-
Starcoder2:3B: 这是 BigCode 的一个代码生成模型,为 Continue 的 Tab 自动补全功能提供支持。
如果因为某种原因,Continue 跳过了启动向导,不要担心,你可以在终端运行以下命令,使用 Ollama 手动拉取这些模型:
ollama pull llama3``ollama pull nomic-embed-text``ollama pull starcoder2:3b
有关使用 Ollama 设置和部署模型的更多信息,请查看我们的 快速入门指南。
遥测警告
在继续之前,需要提醒一下,在默认情况下,Continue 会收集匿名遥测数据,包括:
-
是否接受或拒绝建议(不包括代码或提示);
-
使用的模型名称和命令;
-
生成的令牌数量;
-
操作系统和 IDE 的名称;
-
访问量。
如果你不想自己的数据被收集的话,则可以修改主目录下的.continue
文件,或者取消 VS Code 设置中的“Continue: Telemetry Enabled”复选框。
要进一步了解 Continue 的数据收集政策,可以查看 这里。
请求就会有结果。有效吗?
那是另外一回事了
安装完成后,我们可以开始深入研究将 Continue 集成到工作流中的各种方法了。第一种方法可以说显而易见:从零开始生成代码片段。
例如,如果你想为一个项目生成一个基本的网页,只需按下键盘上的Ctrl-I
或Command-I
,然后在操作栏中输入提示。
在这里,我们的提示是“Generate a simple landing page in HTML with inline CSS(使用 HTML 生成一个包含内联 CSS 的简单登录页)”。提交提示后,Continue 将加载相关模型(这可能需要几秒钟,取决于你的硬件),然后它会向我们提供一个代码片段,我们可以选择接受或拒绝。
在 Continue 中生成的代码将以绿色代码块的形式出现在 VS Code 中,你可以接受或拒绝。
重写你的代码
Continue 还可以用于重构、注释、优化或编辑现有代码。
例如,假设你有一个用于在 PyTorch 中运行 LLM 的 Python 脚本,你想重构它然后在 Apple Silicon Mac 上运行。首先,选择需要重构的文档,按下键盘上的Ctrl-I
并给助手输入提示。
几秒钟后,Continue 会传出模型的建议——新生成代码用绿色高亮显示,而需要删除的代码则用红色标记。
除了重构现有代码外,该功能还可用于事后生成注释和 / 或文档字符串。这些功能可以在右键菜单中的“Continue”下找到。
Tab 自动补全
虽然代码生成对于快速实现模型进行概念验证或重构现有代码很有用,但根据所使用的模型的不同,仍然可能存在一些偶然性。
任何曾经要求 ChatGPT 生成代码块的人都知道,有时它会产生幻觉包或函数。这些幻觉相当明显,因为糟糕的代码往往会导致令人印象深刻的失败。但是,正如我们之前 讨论 过的那样,如果频繁提供这样的幻觉包,可能会造成安全威胁。
如果不需要 AI 模型为你编写代码,那么 Continue 还支持代码补全功能。这让你可以更好地控制模型进行或不进行哪些编辑或更改。
这个功能的工作方式有点像终端中的 Tab 补全。当你进行输入时,Continue 会自动将你的代码输入到一个模型中——比如 Starcoder2 或 Codestral——并提供补全字符串或函数的建议。
建议显示为灰色,并且会随着你每次敲击键盘而更新。如果 Continue 猜测正确,那么你可以按下键盘上的Tab
键来接受建议。
与代码库对话
除了代码生成和预测之外,Continue 还提供了一个集成聊天机器人。该机器人具有 RAG 风格的功能。要了解更多关于 RAG 的信息,可以在 这里 查看我们的实践指南,但在 Continue 中,它综合运用 Llama 38b 和 nomic-embed-text 嵌入式模型来实现代码库可搜索。
Continue 提供了一个集成聊天机器人,它可以接入你选择的 LLM。
诚然,这个功能存在一些不确定性,但下面这几个例子可以说明如何使用它来提高工作流效率:
-
输入
@docs
,然后输入你的应用程序或服务的名称—— 例如Docker
,最后输入你的请求。 -
要查询关于工作目录的信息,输入
@codebase
,然后输入你的请求。 -
将文件或文档加入模型的上下文:输入
@files
,然后选择你想要添加到下拉选项中的文件。 -
按
Ctrl-L
将你在编辑器中选中的代码添加到聊天机器人。 -
按
Ctrl-Shift-R
将来自 VS Code 终端模拟器的错误信息直接发送给聊天机器人进行诊断。
更换模型
在实践中,Continue 的可靠性实际上取决于你选用的模型,因为这个插件本身实际上更像是一个将 LLM 和代码模型集成到 IDE 中的框架。虽然它定义了用户如何与这些模型交互,但它无法控制所生成代码的实际质量。
好消息是,Continue 没有与任何一种模式或技术绑定。正如我们前面提到的,它可以接入各种 LLM 运行程序和 API。如果有新发布的模型针对你的首选编程语言进行了优化,那么除了硬件之外,没有什么可以阻止你使用它。
由于我们使用 Ollama 作为模型服务器,所以在大多数情况下,更换模型是一项相对比较简单的任务。例如,如果你想把 Llama 3 换成谷歌的 Gemma 29b,把 Starcoder2 换成 Codestral,则可以运行以下命令:
ollama pull gemma2``ollama pull codestral
注意:Codestral 有 220 亿个参数和 32000 个令牌的上下文窗口,即使精度量化到 4 位,在本地运行的话,也是一个相当庞大的模型。如果遇到了程序崩溃的问题,那么你可能会想试一下小一点的东西,比如 DeepSeek Coder 的 1B 或 7B 变体。
要更换用于聊天机器人和代码生成器的模型,你可以在 Continue 的选择菜单中选择它。或者,你可以使用Ctrl-'
循环遍历下载好的模型。
更改 Tab 自动补全功能使用的模型有点麻烦,需要修改插件的配置文件。
拉取选择的模型后 [1],点击 Continue 侧边栏右下角的齿轮图标 [2],修改“tabAutocompleteModel”小节下的“title”和“model”条目 [3]。如果你使用的是 Codestral,那么这一部分配置应该是这样的:
`"tabAutocompleteModel": {` `"title": "codestral",` `"provider": "ollama",` `"model": "codestral"` `},`
自定义编码模型调优
默认情况下,Continue 会自动收集有关你如何构建软件的数据。这些数据可用于根据你的特定风格和工作流进行自定义模型调优。
需要说明的是,这些数据存储在本地主目录下的.continue/dev_data
文件夹下。而且,据我们所知,默认情况下,这些数据并没有包含在 Continue 收集的遥测数据中。不过,如果你还是担心的话,建议你把它关掉。
大型语言模型调优的具体内容超出了本文的范围,但你可以读下这篇文章,从中了解 Continue 收集了哪类数据以及如何利用这些数据。
我们希望可以在未来的实践中进一步探索调优过程,所以请务必在评论区分享你对本地 AI 工具(如 Continue)的看法以及你希望我们下一步做何种尝试。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。