17611538698
webmaster@21cto.com

开发者智能编码助手精选

人工智能 0 759 2024-02-21 12:19:08

图片

导读:在人工智能工具不断发展的格局中,软件开发助手已经为自己赢得了一席之地,尤其是在软件和编码领域。


这篇文章为大家报告了四种领先的大型语言模型的实验结果。

OpenAI 的 GPT-4、Meta CodeLlama70B、Meta CodeLlama7B和Mistral Mixtral8x7B的任务是进行编码挑战,以评估哪一个在编码助手中占据主导地位。目的是评估他们的能力,并辨别哪种大模型对编码任务最有利。

对于GPT-4,这里选择了GTP-4 Turbo的最后一个版本(gpt-4-0125-preview),因为它纠正了其前身的一些“惰性”。

测试设置


此次比较是在 Visual Studio Code 中设置的,并通过“Continue”插件进行了增强,允许与每个 LLM 直接交互。

图片

此设置反映了 GitHub Copilot 和 AWS Codewhisperer 等其它编码助手的功能,并为你的代码提供了更多的隐私控制(例如通过在私有服务器上运行 LLM)以及切换到最佳(或更便宜)的 LLM 的选项手头的任务。

我的设置如下图所示:

图片

请大家注意,右端是我刚刚从 CodeLlama70B 得到的答案。

测试


LLM在编码的八个关键领域进行了评估:

  • 代码生成它们根据需求从头开始制作代码片段或完整模块的能力。

  • 代码解释和文档:它们阐明现有代码和创建有意义的文档的能力。

  • 单元测试生成:他们能够为现有代码自主生成单元测试。

  • 调试和错误纠正:识别、解释和纠正代码缺陷或错误的效率。

  • 重构/优化建议:LLM提出和实施代码改进以提高质量和性能的能力。

  • 代码审查协助:LLM能够通过发现潜在问题并提出改进建议来协助代码审查。

  • 安全和最佳实践:熟练检测安全漏洞和执行最佳实践。

  • 需求分析:以自然语言理解软件需求并将其转化为技术规范的能力。虽然这不完全是“编码”,但它与此密切相关,因为可能需要进一步细化不明确的需求或以某种方式转换它们(例如,编程语言进一步编码的有限状态机) 。


每个LLM的表现都按照0到3的等级进行评分,每个领域进行了多次测试,总共19次,以确保同一领域任务之间的公平竞争。

在整个测试过程中,系统提示一直保持非常简单:它只是将LLM的角色设置为编码助手,并指示其简洁明了(避免在冗长且可能无用的解释中使用太多标签 )。

这样做是为了评估LLM的原生能力,并为通过特定系统提示进一步提高其能力,以提供更多的可能性。

数据结果


以下是几个编码助手的测试摘要:

图片

  • 毫不奇怪, GPT-4成为总体胜利者,在所有任务中提供了最准确、最全面的帮助。

  • CodeLlama70B和Mixtral8x7B是势均力敌的对手,在某些特定领域与 GPT-4 不相上下。

  • CodeLlama7B尽管排名最后,但在某些任务中显示出潜力,表明量身定制的提示可以提高其性能。它的吸引力在于其体积小,这使得它可以在消费级硬件上运行。


以下是每个编程类别的结果:

图片

一些任务示例


我们可以在Github(https://github.com/rdentato/compare_coding_AI)上找到用于此测试的任务的完整列表,以及每个 LLM 的提示和输出。请注意,我会不时用新的测试和可能的新LLM来更新它。


以下是测试中使用任务的几个示例。

  • FEN 计数(https://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation):此任务测试模型对棋盘位置的 FEN 字符串的了解。虽然所有LLM都对 FEN 有所了解,但只有 GPT-4 能够生成完全准确的代码。这可能是拥有更多“不相关知识”可以带来更好性能的情况之一

  • 指南合规性:令人惊讶的是,没有一个LLM检测到与一组编码风格指南的所有偏差,这揭示了一个需要做更多工作以确大模型可以提供帮助的领域。可能需要更好的提示,甚至使用 RAG 方法来确保它完全“理解”正确的指导方针。

  • 歧义分析:有时需求会相互冲突,可能会产生混乱、返工或错误。这项具体任务旨在检查大模型是否能够识别冲突或重叠的要求。有趣的是,Mixtral8x7B在这项任务上最终比CodeLlama70B更好。


结论


以上这些大模型设置以及个人编码助理可以减轻对基于云的解决方案常见的数据和代码隐私问题的担忧。


此外,还需要考虑成本因素,例如托管自己的 LLM 的成本、GPT-4 每个代币成本较高的好处(与其他云 API 解决方案相比)等等。


总之,虽然 GPT-4 因其全面支持而脱颖而出,但较小的模型可能会根据用户的具体需求提供可行的替代方案。


用于此评估的测试旨在涵盖广泛的任务领域,并了解不同大模型的表现。将它们作为第一步,并根据你的用例进行特定测试,以做出明智的选择。


有一点是肯定的:无论谁都要使用人工智能助手进行编码,如果没有,都需要尽快这样做,以避免被人抛在后面。


现在是时候确定哪些任务应该从使用人工智能助手进行编码中受益以及受益程度如何了。


小奖品


在准备这篇文章期间,Google 推出了新的 LLM Gemini Advance,与上一版本 Google Bard 相比有了显着改进。


我们将它与 GPT-4 的 8 个类别进行了比较,还需要进一步的测试,以下是 Gemini Advanced 相对于 GPT-4 整体得分的初步视图:


图片

以及细分的八个领域:

图片

可以看到,两个LLM的分值非常接近!显然,谷歌的新的模型是“最佳大模型”桂冠的有力竞争者。

作者:万能的大雄

参考:

https://dev.to/rdentato/choose-your-own-coding-assistant-11gi

评论