prompt ="Please write me a function that adds up two numbers"
data ={"model":"codestral-latest","messages":[{"role":"user","content": prompt
}],"temperature":0}
response =call_chat_instruct_endpoint(api_key, data)技术支持
prompt ="""
Sure, here is a simple functionin Python that adds up two numbers:```python
def add_two_numbers(num1, num2):return num1 + num2
You can use thisfunction like this:
result =add_two_numbers(5,3)print(result) # Outputs:8
This function takes two arguments, num1 and num2, and returns their sum.
def test_add_two_numbers():"""
suffix =""
data ={"model":"codestral-latest","prompt": prompt,"suffix": suffix,"temperature":0}
response =call_fim_endpoint(api_key, data)技术支持
prompt ="""
Please translate the following Python code to Javascript:```python
def add_two_numbers(num1, num2):return num1 + num2
You can use thisfunction like this:
result =add_two_numbers(5,3)print(result) # Outputs:8
This function takes two arguments, num1 and num2, and returns their sum."""
suffix =""
data ={"model":"codestral-latest","prompt": prompt,"suffix": suffix,"temperature":0}
response =call_fim_endpoint(api_key, data)技术支持
Ryan 是一名首席数据科学家,专注于使用大型语言模型构建 AI 应用。他是伦敦帝国理工学院自然语言处理与知识图谱方向的博士候选人,并在该校获得了计算机科学硕士学位。除数据科学之外,他还撰写每周的 Substack 时事通讯 The Limitless Playbook,分享来自全球顶尖思想家的一个可操作理念,并不时撰写关于核心 AI 概念的文章。
Codestral 常见问答
Codestral 是否可用于商业用途?⌄
Mistral AI 为希望将 Codestral 用于商业应用的企业提供企业级解决方案。请联系其销售团队了解更多信息。
代码生成在现代软件开发中越来越重要。Mistral AI 近期以其首个代码模型 Codestral 进入了这一领域。
本文将全面介绍 Codestral,带您了解其功能与特性。
我还将分享自己上手体验中的一些见解,包括我如何使用它来生成代码的示例。
如果您想进一步了解 Mistral,请查看这篇关于使用 Mistral 大模型的完整指南。
什么是 Codestral?
Codestral 是一款专为代码生成任务打造的开放权重生成式 AI 模型——“开放权重”意味着模型的已学习参数可免费用于研究和非商业用途,从而带来更高的可及性与可定制性。
Codestral 通过共享的指令与补全 API 端点,为开发者提供灵活的代码编写与交互方式。这意味着我们既可以用自然语言,也可以用代码片段向 Codestral 提供指令,它都能生成相应的代码输出。
Codestral 能同时理解代码与自然语言,使其在代码补全、基于自然语言描述的代码生成,乃至回答关于代码片段的问题等任务上都十分多用。这为构建可优化我们开发流程的 AI 工具带来了广泛可能。
Codestral 的关键特性
Codestral 提供了多项提升代码生成实用性的特性。我们来逐一看看。
精通 80 多种编程语言
Codestral 最令人印象深刻的能力之一,是其对 80 多种编程语言的熟练掌握。它不仅支持 Python、Java、C、C++、JavaScript 等主流语言,还覆盖特定领域或小众任务所用的更专业语言(如 Swift 或 Fortran)。
这种广泛的语言通晓能力,使 Codestral 在涉及多语言的项目中或在团队成员使用不同语言的情况下都能发挥价值。无论我们是在用 Python 做数据科学项目、用 JavaScript 构建 Web 应用,还是用 C++ 处理系统编程任务,Codestral 都能满足需求,在多种语言中提供代码生成支持。
代码生成
Codestral 的核心职能是代码生成。它旨在通过自动化函数补全、测试用例生成以及填充缺失代码段等任务,简化我们的编码流程。
中间填充机制可在处理复杂代码库或不熟悉的语言时提供帮助。如果效果理想,这些功能有望释放出更多时间用于更高层次的设计与问题求解,从而加快开发节奏并提升代码可靠性。
开放权重
Codestral 的一大亮点在于其开放权重属性。这意味着模型的已学习参数可自由用于研究与非商业用途。
这种开放性有利于协作生态的形成,开发者与研究人员可以尝试该模型、为特定任务进行微调,并为其持续发展作出贡献。
这不仅让强大的代码生成功能更为普及,也促进了 AI 社群的透明度与创新。
性能与效率
Mistral AI 称 Codestral 在代码生成的性能与延迟方面树立了新标准,并在某些基准中优于其他模型。其较大的上下文窗口(32k tokens)也有望增强其处理长距离代码补全任务的能力。
我们将在下一节更详细地讨论性能与效率。
Codestral 与其他模型的对比
为更好地理解 Codestral 的能力,我们将其与其他知名代码生成模型的表现进行对比。以下章节将深入具体的基准测试结果,并突出关键差异。
上下文窗口
先来看这些结果:
Codestral 在长距离代码补全任务(RepoBench)中表现突出,可能得益于其 32k token 的更大上下文窗口。更大的窗口使其能够考虑更多周边代码,从而做出更佳预测。Codestral 还在 Python 的 HumanEval 基准中表现优异,展现了其生成准确代码的能力。
尽管 Codestral 在特定领域表现强劲,其他模型(如 DeepSeek Coder)在不同基准(MBPP)上也表现出色。
尽管与其他模型相比,Codestral 是体量较小的 LLM 之一,但其在所有编程语言上的表现往往优于或至少可与更大型的模型(如 Llama 3 70B)比肩,覆盖代码生成与中间填充两类任务。
中间填充表现
接下来看看中间填充(FIM)的表现:
与 DeepSeek Coder 33B 相比,Codestral 22B 在三种编程语言(Python、JavaScript、Java)以及整体 FIM 平均分上均显著更高。这表明 Codestral 在理解代码上下文并准确填充缺失代码方面更为有效。
不过,该基准仅对比了 Codestral 与 DeepSeek Coder 33B 的表现,未包含 CodeLlama 70B 或 Llama 3 70B 的数据。这限制了比较范围,也限制了我们对 Codestral 相对其他模型表现的结论。
HumanEval
HumanEval 基准通过基于函数描述、让模型生成能通过人工编写的单元测试的代码来衡量代码生成的准确性。下面看看 Codestral 在 HumanEval 中与其他模型的对比:
Codestral 在 Python、bash、Java 和 PHP 上表现最高。虽然其他模型在不同语言上更为出色,但从整体平均表现看,Codestral 领先,展现了其在多语言环境下生成准确代码的强大能力。
Codestral 的使用场景
Codestral 的多样化能力可应用于软件开发生命周期中的诸多实际场景。下面探讨一些 Codestral 能产生显著影响的典型用例。
代码补全与生成
代码补全与生成是 Codestral 的主要用例之一。开发者可以利用 Codestral 基于周边上下文给出补全建议,从而更快更准确地编写代码。
此外,Codestral 还能根据自然语言描述或指令生成完整的代码片段,进一步简化开发流程并提升生产力。
下面是我让 Codestral 生成内容的一个简单示例:
单元测试生成
Codestral 也能简化对现有代码的单元测试生成。该功能可通过自动化测试生成流程,为开发者节省大量时间与精力,从而帮助提升代码质量并降低缺陷概率,确保软件项目稳健且易于维护。
我让 Codestral 为上面生成的函数写一个简单的单元测试:
代码翻译与重构
Codestral 的多语言能力不仅限于代码生成。它可以在不同编程语言之间进行代码翻译,使开发者能够处理以不熟悉语言编写的现有代码库。
此外,Codestral 还能协助进行代码重构,以提升可读性与可维护性,确保项目遵循最佳实践与编码规范。
我让 Codestral 将上述 Python 代码翻译为 JavaScript:
交互式代码助理
开发者可以与 Codestral 进行交互,以获取调试帮助、理解不熟悉的代码,并寻找问题的最佳解法。这种交互式辅助对于从事复杂项目或正在学习新编程语言与框架的开发者尤为有价值,为其整个开发过程提供支持与指导。
如何上手 Codestral
Codestral 为我们提供了多种使用方式:
Codestral 的局限
尽管 Codestral 在多类代码生成任务上展现出潜力,但我们也需正视其局限:
总结
通过自动化代码补全与测试生成等任务,Codestral 有望释放我们的时间,用于更复杂的问题求解与设计工作。
尽管其全面影响尚待观察,但在我们探索 AI 与软件开发的未来时,Codestral 值得持续关注。
如果您想进一步学习 AI,请查看这条包含六门课程的技能路径:AI Fundamentals。