在本文中,我们将对比 OpenAI Codex、GitHub Copilot 和cheat.sh 的智能感知和代码建议。

OpenAI Codex简单的集成

OpenAI Codex 是 OpenAI 开发的一个人工智能模型,可以解析自然语言并生成响应代码。因为没有提供插件,所以测试的时候需要我们自己调用他的API,这里为了方便,编写一个简单的Neovim Lua 模块来进行集成。

local Job = require "plenary.job"local M = {}local API_KEY_FILE = vim.env.HOME .. "/.config/openai-codex/env"
local OPENAI_URL = "https://api.openai.com/v1/engines/davinci-codex/completions"
-- local OPENAI_URL = "https://api.openai.com/v1/engines/cushman-codex/completions"
local MAX_TOKENS = 300local function get_api_key()local file = io.open(API_KEY_FILE, "rb")if not file thenreturn nilendlocal content = file:read "*a"content = string.gsub(content, "^%s*(.-)%s*$", "%1") -- strip off any space or newlinefile:close()return content
endlocal function trim(s)return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
endfunction M.complete(v)v = v or truelocal ft = vim.bo.filetypelocal buf = vim.api.nvim_get_current_buf()local api_key = get_api_key()if api_key == nil thenvim.notify "OpenAI API key not found"returnendlocal text = ""if v thenlocal line1 = vim.api.nvim_buf_get_mark(0, "<")[1]local line2 = vim.api.nvim_buf_get_mark(0, ">")[1]text = vim.api.nvim_buf_get_lines(buf, line1 - 1, line2, false)text = trim(table.concat(text, "\n"))elsetext = trim(vim.api.nvim_get_current_line())endlocal cs = vim.bo.commentstringtext = string.format(cs .. "\n%s", ft, text)-- vim.notify(text)local request = {}request["max_tokens"] = MAX_TOKENSrequest["top_p"] = 1request["temperature"] = 0request["frequency_penalty"] = 0request["presence_penalty"] = 0request["prompt"] = textlocal body = vim.fn.json_encode(request)local completion = ""local job = Job:new {command = "curl",args = {OPENAI_URL,"-H","Content-Type: application/json","-H",string.format("Authorization: Bearer %s", api_key),"-d",body,},}local is_completed = pcall(job.sync, job, 10000)if is_completed thenlocal result = job:result()local ok, parsed = pcall(vim.json.decode, table.concat(result, ""))if not ok thenvim.notify "Failed to parse OpenAI result"returnendif parsed["choices"] ~= nil thencompletion = parsed["choices"][1]["text"]local lines = {}local delimiter = "\n"for match in (completion .. delimiter):gmatch("(.-)" .. delimiter) dotable.insert(lines, match)endvim.api.nvim_buf_set_lines(buf, -1, -1, false, lines)endend
endreturn M

要使用 OpenAI Codex,需要有 API 密钥。并在 API_KEY_FILE 指定API 密钥的文件的位置。Codex中有 2 种模型可以选择。 Davinci Codex 是功能最强大的 Codex 模型。 它特别擅长将自然语言翻译成代码。 Cushman Codex 几乎与 Davinci Codex 一样强大,但速度略快。 这种速度优势可能使其更适合实时应用程序。 我通过设置 OPENAI_URL 变量配置 Davinci Codex。

MAX_TOKENS 表示要返回的最大令牌数。 标记可以是单词或只是字符块。

有许多可以配置的参数,如 top_p、temperature、best_of、logprobs 等。这里就不详细介绍了。

现在我们开始测试python代码

"""
Ask the user for their name and say "Hello"
"""

def getUserBalance(id):
"""
Look up the user in the database ‘UserData' and return their current account balance.
"""

def sum_numbers(a, b):return a + b# Unit test
def

Javascript也是可以的

// Function 1
var fullNames = [];
for (var i = 0; i < 50; i++) {fullNames.push(names[Math.floor(Math.random() * names.length)]+ " " + lastNames[Math.floor(Math.random() * lastNames.length)]);
}// What does Function 1 do?

解释SQL语句

SELECT DISTINCT department.name
FROM department
JOIN employee ON department.id = employee.department_id
JOIN salary_payments ON employee.id = salary_payments.employee_id
WHERE salary_payments.date BETWEEN '2020-06-01' AND '2020-06-30'
GROUP BY department.name
HAVING COUNT(employee.id) > 10;
-- Explanation of the above query in human readable format

与Copilot和cheat.sh的比较

下面我们开始正式比较 Codex、Copilot 和cheat.sh 。

cheat.sh 虽然不是 AI 补全引擎,但是他的确很好用,所以这里也把他加入了进来,在这里我们把它作为非AI补全的天花板。

对于 Copilot,我将使用 VS Code,因为与 Neovim 插件相比,Copilot 扩展更加成熟。

先看看Python

我们输入

def binary_sort(input_list):"""Binary sort the input list"""

Copilot

除了默认建议外,还提供了替代建议。

Codex

cheat.sh

下面对比下Javascript

// Find out the minimum and maximum values of the input array
function process(arr) {

Copilot

Codex

cheat.sh

总结

cheat.sh正如他的名字cheatsheet一样,如果你是进行刷题的,那么他将非常的好用因为他能能够匹配到原题。

但是对于是实际开发来说,Copilot是非常好用的,因为毕竟其后面有着Github的代码库。Codex的变现也不错,总体来说AI辅助编程绝对是降低编程门槛的一大进步。 现在提出最佳编码实践可能不够聪明,但随着模型的改进,应该会变得更好。

译者注:我最近在开发中一直在使用Copilot,它甚至能够完成完整的代码,因为毕竟他背后有着Github的庞大代码库。我觉得他之所以做的这么好是因为目前我们写的代码大部分都出现在了github中(别人也写过类似的功能),其实这对于AI模型来说就是数据泄露了,模型在用训练的数据做推理所以准确性非常的高。其实把Copilot作为代码搜索模型我觉得更恰当,简单的讲就是在Github这么庞大的代码库中,它可以搜索到适用我们需求的代码,并且给我们提示或者能够给我们一些别人写代码的思路。但是无论怎样,Copilot真的很好用,推荐大家都试试。

作者:alpha2phi

OpenAI Codex,GitHub Copilot 和cheat.sh 三个代码建议工具对比相关推荐

  1. 【踩坑记录】三款Lua IDE工具对比

    1.Lua Editor 优点:支持简体中文,无需专门配置环境,图形化操作较为完善,且启动速度快,运行调试上对初学者极为友好 缺点:这个是商业闭源软件,十几年前就已在github停止更新了,启动时会出 ...

  2. 探索学习和入门使用GitHub Copilot:提升代码开发的新利器

    目录 引言 1. 什么是GitHub Copilot? 2. 入门使用GitHub Copilot 3. GitHub Copilot的基础知识 4. GitHub Copilot的应用场景 结论 在 ...

  3. AI之Tool:GitHub Copilot(一款人工智能编程小助手—猜你想写的代码)的简介、安装、使用方法之详细攻略

    AI之Tool:GitHub Copilot(一款人工智能编程小助手-猜你想写的代码)的简介.安装.使用方法之详细攻略 目录 Copilot人工智能工具的简介 1.GitHub Copilot的安全性 ...

  4. 和AI结对编程!OpenAI与GitHub联手推出AI代码生成工具,比GPT-3更强大

    作者 | 琰琰.青暮 比GPT-3更强大! 昨日,微软与OpenAI共同推出了一款AI编程工具GitHub Copilot,这款工具基于GitHub及其他网站的源代码,可根据上文提示为程序员自动编写下 ...

  5. OpenAI与GitHub联手推出AI代码生成工具,比GPT-3更强大

    来源:AI科技评论 作者:琰琰.青暮 比GPT-3更强大! 昨日,微软与OpenAI共同推出了一款AI编程工具GitHub Copilot,这款工具基于GitHub及其他网站的源代码,可根据上文提示为 ...

  6. 地表最强AI 辅助编程工具——GitHub Copilot安装教程

    GitHub Copilot 文章目录 GitHub Copilot 一.GitHub Copilot 介绍 二.GitHub Copilot 通行证注册流程 1.打开GitHub Copilot [ ...

  7. GitHub Copilot 正在“摧毁”初级开发者,已沦为编程考试作弊的神器?

    整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 自 2021 年 6 月,微软发布 AI 代码建议工具 GitHub Copilot 以来,业界关于它的争议就没有断过. 这不,继Copi ...

  8. 【AIGC使用教程】GitHub Copilot 免费注册及在 VS Code 中的安装使用

    欢迎关注[AIGC使用教程] 专栏 [AIGC使用教程]SciSpace 论文阅读神器 [AIGC使用教程]Microsoft Edge/Bing Chat 注册使用完全指南 [AIGC使用教程]Gi ...

  9. cheat.sh 在手,天下我有

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前言 作为程序员需要了解的东西有很多,日常编码和写脚本脱 ...

最新文章

  1. 【组队学习】【35期】动手学数据分析
  2. 滚动条加载功能实现(懒加载)
  3. Android开发环境搭建全程演示(jdk+eclipse+android sdk)
  4. 【人脸对齐-Landmarks】人脸对齐算法常用评价标准
  5. Android P 适配指南
  6. 想要高清壁纸,高图桌面壁纸网站值得收藏!
  7. 将CSV文件存为HTML文件形式
  8. yum下载文件的缓存位置
  9. 华为获首张 5G 终端进网许可证;Linux 之父来华;Eclipse 4.12 发布 | 极客头条
  10. 一张图学会python-一张图让你学会Python
  11. PIE SDK 坐标系创建、定义、对比
  12. 关于最近开发小程序中踩过的那些坑
  13. kubernetes PVC介绍
  14. 中国三级流域空间分布数据/国家新区分布数据/NPP净初级生产力数据/植被覆盖空间分布数据/土地利用数据/NDVI数据/植被类型分布/土壤类型数据
  15. Red Hat Enterprise Linux (RHEL) 6.3 6.4 6.5 DVD ISO 下载地址
  16. 防火墙旁挂,策略路由引流
  17. 最新版最简单SPSS 26安装详细教程
  18. 一次网易游戏测试(外包)面试
  19. 射频回波损耗、反射系数、电压驻波比、S参数的含义与关系
  20. 共有40款 地图相关开源软件

热门文章

  1. 如何定义日志消息的级别?详解日志的5个级别
  2. ExtAspNet v3.1.3
  3. 11 Confluent_Kafka权威指南 第十一章:流计算
  4. SMM 框架整合 配置文件
  5. SparkSQL比MapReduce快的原因
  6. 自己动手编写ssh登陆管理工具
  7. 这只狗子不一样,雷军大秀新宠「铁蛋」!
  8. 大一python基础编程题水果_【教程】简单教程:用Python解决简单的水果分类问题...
  9. GO WEB IRIS入门 安装iris
  10. Digg.com:投票的动力因素分析