TurboPilot

AI 代码补全引擎
授权协议 BSD 3.0
开发语言 Python
所属分类 程序开发、 代码生成工具
软件类型 开源软件
地区 不详
投 递 者 乐正翰
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Turbopilot 是一个开源的基于大型语言模型的代码完成引擎,在 CPU 上本地运行。

具体来说,TurboPilot 是一个自托管的 GitHub copilot 克隆,它使用 llama.cpp 背后的库在 4GiB 的 RAM 中运行 60 亿参数的 Salesforce Codegen 模型。它很大程度上基于 fauxpilot 项目并受到其启发。

注意:项目处于概念验证阶段,而不是稳定的工具。在这个版本的项目中,自动补全功能非常慢。

开始

尝试该项目的最简单方法是获取预处理模型,然后在 docker 中运行服务器。

获取模型

有 2 个选项来获取模型

选项 A:直接下载 - 简单、快速入门

可以从 Google Drive 下载预转换、预量化的模型。项目组制作了具有 350M、2B 和 6B 参数的 multi 风味模型 - 这些模型在 C  C++  Go  Java  JavaScript  Python 上进行了预训练

选项 B:自己转换模型 - 困难,更灵活

如果想自己尝试量化模型,请遵循本指南

运行 TurboPilot 服务器

下载最新的二进制文件并将其解压缩到根项目文件夹。

运行

./codegen-serve -m ./models/codegen-6B-multi-ggml-4bit-quant.bin

应用程序应在端口 18080 上启动服务器

如果你有一个多核系统,可以通过 -t 选项控制使用多少个 CPU

./codegen-serve -t 6 -m ./models/codegen-6B-multi-ggml-4bit-quant.bin

从 Docker 运行

可以从此处提供的预构建 docker 镜像运行 Turbopilot

仍然需要单独下载模型,然后您可以运行:

docker run --rm -it \
  -v ./models:/models \
  -e THREADS=6 \
  -e MODEL="/models/codegen-2B-multi-ggml-4bit-quant.bin" \
  -p 18080:18080 \
  ghcr.io/ravenscroftj/turbopilot:latest

仍然需要单独下载模型,然后运行:

docker run --rm -it \
  -v ./models:/models \
  -e THREADS=6 \
  -e MODEL="/models/codegen-2B-multi-ggml-4bit-quant.bin" \
  -p 18080:18080 \
  ghcr.io/ravenscroftj/turbopilot:latest

使用 API

将 API 与 FauxPilot 插件一起使用

要从 VSCode 使用 API,推荐 vscode-fauxpilot 插件。安装后,您需要更改 settings.json 文件中的一些设置。

  • 打开设置(CTRL/CMD + SHIFT + P)并选择 Preferences: Open User Settings (JSON)
  • 添加以下值:
{
    ... // other settings

    "fauxpilot.enabled": true,
    "fauxpilot.server": "http://localhost:18080/v1/engines",
}

可以使用 CTRL + SHIFT + P 启用fauxpilot 并选择 Enable Fauxpilot

进行补全时,该插件会将 API 调用发送到正在运行的 codegen-serve 进程。然后它将等待每个请求完成,然后再发送进一步的请求。

直接调用API

可以向 http://localhost:18080/v1/engines/codegen/completions 发出请求,它的行为就像同一个 Copilot 端点一样。

例如:

curl --request POST \
  --url http://localhost:18080/v1/engines/codegen/completions \
  --header 'Content-Type: application/json' \
  --data '{
 "model": "codegen",
 "prompt": "def main():",
 "max_tokens": 100
}'

已知的限制

从 v0.0.2 开始:

  • 这些模型可能非常慢——尤其是 6B 模型。跨 4 个 CPU 内核提出建议可能需要大约 30-40 秒。
  • 只在 Ubuntu 22.04 上测试过系统,但现在提供 ARM docker 图像,很快将提供 ARM 二进制版本。
  • 有时补全建议会在无意义的地方被截断——例如通过变量名或字符串名的一部分。这是由于上下文长度(提示 + 建议)的硬限制为 2048。
 相关资料
  • 当弹出代码补全提示时,可以鼠标|Enter|Tab|!\/.|;进行补全,但这几种补全方法功能是不一样的。 补全后不会删除后面的代码 操作步骤: 弹出代码补全提示—> 光标选中补全代码—> 鼠标\/Enter 补全后删除后面的代码 操作步骤: 弹出代码补全提示—> 光标选中补全代码—>Tab 布尔值取反补全 操作步骤: 弹出布尔值代码补全提示—> 光标选中补全代码(是弹出代码提示时候的选择)—>

  • 使用 PyCharm 3.0.1 社区,代码完成工作正常,但是当我例如将方法编译到父类之一时,插入的方法名称就会被标记为未解析的引用。我错过了什么? 详: 我是PyCharm的新手,并在(统一安装的)Plone 4.3.2上对其进行测试。安装中的解释器是自动选择的,我为构建添加了z实例/bin/zopepy脚本。 然后我打开Products.CMFPlone-4.3.2-py2.7.egg/Pro

  • 本文向大家介绍jupyter notebook 写代码自动补全的实现,包括了jupyter notebook 写代码自动补全的实现的使用技巧和注意事项,需要的朋友参考一下 操作步骤 进入命令行环境。我使用的是conda。有两种方式进入命令行。 方法1:通过anconda navigator界面,选择environments,选择对应环境名,选择open terminal 方法2:直接使用cmd或者

  • 问题内容: 我想在Linux终端中编写自动完成代码。该代码应按以下方式工作。 它具有字符串列表(例如,“ hello”,“ hi”,“你好”,“再见”,“很棒”等)。 在终端中,用户将开始输入内容,当有匹配的可能性时,他会提示可能的字符串,供他选择(类似于vim编辑器或google增量搜索)。 例如,他开始输入“ h”,他得到提示 你好” _ “一世” _“你好吗” 更好的是,它不仅可以从字符串的

  • 本文向大家介绍Android Studio 设置代码提示和代码自动补全快捷键方式,包括了Android Studio 设置代码提示和代码自动补全快捷键方式的使用技巧和注意事项,需要的朋友参考一下 想必使用过Eclipse的小伙伴们都习惯Eclipse快捷键带来的方便,但是当我们使用Android studio来进行开发的时候也想要这种方便该怎么办呢,当然使用过Android studio的小伙伴可

  • 换了电脑,Macbook air M1 安装 Visual Studio Code - Insiders 版,结果代码补全不显示文字了。

  • 如果你仍旧希望节约一些打字时间,Atom自带简单的自动补全功能。 通过使用ctrl-space,自动补全工具可以让你看到并插入可选的完整单词。 通常,自动补全工具会浏览当前打开的整个文档,寻找匹配你开始打出来的单词。 如果你想要更多选项,在设置面板的Autocomplete包中,你可以设置为在所有你打开的缓冲区中寻找字符串,而不仅仅是当前文件。 自动补全功能在atom/autocomplete包中

  • <Ctrl+n> 下一个匹配项 <Ctrl+p> 上一个匹配项 您可以在配置文件中定义补全的方式 "自动补全方式:(使用逗号分隔) set complete=k,. " . 当前文件 " b 已被装缓冲区,但是没有在窗口内的文件 " d 在当前的文件中定义和由 #include 包含进来的文件 " i 由 #include 包含进来的文件 " k