发布于 2026-01-06 1 阅读
0

选择你自己的编码助手

选择你自己的编码助手

介绍

在不断发展的 AI 工具领域,软件开发助手已经开辟了一片属于自己的天地,尤其是在编码领域。

本文报告了对四款领先的大型语言模型进行实验的结果(文章末尾还有一位特邀嘉宾)。

OpenAI 的 GPT-4Meta CodeLlama70BMeta CodeLlama7BMistral Mixtral8x7B被赋予了编码挑战任务,以评估哪个模型最适合作为编码助手。其目的是评估它们的能力,并确定哪个语言学习模型 (LLM) 最适合各种编码任务。

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

测试设置

本次对比的战场是在 Visual Studio Code 中搭建的,并借助“Continue”插件进行了增强,从而可以与每个 LLM 进行直接交互。

Visual Studio Code 继续

此设置与 GitHub Copilot 和 AWS Codewhisperer 等其他编码助手的功能类似,并提供了对代码的更多隐私控制(例如,通过在私有服务器上运行 LLM),以及切换到最适合当前任务(或更便宜)的 LLM 的选项。

我的配置如下:

Visual Studio Code 截图

请注意,在右侧,是我刚刚从 CodeLlama70B 那里得到的答案。

测试

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

  • 代码生成:他们能够根据需求从零开始编写代码片段或完整模块。
  • 代码解释和文档:他们能否很好地阐释现有代码并创建有意义的文档。
  • 单元测试生成:它们能够自主地为现有代码生成单元测试。
  • 调试和错误纠正:高效地识别、解释和纠正代码错误或缺陷。
  • 重构/优化建议: LLM 有能力提出和实施代码改进,以提高质量和性能。
  • 代码审查协助:他们能够通过发现潜在问题并提出改进建议来协助代码审查。
  • 安全与最佳实践:熟练掌握安全漏洞检测和最佳实践实施。
  • 需求分析:能够理解自然语言中的软件需求,并将其转化为技术规范。虽然这并非严格意义上的“编码”,但两者密切相关,因为可能需要进一步完善不明确的需求,或以某种方式对其进行转换(例如,导出有限状态机,然后再用编程语言进行编码)。

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

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

这样做是为了评估LLM的自身能力,并有可能通过特定的系统提示进一步提高他们的能力。

结果

以下是测试结果总结:

总分

  • 不出所料, GPT-4最终胜出,在所有任务中都提供了最准确、最全面的帮助。
  • CodeLlama70BMixtral8x7B是势均力敌的竞争对手,在某些特定领域与 GPT-4 不相上下。
  • CodeLlama7B虽然排名垫底,但在某些任务中展现出了潜力,这表明定制化的提示可以提升其性能。它的优势在于体积小巧,可以在消费级硬件上运行。

以下是各类别的结果:

详细分数

一些任务示例

您可以在GitHub上找到本次测试使用的所有任务列表,包括每个 LLM 的提示和输出。请注意,我会不时更新该列表,添加新的测试,也可能添加新的 LLM。

以下是测试中使用的一些任务示例。

  • FEN 计数这项任务测试了模型对棋盘位置 FEN 字符串的理解。虽然所有四个 LLM 模型都对 FEN 有一定的了解,但只有 GPT-4 能够生成完全准确的代码。这或许是拥有更多“无关知识”反而能提升性能的一个例子。

  • 指南遵循情况:令人惊讶的是,所有LLM(学习学习模型)均未能检测到所有与编码风格指南的偏差,这表明在确保LLM能够有效辅助编码方面仍需改进。或许需要更好的提示机制,甚至采用红黄绿(RAG)方法,以确保LLM能够完全“理解”正确的指南。

  • 歧义分析:有时需求之间会相互冲突,可能导致混乱、返工或缺陷。这项特定任务旨在检验LLM是否能够识别冲突或重叠的需求。有趣的是,Mixtral8x7B在这项任务中的表现优于CodeLlama70B

结论

使用这些 LLM 设置个人编码助手可以缓解人们对基于云的解决方案中常见的数据和代码隐私问题的担忧。

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

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

本次评估使用的测试旨在涵盖广泛的任务,并让您了解不同LLM的性能。您可以将这些测试作为初步筛选,并根据您的具体用例进行定制测试,以便做出明智的选择。

有一点可以肯定:任何尚未使用人工智能助手进行编程的人,都必须尽快开始使用,以免落后。

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

奖励部分

在撰写本文期间,谷歌推出了新的 LLM Gemini Advance,与谷歌 Bard 相比有了显著的改进。

我已快速将其与 GPT-4 在 8 个类别中进行了比较。当然,还需要进行更多测试,但与此同时,以下是 Gemini Advanced 与 GPT-4 整体表现的初步对比:

GPT4 与 Gemini Advanced 的比较

涵盖以下八个领域:

GPT4 与 Gemini Advanced(详情)

这两个法学硕士项目非常接近!显然,谷歌的新法学硕士项目是“最佳法学硕士项目”桂冠的有力竞争者。

文章来源:https://dev.to/rdentato/choose-your-own-coding-assistant-11gi