[翻译] 编辑器内的一个完全开源的 AI 代码助手
这篇文章翻译自Ollama的博客文章，而文章内容则也是转载，最原始的文章没找到，因此就直接翻译了转载。文章主要讲通过在 VS Code 或者 JetBrains 中使用 Continue 插件，并配合 Ollama 本地运行的大语言模型，实现在编辑器内使用的 AI 代码助手。主要内容包括1）代码自动补全和聊天、使用嵌入模型实现 @codebase 的 RAG 功能、微调模型并推送 Ollama 以及使用 @docs 功能引用网络内容注意：文章发表于2024年5月31日，翻译该文的时候 Ollama 和 Continue 以及文章中引用的相关大模型都有不少升级。建议参考文章思路进行有益的尝试。这是 Continue 联合创始人 Ty Dunn 的一篇客座文章，介绍了如何设置、探索以及找出将 Continue 与 Ollama 结合使用的最佳方法。Continue 可让您使用开源 LLM 直接在 Visual Studio Code 和 JetBrains 中轻松创建自己的编码助手。所有这些都可以完全在您自己的笔记本电脑上运行，也可以将 Ollama 部署在服务器上，以根据您的需求远程支持代码完成和聊天体验。您需要安装下列软件以能够继续配置：Continue 的 VS Code 版本或 JetBrains 版本macOS、Linux 或 Windows 上的 Ollama一旦您下载并安装好 Continue 和 Ollama，我们建议您探索以下内容：(上面的链接包含安装配置教程，可以参考教程安装，未来可能会有专门文章详细介绍，本文仅限原文翻译)尝试 Mistral AI 的 Codestral 22B 模型进行自动完成和聊天到目前为止，Codestral 是我们目前最喜欢的模型，它既能自动完成，又能聊天。该模型展示了 LLM 在编程任务方面的改进。但是，由于它有 22B 参数和非生产许可证，因此需要相当多的 VRAM，只能用于研究和测试目的，因此它可能不是日常本地使用的最佳选择。在终端中下载并运行 Codestral 模型：ollama run codestral进入 VS Code，点击 Continue 右下角的齿轮图标打开你的 config.json 并添加{ "models": [ { "title": "Codestral", "provider": "ollama", "model": "codestral" } ], "tabAutocompleteModel": { "title": "Codestral", "provider": "ollama", "model": "codestral" } }使用 DeepSeek Coder 6.7B 进行自动完成，使用 Llama 3 8B 进行聊天根据您机器上的 VRAM 容量，您可能能够利用 Ollama 运行多个模型和处理多个并发请求的能力，方法是使用 DeepSeek Coder 6.7B 进行自动完成，使用 Llama 3 8B 进行聊天。如果您的机器无法同时处理这两者，请分别尝试，然后决定您是喜欢本地自动完成还是本地聊天体验。然后，您可以使用远程托管或 SaaS 模型来获得另一种体验。在终端中下载并运行 DeepSeek Coder 6.7B，运行方式如下：ollama run deepseek-coder:6.7b-base在另一个终端窗口中下载并运行 Llama 3 8B，运行:ollama run llama3:8b进入 VS Code，点击 Continue 右下角的齿轮图标打开你的 config.json 并添加:{ "models": [ { "title": "Llama 3 8B", "provider": "ollama", "model": "llama3:8b" } ], "tabAutocompleteModel": { "title": "DeepSeek Coder 6.7B", "provider": "ollama", "model": "deepseek-coder:6.7b-base" } }使用 nomic-embed-text 嵌入和 Ollama 为 @codebase 提供支持Continue 内置了 @codebase 上下文提供程序，可让您自动从代码库中检索最相关的代码片段。假设您已经设置了聊天模型（例如 Codestral、Llama 3），那么您可以通过 Ollama 和 LanceDB 的嵌入将整个体验保持在本地。截至目前，我们建议使用 nomic-embed-text 嵌入。通过运行下面命令，在终端中下载 nomic-embed-text：ollama pull nomic-embed-text进入 VS Code，点击 Continue 右下角的齿轮图标打开你的 config.json 并添加:{ "embeddingsProvider": { "provider": "ollama", "model": "nomic-embed-text" } }根据代码库的大小，可能需要一些时间进行索引，然后您可以提出问题，重要的代码库部分会自动被找到并在答案中使用（例如“@codebase Llama 3 的默认上下文长度是多少？”）根据您的开发数据对 StarCoder 2 进行微调并将其推送到 Ollama 模型库使用 Continue 时，您会自动生成有关如何构建软件的数据。默认情况下，此开发数据会保存到本地计算机上的 .continue/dev_data。当与您最终提交的代码结合时，它可用于改进您或您的团队使用的 LLM（如果您允许）。例如，您可以使用团队接受的自动完成建议来微调 StarCoder 2 等模型，以便为您提供更好的建议。将“已接受的标签建议”提取并加载到 Hugging Face 数据集中使用 Hugging Face 监督微调训练器对 StarCoder 2 进行微调将模型推送到 Ollama 模型库，供您的团队使用并衡量您的接受率如何变化通过使用 @docs 在 Continue 的帮助下提问，了解有关 Ollama 的更多信息Continue 还内置了 @docs 上下文提供程序，可让您索引和检索来自任何文档站点的片段。假设您已经设置了聊天模型（例如 Codestral、Llama 3），您可以通过提供 GitHub 上的 Ollama README 链接并提出问题以了解更多信息，从而将整个体验保持在本地。在聊天侧栏中输入 @docs，选择“添加文档”，将“https://github.com/ollama/ollama”复制并粘贴到 URL 字段中，然后在标题字段中输入“Ollama”它应该可以快速索引 Ollama README，然后您可以向它提问，它会自动找到重要部分并将其用于答案中（例如“@Ollama 我如何运行 Llama 3？”）
利用Cloudflare和Docker仓库镜像代理工具（GitHub）解决无法连接Dokcer Hub问题
由于众所周不知的原因，docker hub已经不能从国内正常访问。这时我们可以通过访问正常访问的docker hub镜像网站，实现正常拉取镜像。本文介绍如何通过在Cloudflare中部署一个镜像页面，并合理配置服务器或者Windows/MacOS中的Docker引擎，实现曲线救国。一、前提一个github账号（github : https://github.com）一个Cloudflare 账号（cloudflare : https://cloudflare.com）二、GitHub CF-Workers-docker.io 项目CF-Workers-docker.io 是一个 Docker 仓库镜像代理工具。官方描述为：这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求，解决一些访问限制和加速访问的问题。仓库地址 https://github.com/cmliu/CF-Workers-docker.io 仓库说明中也包含了其他已经部署的镜像，如果不想自己部署Cloudflare，也可以直接跳过第三部分，直接拿来进入第四部分的配置进行操作。注册登陆GitHub并进入该仓库后，Fork到自己的仓库。三、在Cloudflare部署代理工具登录Cloudflare点击 Worker和Pages 再点 概述（Overview） 再点 新建（Create）新界面中切换到 Pages 页签，点击 连接到Git(Connect to Git)选择 GitHub 页签，并选择自己的github账户。注意：如果之前没有关联，可能需要通过添加账户(Add Account)先行添加。之后在下方选择之前fork到自己仓库的项目，名称应该为 CF-Workers-docker.io，最后点击右下角的开始设置(Begin Setup)按钮。确认页面不用修改，直接点击保存并部署(Save and Deploy)，等待部署完成。点击继续处理项目(Continue to Process Project)最后得到一个域名,类似cf-workers-docker-io-xxx.pages.dev。点击页面右上角的访问(Visit)，打开就是docker hub的搜索页面。四、设置docker守护进程配置中的 registry-mirrors 属性原理：通过设置docker守护进程配置docker-daemon.json文件中的registry-mirrors顶级属性，可以让Docker直接访问docker hub的镜像站点。与Ubuntu的镜像软件中心、Node.js npm的源地址、Python pipy的源地址等是一个道理。注意：编辑docker-daemon.json文件时，务必遵守JSON格式规则，否则会引起Docker崩溃。Linxu 服务器上使用代理使用ssh或者类似工具登陆服务器。修改 /etc/docker/daemon.json 文件，（如果没有则直接新建），添加registry-mirrors 顶级属性"registry-mirrors" : [ "https://刚刚得到的域名" ]。最后看起来应该类似：{ "registry-mirrors" : [ "https://cf-workers-docker-xxx.pages.dev" ] }重启docker服务（通过systemctl restart docker.service或者直接重启服务器），之后便可以使用MacOS 或 Windows 中使用代理MacOS 或 Windows 一般都使用Docker Desktop管理Docker，可以非常方便的配置Docker引擎打开docker desktop，依次点击右上角⚙️（齿轮），设置界面中的Docker Engine， 并在左侧的json文本编辑器中添加registry-mirrors 顶级属性"registry-mirrors" : [ "https://刚刚得到的域名" ]。最后看起来类似：{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "debug": true, "experimental": false, "registry-mirrors" : [ "https://cf-workers-docker-xxx.pages.dev" ] }点击右下角 应用并重启(Apply and Restart) 之后便可以使用代理拉取镜像！延伸：更多的容器仓库需要镜像/代理怎么办？使用国内开源镜像加速服务比如南京大学镜像 官网｜南京大学开源镜像 GHCR还是使用Cloudflare Worker进行路由转发：可以使用GitHub上的cloudflare-docker-proxy这个项目来实现对 docker hub, gcr.io, ghcr.io, k8s.gcr.io, quay.io 等容器仓库的代理和流量转发。具体可以参考其主页文档。