这些是用于编码的最佳大型语言模型

2025-06-07

这些是用于编码的最佳大型语言模型

作为软件开发者,我们梦想着轻松编写代码,将复杂的问题转化为优雅高效的解决方案。⁤⁤⁤⁤然而,软件开发是一个复杂的过程,即使对于最有经验的开发人员来说,编写多行无错误的代码也是一项挑战。⁤⁤因此,结对编程(两个程序员同时合作并互相提供反馈)在软件开发中一直很流行。

⁤⁤传统上,一个程序员编写代码,另一个程序员审查每一行代码,提供实时反馈和建议。⁤⁤随着人工智能 (AI) 的快速普及,利用 AI 进行结对编程使单个开发人员能够快速编写代码,从而提高效率、改善代码质量、促进快速学习并提升整体生产力。

如今,开发者可以使用一系列基于大型语言模型 (LLM) 构建的工具,这些工具不仅提供基本的代码自动补全功能,还能提供强大的 AI 辅助编码体验。尽管 OpenAI 的 GPT-4o 在大多数编码基准测试中处于领先地位,但 Anthropic 的 Claude 和谷歌的 Gemini 也紧随其后。在本文中,我们将介绍可用于软件开发的最佳 LLM,并将这些 LLM 中的大多数与Sourcegraph 的 Cody交替使用。

热门 AI 编码助手概述

各种支持高级语言的编码工具可供使用,以提升编码体验。集成开发环境 (IDE) 通过在单一界面中提供一套全面的工具(包括代码编辑器、调试器和编译器),简化了编码流程。开发人员可以根据自己对各种编程语言的编码偏好轻松切换环境。

人工智能辅助编码的集成始于基本的自动完成功能,该功能可根据上下文预测和完成代码片段。后来,更高级的代码完成工具(例如Microsoft IntelliSenseKiteTabnine)也与先进的机器学习模型一起推出。目前一些最流行的、具有先进机器学习模型的编码工具包括:

  • Sourcegraph Cody是一款流行的工具,它使用多个 LLM 和高级代码搜索和分析功能来增强开发人员对代码和生成的理解。
  • GitHub Copilot 的概念源于 OpenAI 的 GPT-3 作为代码补全工具的成功,其首个技术预览版于 2021 年 6 月在 Visual Studio Code 开发环境中发布。GitHub Copilot 是一款专有工具,以订阅式服务的形式提供给开发者。自 2023 年以来,GitHub Copilot 一直使用 GPT 模型,例如 GPT-4。
  • Tabnine是一种专有工具,它利用人工智能为各种编程语言提供代码补全,有助于加快开发过程并提高生产力。

还有一些开源模型,例如 Code Llama。然而,它们大多数都使用相同的 LLM(例如OpenAI GPT-4Anthropic 的 ClaudeMistral AIGoogle Gemini等)来提供代码和聊天建议。在深入研究最适合您的开发工作流程的 LLM 之前,让我们先了解一下这些基于 Transformer 的大型模型的工作原理。

法学硕士 (LLM) 的运作方式

语言模型通常是机器学习中用于理解和生成自然语言的生成模型。大型语言模型拥有庞大的参数(以百万、数十亿甚至数万亿计),并使用名为“Transformer”的深度学习架构。这些模型在海量数据集上进行训练,以预测单词序列关注输入序列的概率。因此,这些模型使用自注意力机制来捕捉输入序列之间的依赖关系和关系,从而处理并生成数据序列。

有各种各样的大型语言模型和多模型 LLM 可供选择;其中一些最受欢迎的如下:

  1. OpenAI 的 GPT-4是一个拥有 1 万亿个参数的模型,显著提升了 GPT-3(1750 亿个参数)的水平。GPT-4 在许多基准测试中仍然保持领先地位。它提供了两个版本的上下文窗口,分别为 8,192 个和 32,768 个 token。
  2. Google 的 Gemini是LaMDAPaLM2的继任者。Gemini 1.5 可以处理多达 200 万个令牌。
  3. 人性的克劳德2,克劳德3.5十四行诗,关注道德考虑和安全。
  4. Meta Llama 3是开源模型,有 8B、70B 和 405B 版本。
  5. Mistral AI Mixtral 8 X 7B 和 8 X 22 B 模型以及其他变体模型也可供下载,用于一般用途和专业用途。Mixtral 也是一个开源法学硕士 (LLM)。

所有这些强大的模型都是在与代码相关的数据上进行训练的,可以生成代码并执行其他编码任务。

如何用 LLM 生成代码

大型语言模型使用自然语言描述或提示,并结合足够的上下文来执行自然语言处理任务。开发人员可以针对与编码相关的任务(例如生成、调试等)对此类模型进行微调。LLM 可以展示理解多种编程语言的语法、编码风格和编程实践的能力。

给定与任务相关的先前标记和提示,这些模型的权重会在这些数据集上进行微调,以预测序列中的下一个标记。这种微调有助于基于 Transformer 的模型生成连贯且与上下文相关的内容。

从 LLM 生成合理的输出取决于训练数据、模型参数和良好的提示。来自各种来源(例如开源存储库、文档、在线资源、编码书籍、教程和编码论坛(例如 Stack Overflow))的大量多样化代码相关数据集可用于训练代码生成。

像Cody这样的编码助手会使用不同的模型来执行各种代码相关任务,例如实时代码生成、代码补全和代码分析,从而帮助开发人员进行调试、重构、编写测试用例和代码优化。它们还提供聊天界面,方便开发人员提出代码相关问题、讨论和解决问题,并提供解决方案来激励他们。

法学硕士(LLM)比较

大型语言模型和基础模型(例如 GPT-4、Gemini、Claude 和 Mistral)功能多样且难以预测,这使得评估其性能变得复杂且具有挑战性。然而,许多组织设计了特定的基准测试,以提供标准化、严格的框架,用于比较 LLM 在核心语言相关任务中的能力。

大多数基准测试都包含精心设计的任务,例如问答、逻辑推理、数值推理、代码生成和其他自然语言处理任务。例如,大规模多任务语言理解 (MMLU)是一个综合性的基准测试,旨在测试法学硕士 (LLM) 理解和回答各种学科问题的能力。同样,GlueSuperGlue也是测试通用语言理解能力的热门基准测试。

基准测试还需要选择合适的指标进行比较;准确度、BLEU 分数和困惑度是最常见的指标,而其他一些基准测试也使用人类判断进行对比。

不同的挑战和基准测试用于评估不同目的的模型。一些基准测试,例如ARC(AI2 推理挑战赛),评估法学硕士 (LLM) 推理复杂、多步骤科学问题的能力。而诸如GSM8K(小学数学 8K)之类的基准测试则评估法学硕士 (LLM) 的数学问题解决能力。这些基准测试促进了竞争,并促进了具有与学校或大学毕业生同等知识水平的模型的开发。

大多数基准测试都侧重于语言和学术能力;然而,也有一些基准测试评估与编程相关的任务。下图来自Big Code Bench 排行榜,它通过各种实际且具有挑战性的编程任务来评估 LLM,包括基于自然语言描述的代码生成和代码补全。

BigCodeBench-Complete 排行榜

该排行榜显示,GPT-4 Turbo 位居榜首,其次是 Claude 3.5 Sonnet 和其他模型。Gemini 1.5、Mistral 和 GPT-4o 也位列前十。目前有多种基准测试和排行榜可供选择,以全面测试 LLM 的编码能力。以下是一些测试不同 LLM 的精选编码基准测试:

  1. EvalPlus 排行榜通过严格的测试来评估 AI 程序员。GPT4-Turbo 也位居榜首。
  2. 聊天机器人竞技场排行榜收集了超过 1,000,000 次人工配对比较,对 LLM 模型与 Bradley-Terry 模型进行排名,并以 Elo 等级显示模型评分。ChatGPT-4o 排名第一,其次是 Gemini-1.5 Pro、Claude 3.5 Sonnet、Meta Llama 和 Mistral AI Large,它们均位列前茅。
  3. Evo-Eval:由于其他基准测试的流行和历史原因,许多基准测试容易出现数据泄露,代码示例解决方案很容易在网上找到。Evo-Eval 将现有的编码基准测试(例如 HumanEval)转化为难度、创造力、精细度等领域的问题。下图展示了该模型的排名情况:编码基准、Evo-Eval、GPT-4 Turbo、Claude
  4. SpiderSQL-Eval是针对文本到 SQL 任务的大规模、复杂且跨领域的基准测试。Spider 衡量生成的 SQL 代码或查询从数据库中检索正确数据的效果。SQL-Eval 衡量 SQL 代码的复杂性和语义多样性,并确保生成的查询在语法上正确且有意义。排行榜上大多数领先的模型都使用了 GPT-4

LLM 模型的优势和劣势

每个 LLM 都有其优缺点。许多基准测试会测试其在不同场景下生成代码的能力,以了解 LLM 的优缺点。以下是对最常用 LLM 的优缺点的详细概述:

LLM 模型的优势和劣势
根据以上结果,我们对这些 LLMS 进行了以下排名:

  1. OpenAI 的 GPT-4 和 GPT-4o:它在多个基准测试中表现最佳
  2. Anthropic Claude 3.5 Sonnet:在大多数基准测试中仅次于 GPT-4 和 GPT-4o,并且在不同场景中也更准确
  3. 谷歌的 Gemini 1.5:它比 GPT-4 更注重事实,但缺乏想象力,在某些需要更具创造性的编码方法的场景中可能会失败。
  4. Mistral AI:速度快,但上下文窗口相对较短

随着这些模型架构的改进和更多数据的训练,这一排名可能会发生变化。因此,我们需要一个能够轻松切换这些模型的编码助手。Sourcegraph 的 AI 助手 Cody 可以与我们常用的 IDE 集成,并允许我们随意切换 LLM。

将法学硕士与 Cody 整合

LLM 种类繁多,各有优缺点。Sourcegraph 的 AI 助手 Cody 可以使用不同的 LLM 来帮助开发人员更高效地理解、编写和修复代码。使用多个高级 LLM 可以使 Cody 提供快速的单行和多行代码补全功能。如果您还没有使用过 Cody,可以免费注册开始使用。

安装 Cody
Cody 可与您选择的 IDE 和代码编辑器无缝集成;它可以集成到 Microsoft Visual Studio Code、JetBrains IntelliJ IDEA、PhpStorm、PyCharm、WebStorm、RubyMine、GoLand、Google Android Studio 和 NeoVim。对于 Visual Studio Code IDE 集成,您可以从市场获取 Cody 扩展。或者,您也可以在 VS Code 中点击“查看”>“扩展”,然后搜索“Cody AI”来
打开页面

从 VS Code Marketplace 安装 Cody
首次在 Microsoft Visual Studio 中安装 Cody 时,它通常是侧边栏中的最后一项。请检查图标,如下图所示。您需要使用创建帐户时使用的登录方式和 ID 进行登录。

登入

再次按下按钮。您将看到一个 Cody 聊天侧边栏,您可以使用它与 Cody 聊天,以生成代码、记录代码、解释部分代码、编写单元测试、查找代码异味等等。

科迪聊天吧

在 Cody 中切换 LLM
在 VS Code 中安装 Cody 后,您可以通过“Cody: Chat bar”提示框下方的下拉菜单选择不同的 LLM。如前所述,每种模型都有其优缺点。不过,Cody 已根据准确性、速度或两者兼顾的特点对不同的模型进行了分组。

科迪 (Cody) 的法学硕士 (LLM) 聊天栏

以下是Cody 支持的法学硕士 (LLM) 列表

人类的克劳德 开放人工智能GPT 谷歌双子座 米斯特拉尔人工智能
克劳德 3.5 十四行诗 GPT-4o 双子座 1.5 专业版 Mixtral-8x22B
克劳德3首十四行诗 GPT-4 Turbo 双子座 1.5 闪光 Mixtral 8x7B
克劳德3号作品 GPT-3.5 Turbo
克劳德 3 俳句

这些模型的集成为程序员提供了人工智能辅助软件开发的几个好处:

  • Cody 建议用户根据代码准确性、生成速度或平衡性选择不同的选项。这样,用户就可以轻松选择自己的偏好,而无需逐一研究每个 LLM。
  • LLM 使 Cody 能够提供更准确、更上下文感知的代码完成和调试。
  • 法学硕士 (LLM) 使 Cody 能够更好地理解代码语义。因此,它可以解释复杂的代码结构、算法和设计模式。

使用 Cody 中的 LLM 模型执行代码生成任务

以下代码示例说明了 Cody 集成如何允许尝试不同的 LLM 来解决编码问题:

生成算法来解决 Leet Code 问题:

让我们来实验一下这个问题:最长的无重复字符子字符串

Leet Code 问题:生成不重复字符的最长子字符串

复制描述,并使用 Claude 3.5 Sonnet 将其放入 Cody 的聊天或提示框中。Cody 将生成通过所有测试用例的解决方案。在本例中,我们编写的是 Python 代码。代码输出如下:

Anthropic Claude 3.5 Sonnet 生成带有解释和代码复杂性的详细输出

代码通过了所有测试用例。Claude 的生成过程非常详细,因为它会生成额外的细节,并解释代码在聊天中的工作方式以及空间和时间复杂度。不同的 LLM 会产生不同的输出格式。使用相同的提示符和 Gemini 1.5 Pro 生成以下代码。

使用 Gemini 生成的代码

使用 GPT-o,我们得到以下输出,其中包含代码解释和示例用法。

GPT4-o 生成带有解释和示例用法的详细输出

所有生成的运行时间都以毫秒为单位,并且生成的代码中不存在任何语法错误。

生成用于训练深度学习模型的代码
。训练人工智能模型是当今常见的编码任务。人工智能训练人工智能模型是自动化编码系统的另一个目标。使用以下提示符,我们可以生成可运行的 Python 代码来训练对象检测模型。

生成 Python 代码,使用 PyTorch 创建并训练用于对象检测的深度学习模型。代码应包含以下步骤:

  1. 导入必要的库和模块。

  2. 定义数据集和数据加载器。图像位于数据集文件夹中,注释则保存在 JSON 文件中,正如Coco 数据集网站中所述。

  3. 使用适合物体检测的预训练神经网络模型。

  4. 定义损失函数和优化器。

  5. 通过验证来实现训练循环。

  6. 保存训练好的模型。

确保代码注释良好并遵循可读性和效率的最佳实践。

这是由 Claude 3.5 Sonnet 模型生成的代码;部分代码被限制以减少冗长的代码。

import torch
import torchvision
...

# Step 1: Import necessary libraries and modules
import torch.optim as optim
from tqdm import tqdm

# Step 2: Define the dataset and data loaders
class CocoDataset(Dataset):
    def __init__(self, root_dir, annotation_file, transform=None):
        self.root_dir = root_dir
        self.coco = COCO(annotation_file)
        ...

# Create dataset and data loaders
train_dataset = CocoDataset(root_dir='dataset/train', annotation_file='annotations/instances_train2017.json')
val_dataset = CocoDataset(root_dir='dataset/val', annotation_file='annotations/instances_val2017.json')

train_loader = DataLoader(train_dataset, batch_size=2, shuffle=True, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))
val_loader = DataLoader(val_dataset, batch_size=2, shuffle=False, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))

# Step 3: Use a pretrained neural network model suitable for object detection
def get_model(num_classes):
    model = fasterrcnn_resnet50_fpn(pretrained=True)
    in_features = model.roi_heads.box_predictor.cls_score.in_features
    ...

# Step 4: Define the loss function and optimizer
params = [p for p in model.parameters() if p.requires_grad]
optimizer = optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)

# Step 5: Implement the training loop with validation
num_epochs = 10
for epoch in range(num_epochs):
    model.train()
    train_loss = 0
    for images, targets in tqdm(train_loader, desc=f"Epoch {epoch+1}/{num_epochs}"):
        ...

# Step 6: Save the trained model
torch.save(model.state_dict(), 'object_detection_model.pth')
print("Model saved successfully!")
Enter fullscreen mode Exit fullscreen mode

代码运行正常,只需稍作调整以纠正项目目录中的格式并修复一些小错误即可。该模型再次生成了额外的解释,例如之前解释代码生成和 LLM 模型所做的假设。GPT4-o、Gemini 和 Mixtral 也给出了非常相似的结果,需要对代码进行一些根本性的修改。

总结

在 IDE 中集成大型语言模型,极大地改变了软件开发方式,提高了效率,改善了代码质量,并促进了快速学习和原型设计。这些先进的工具使用 LLM 提供实时代码补全、代码生成、解释、调试和理解功能。

在所有热门模型中,GPT-4o 在许多编码基准测试中领先,而 Claude 3.5 Sonnet 在这些基准测试中名列前五。Claude 3.5 和 Mixtral-8X7B 速度极快,而 GPT-4o 和 Gemini 在多模态输入下表现良好。每种模型都有其优缺点,不同的场景可能需要不同的模型。

Cody 可帮助您找到最适合您编码场景和组织编码实践的 LLM。无论您追求速度、准确性还是平衡性,Cody 的灵活集成都能满足您的需求。您可以立即开始尝试多种 LLM(从 GPT-4 到 Claude 3.5,均可从Sourcegraph Cody直接获取),并根据您的编码问题选择最佳模型。

文章来源:https://dev.to/hackmamba/这些-are-the-best-large-language-models-for-coding-1co2
PREV
使用 Puppeteer 和 Node.js 抓取(几乎)任何内容的简介 TL;DR(30 秒)用强大的力量分解它...从页面内容抓取数据使用 Chrome Devtools 制作选择器使用屏幕截图进行调试其他提示限制谢谢!
NEXT
如何使用 Auth0 和 Cloudinary 通过 React 构建音乐流媒体应用 music-app-with-auth0-and-cloudinary