英文网站公司,广西住房和城乡建设厅网站主页,杭州有哪些做网站的公司,做智能网站系统下载Copilot从诞生到现在过去了挺长时间了#xff0c;大家对Copilot的评价算是褒贬不一吧。有些人觉得Copilot高效且神奇#xff0c;可以对自己的工作大大提效#xff1b;有些觉得也就那样#xff0c;为什么要花那么多钱做这个事情#xff0c;钱它不香吗#xff1f;
从最开始…Copilot从诞生到现在过去了挺长时间了大家对Copilot的评价算是褒贬不一吧。有些人觉得Copilot高效且神奇可以对自己的工作大大提效有些觉得也就那样为什么要花那么多钱做这个事情钱它不香吗
从最开始未收费的时候我就有使用Copilot当我开始使用Copilot时我有些失望和不屑因为我没有收到预期的结果。就像任何新兴技术一样总有一条学习曲线。因此当copilot不能生成我们想要的输出时我们肯定会产生不信任的感觉。举个例子我让Copilot来帮我解决leetcode的问题(因为Copilot的训练机制很多leetcode的题目已经被它训练到了例如:两数之和、二叉树翻转等等这些题目不好作为参考)它总是不能给我一个答案而且可能会差很多。
来到算法题吧
前提不能使用已有旧题目因为可能该题目在copilot的训练集中。我使用的测试题目是leetcode的周赛题目直接使用此题目做实验。从讨论和题解可以看出这个题目很新对于copilot来说是未知的一个题目。 测试1直将题目给Copilot来做生成的代码是不对的是不符合要求的。 测试2我通过demo的方式给出输入和输出结果它会增加处理但是最终的结果还是不对的。 测试3我将如何处理的思路给出可以得到通过的结果。 通过以上的例子我想说明的是合理的Prompt会拿到想要结果的前提所以有些时候我们对结果的不满意可能是使用上有些不合理合理的Prompt才是得到结果的关键。 Copilot是什么
Copilot的核心是一个基于GPT-3的大规模预训练模型它可以通过大量的代码片段进行训练从而学习到代码的语法、语义、结构等信息然后在编写代码时根据上下文生成代码片段从而提供代码建议。
建议阅读: https://arxiv.org/pdf/2107.03374.pdf.
以vscode为例Copilot编辑器扩展将评论和代码发送到Copilot服务然后该服务使用OpenAI Codex来合成和建议代码。使用Copilot我们所要做的就是编写一个函数名然后查看生产的结果中间需要我们对结果进行判断和调试。 合理的Prompt engineering
其实Prompt engineering对于Copilot、ChatGPT等人工智能同样都是很关键的下面介绍一下如何合理的prompt来让Copilot更符合我们的需求
使用高级任务描述来描述
使用文字描述清楚你需要做什么事情。常见于比如文件的开头或者方法的开头描述这个文件主要在做什么事情。例如 用示例来引导
使用demo的示例来引导copilot来完成你想做的事情可以参考leetcode提供的示例如果可以的话可以提供尽可能多的示例示例越多拿到的结果越好。
如果是使用的第三方库可以将如何使用的例子贴出来copilot可以帮你完成相应的工作。从例子中学习不仅对人类有用对人工智能配对程序员也有用。 用上下文信息指导
copilot会阅读你上下文的信息例如你在该方法中都是处理sql或者日期的方法copilot会推测你需要的相关方法和代码。
分步处理prompt简单而具体
如果你想将一个主要目标传递给Copilot那就要阐明实现该目标所需要的逻辑和步骤。就比如菜谱如果你的目标是做一道西红柿炒蛋。你就要分步骤去执行 将西红柿洗净后切成块鸡蛋打入碗中搅拌均匀。 在锅中加油油热后将打好的鸡蛋倒入锅中翻炒待其凝固并呈金黄色时即可捞出备用。 锅中再加一些油放入切好的西红柿块进行翻炒然后加盖憩一会儿。 待西红柿变软之后可以按自己口味添加一些盐、料酒和糖来调味。 最后将之前准备好的炒过的蛋倒回锅中与西红柿混合均匀并撒上少许葱花就可以出锅了。
使用Copilot同样如此Copilot在分解事物时能更好地理解你的目标。让GitHub Copilot在每一步之后生成代码而不是要求它一次生成一堆代码。
例如在刚刚leetcode题目中给出的解题步骤。
保熟黑科技
多次实验Prompt的技巧
说话是一门艺术同样Prompt也是一门艺术是需要练习和实践的。因此如果你第一次尝试时没有收到你想要的东西请按照上面的最佳实践重新开始提示。
例如你写个注释
// 随便写一点代码吧
copilot指定懵逼它根本不知道你要做什么。这时候需要更换个思路给它一个明确的提示
// 随便写一点代码吧关于二叉树的前序遍历
编辑器打开几个相关的Tabs
Copilot使用了一种称为相邻选项卡的技术允许AI对程序员通过处理IDE中打开的所有文件而不仅仅是你正在处理的单个文件来将你的代码上下文化。但是不能保证Copilot会将所有打开的文件视为你代码的必要上下文。
备注真的很好用talk is cheap, show me the code。
还是第一个leetcode的例子在我没有打开test.js的文件时Copilot给出的是第一个方案在我打开test.js这个文件后Copilot会读取相邻文件的上下文来做提示真的很好使。 良好的编程习惯 保持自己良好的编程习惯Copilot会根据你的代码风格生产相关代码。如果你一直使用驼峰式命名变量Copilot 将建议驼峰式命名变量。 运行单元测试、集成测试和任何其他形式的测试代码 保持良好的codereview习惯 Copilot Chat
Copilot Chat 是一个基于 OpenAI GPT 模型的聊天机器人它可以与用户进行自然语言交互并根据用户的输入提供相应的回复。Copilot Chat 可以用于各种场景可以帮助用户解决各种问题提高工作效率。
主要功能有 /explain 解释代码 /ext 询问VS代码扩展开发 /fix 为所选代码中的问题提出修复方案。 /help GitHub Copilot 帮助 /simplify 简化选中的代码 /tests 为选中的代码生成单元测试 /vscode 询问关于 VS Code 的问题 /clear 清空当前对话
主要介绍我经常使用的功能
解释代码
接别人的代码永远是不可避免的阅读代码又是一个比较耗时的过程通过Copilot chat帮你阅读很高效。选中文件中的代码直接在对话框询问即可方便高效 询问问题
copilot chat可以理解为帮我们prompt好的一个专门用于编程的助手在ChatGTP关于编程方便的内容可以直接询问Copilot这样减少了跳入跳出同时可以高效的解决问题。 优化代码
这个是我很喜欢的一个功能可以结合代码检测工具很好的用来优化代码此处内容可以参考之前的文章
代码质量规范测量_sonarqube圈复杂度-CSDN博客