各位朋友们,新一代的人工智能开发工具来了。
这款产品名叫“ Codestral”,可以视为让每个普通人都能生成和理解代码的工具,它是长期争夺 AI 自动化软件开发阵地的最新一轮“攻击” 。
Codestral 是由法国人工智能初创公司 Mistral AI 开发,这家公司受到了微软的技术与投资双重支持,推出了这款专为代码生成而设计的代码大模型。
网址:https://mistral.ai/news/codestral/
Codestral 是一种开放生成式人工智能 (GenAI) 模型,专门为代码生成任务而设计。
根据美国国家电信和信息管理局称,开放式模型允许开发人员在之前的工作基础上进行构建和调整,从而扩大人工智能工具在小型企业中的可用性。
Codestral 已经接受过 80 多种编程语言的训练,其中包括一些最流行的语言,例如Python、Java、C、C++、JavaScript和Bash等。
Codestral 功能特点
Mistral 展示的测试结果表明,Codestral 在 Python、SQL等语言的各种基准测试中优于其它模型。
Codestral 可以完成编码功能、编写测试,并使用中间填充机制完成任何部分代码。Mistral 公司称,与 Codestral 交互将有助于提高开发人员的编码水平,并降低出现Bug、错误和安全的风险。
另外,Codestral 在Swift和Fortran等更特殊的编程语言上也表现良好。这种广泛的语言基础确保 Codestral 能够在各种编码环境和项目中,为开发人员提供非常有效的帮助。
Tabnine 研发主管Meital Zilberstein 使用后说:
“作为首款以开发人员为中心的GenAI工具的研发人员,我很高兴将 Mistral 的新代码模型集成到我们的聊天机器人产品中。它的性能给我留下了深刻的印象。尽管它的尺寸相对紧凑,但它提供的结果与我们向客户提供的大型语言模型相当。我们测试了几个关键功能,包括代码生成、测试生成、文档、入职流程等。在每种情况下,该模型都超出了我们的预期。”
Continue.dev 首席技术官兼联合创始人Nate Sesti 这样表示:
“以前,从来没有过如此速度和质量兼具的通用自动化代码完成模型,这对于世界各地的开发人员来说,这将会是一个重大改变。”
安装与使用方式
Codestral 可在Hugging Face上下载,并且也可以通过专用节点 (codestral.mistral.ai) 或常用 API 节点 (api.mistral.ai) 直接使用。
该模型业已经与LlamaIndex和LangChain等应用程序框架以及Continue.dev和 Tabnine的VS Code和JetBrains IDE 插件集成。
Mistral正在逐步整合在 Apache 2.0 和 MNPL 双许可证下发布的两个产品系列,将继续在 Apache 2.0 下进行建模与编码。
Codestral 与其他模型的比较
为了更好地了解 Codestral 的功能,让我们将其性能与其他著名的代码生成模型进行比较。以下部分将深入探讨具体的基准测试结果并重点介绍主要差异。
上下文窗口
首先来看一下这些结果:
首先来看一下这些结果:
Codestral 因其在长距离代码补全任务 (RepoBench) 中的出色表现而脱颖而出,这可能是由于其上下文窗口更大,有 32k 个标记。这个更大的窗口使其能够考虑更多周围的代码,从而做出更好的预测。Codestral 在 Python 的 HumanEval 基准测试中也表现出色,展示了其生成准确代码的能力。
虽然 Codestral 在特定领域表现出色,但 DeepSeek Coder 等其他模型在不同基准测试 (MBPP) 上表现出色。
尽管与其他模型相比,Codestral 是最小的 LLM 模型之一,但在代码生成和填充中间任务中,它的性能通常比所有编程语言中的 Llama 3 70B 等更大的模型更好,或至少可以与之媲美。
填补中间表现
来看填充中间 (FIM) 的性能:
来看填充中间 (FIM) 的性能:
与 DeepSeek Coder 33B 相比,Codestral 22B 在所有三种编程语言(Python、JavaScript 和 Java)以及整体 FIM 平均值中表现出明显更高的性能。这表明 Codestral 在理解代码上下文和准确填充缺失代码段方面效果更好。
人力评估
HumanEval 基准测试通过测试模型根据函数描述生成通过人工编写的单元测试的代码的能力来衡量代码生成的准确性。
以下是 Codestral 与 HumanEval 基准测试中的相关模型比较:
HumanEval 基准测试通过测试模型根据函数描述生成通过人工编写的单元测试的代码的能力来衡量代码生成的准确性。
以下是 Codestral 与 HumanEval 基准测试中的相关模型比较:
以下是 Codestral 与 HumanEval 基准测试中的相关模型比较:
Codestral 在 Python、bash、Java 和 PHP 中表现出色。虽然其他模型在不同语言中表现出色,但 Codestral 的总体平均性能领先,展示了其在多种语言中生成准确代码的强大能力。
代码生成与相关用例
Codestral 的多种功能适用于软件开发生命周期内的各种实际应用。让我们来探索 Codestral 可以产生重大影响的一些突出用例。
代码完成和生成
Codestral 在代码补全和生成方面表现出色,这是其主要用例之一。开发者可以利用 Codestral 根据周围环境建议代码补全,从而实现更快、更准确的编码。
此外,Codestral 可以根据自然语言描述或指令生成整个代码片段,进一步简化开发流程并提高生产力。
下面是要求 Codestral 生成的一个简单示例:
-
-
-
-
-
-
-
-
-
-
-
-
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)
Codestral 在代码补全和生成方面表现出色,这是其主要用例之一。开发者可以利用 Codestral 根据周围环境建议代码补全,从而实现更快、更准确的编码。
此外,Codestral 可以根据自然语言描述或指令生成整个代码片段,进一步简化开发流程并提高生产力。
下面是要求 Codestral 生成的一个简单示例:
-
-
-
-
-
-
-
-
-
-
-
-
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)
此外,Codestral 可以根据自然语言描述或指令生成整个代码片段,进一步简化开发流程并提高生产力。
下面是要求 Codestral 生成的一个简单示例:
-
-
-
-
-
-
-
-
-
-
-
-
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)
下面是要求 Codestral 生成的一个简单示例:
-
-
-
-
-
-
-
-
-
-
-
-
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 = "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)
单元测试生成
Codestral 还简化了现有代码的单元测试生成。此功能通过自动化测试生成过程节省了开发人员宝贵的时间和精力。因此,它有助于提高代码质量并降低出现错误的可能性,确保软件项目保持稳健且可维护。
我要求 Codestral 为上面生成的函数生成一个简单的单元测试:
prompt = """
Sure, here is a simple function in Python that adds up two numbers:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
Codestral 还简化了现有代码的单元测试生成。此功能通过自动化测试生成过程节省了开发人员宝贵的时间和精力。因此,它有助于提高代码质量并降低出现错误的可能性,确保软件项目保持稳健且可维护。
我要求 Codestral 为上面生成的函数生成一个简单的单元测试:
prompt = """
Sure, here is a simple function in Python that adds up two numbers:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
我要求 Codestral 为上面生成的函数生成一个简单的单元测试:
prompt = """
Sure, here is a simple function in Python that adds up two numbers:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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 = """
Sure, here is a simple function in Python that adds up two numbers:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
代码翻译与重构
Codestral 的多语言功能不仅限于代码生成。它还可以在不同的编程语言之间转换代码,让开发者能够使用用不熟悉的语言编写的现有代码库。
此外,Codestral 可以帮助重构代码以提高可读性和可维护性,确保项目符合最佳实践和编码标准。
我要求 Codestral 将上面的 Python 代码翻译成 JavaScript:
prompt = """
Please translate the following Python code to Javascript:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
Codestral 的多语言功能不仅限于代码生成。它还可以在不同的编程语言之间转换代码,让开发者能够使用用不熟悉的语言编写的现有代码库。
此外,Codestral 可以帮助重构代码以提高可读性和可维护性,确保项目符合最佳实践和编码标准。
我要求 Codestral 将上面的 Python 代码翻译成 JavaScript:
prompt = """
Please translate the following Python code to Javascript:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
此外,Codestral 可以帮助重构代码以提高可读性和可维护性,确保项目符合最佳实践和编码标准。
我要求 Codestral 将上面的 Python 代码翻译成 JavaScript:
prompt = """
Please translate the following Python code to Javascript:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
我要求 Codestral 将上面的 Python 代码翻译成 JavaScript:
prompt = """
Please translate the following Python code to Javascript:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
prompt = """
Please translate the following Python code to Javascript:
```python
def add_two_numbers(num1, num2):
return num1 + num2
You can use this function 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)
交互式代码助手
开发者还可以与 Codestral 互动,以获得调试帮助、了解不熟悉的代码并找到编码问题的最佳解决方案。这种交互式帮助对于从事复杂项目或学习新编程语言和框架的开发人员尤其有价值,可在整个开发过程中为他们提供支持和指导。
如何开始使用 Codestral
Codestral 为开发者们提供了多种使用方式:
-
Le Chat 对话界面:可以通过 Mistral AI 的免费对话界面Le Chat访问 Codestral 的指导版本,从而让我们能够与模型自然地进行交互。
相关网址:https://chat.mistral.ai/chat
-
直接下载和测试:我们可以在Mistral AI 非生产许可证下从Hugging Face下载 Codestral 模型用于研究和测试目的。
相关网址:https://mistral.ai/news/mistral-ai-non-production-license-mnpl/
-
专用端点:也可用特定节点 (codestral.mistral.ai) ,特别是对于那些将 Codestral 集成到 IDE 中的人。此节点具有个人 API 密钥和单独的速率限制,目前在测试期间免费。
-
La Plateforme 集成:Codestral 集成到 Mistral AI 的 La Plateforme 中,我们可以在其中构建应用程序并通过标准 API 节点 (api.mistral.ai) 访问模型,按令牌计费。这适用于研究、批量查询或第三方应用程序开发。
-
与开发人员工具的集成:Codestral 集成到各种工具中以提高开发者的工作效率,包括用于构建代理应用程序的 LlamaIndex 和 LangChain,以及用于 VSCode 和 JetBrains 环境的 Continue.dev 和 Tabnine。
开发者还可以与 Codestral 互动,以获得调试帮助、了解不熟悉的代码并找到编码问题的最佳解决方案。这种交互式帮助对于从事复杂项目或学习新编程语言和框架的开发人员尤其有价值,可在整个开发过程中为他们提供支持和指导。
如何开始使用 Codestral
Codestral 为开发者们提供了多种使用方式:
-
Le Chat 对话界面:可以通过 Mistral AI 的免费对话界面Le Chat访问 Codestral 的指导版本,从而让我们能够与模型自然地进行交互。
相关网址:https://chat.mistral.ai/chat
-
直接下载和测试:我们可以在Mistral AI 非生产许可证下从Hugging Face下载 Codestral 模型用于研究和测试目的。
相关网址:https://mistral.ai/news/mistral-ai-non-production-license-mnpl/
-
专用端点:也可用特定节点 (codestral.mistral.ai) ,特别是对于那些将 Codestral 集成到 IDE 中的人。此节点具有个人 API 密钥和单独的速率限制,目前在测试期间免费。
-
La Plateforme 集成:Codestral 集成到 Mistral AI 的 La Plateforme 中,我们可以在其中构建应用程序并通过标准 API 节点 (api.mistral.ai) 访问模型,按令牌计费。这适用于研究、批量查询或第三方应用程序开发。
-
与开发人员工具的集成:Codestral 集成到各种工具中以提高开发者的工作效率,包括用于构建代理应用程序的 LlamaIndex 和 LangChain,以及用于 VSCode 和 JetBrains 环境的 Continue.dev 和 Tabnine。
如何开始使用 Codestral
Codestral 为开发者们提供了多种使用方式:
-
Le Chat 对话界面:可以通过 Mistral AI 的免费对话界面Le Chat访问 Codestral 的指导版本,从而让我们能够与模型自然地进行交互。
相关网址:https://chat.mistral.ai/chat
-
直接下载和测试:我们可以在Mistral AI 非生产许可证下从Hugging Face下载 Codestral 模型用于研究和测试目的。
相关网址:https://mistral.ai/news/mistral-ai-non-production-license-mnpl/
-
专用端点:也可用特定节点 (codestral.mistral.ai) ,特别是对于那些将 Codestral 集成到 IDE 中的人。此节点具有个人 API 密钥和单独的速率限制,目前在测试期间免费。
-
La Plateforme 集成:Codestral 集成到 Mistral AI 的 La Plateforme 中,我们可以在其中构建应用程序并通过标准 API 节点 (api.mistral.ai) 访问模型,按令牌计费。这适用于研究、批量查询或第三方应用程序开发。
-
与开发人员工具的集成:Codestral 集成到各种工具中以提高开发者的工作效率,包括用于构建代理应用程序的 LlamaIndex 和 LangChain,以及用于 VSCode 和 JetBrains 环境的 Continue.dev 和 Tabnine。
Codestral 为开发者们提供了多种使用方式:
-
Le Chat 对话界面:可以通过 Mistral AI 的免费对话界面Le Chat访问 Codestral 的指导版本,从而让我们能够与模型自然地进行交互。
相关网址:https://chat.mistral.ai/chat
-
直接下载和测试:我们可以在Mistral AI 非生产许可证下从Hugging Face下载 Codestral 模型用于研究和测试目的。
相关网址:https://mistral.ai/news/mistral-ai-non-production-license-mnpl/
-
专用端点:也可用特定节点 (codestral.mistral.ai) ,特别是对于那些将 Codestral 集成到 IDE 中的人。此节点具有个人 API 密钥和单独的速率限制,目前在测试期间免费。
-
La Plateforme 集成:Codestral 集成到 Mistral AI 的 La Plateforme 中,我们可以在其中构建应用程序并通过标准 API 节点 (api.mistral.ai) 访问模型,按令牌计费。这适用于研究、批量查询或第三方应用程序开发。
-
与开发人员工具的集成:Codestral 集成到各种工具中以提高开发者的工作效率,包括用于构建代理应用程序的 LlamaIndex 和 LangChain,以及用于 VSCode 和 JetBrains 环境的 Continue.dev 和 Tabnine。
Le Chat 对话界面:可以通过 Mistral AI 的免费对话界面Le Chat访问 Codestral 的指导版本,从而让我们能够与模型自然地进行交互。
相关网址:https://chat.mistral.ai/chat
直接下载和测试:我们可以在Mistral AI 非生产许可证下从Hugging Face下载 Codestral 模型用于研究和测试目的。
相关网址:https://mistral.ai/news/mistral-ai-non-production-license-mnpl/
专用端点:也可用特定节点 (codestral.mistral.ai) ,特别是对于那些将 Codestral 集成到 IDE 中的人。此节点具有个人 API 密钥和单独的速率限制,目前在测试期间免费。
La Plateforme 集成:Codestral 集成到 Mistral AI 的 La Plateforme 中,我们可以在其中构建应用程序并通过标准 API 节点 (api.mistral.ai) 访问模型,按令牌计费。这适用于研究、批量查询或第三方应用程序开发。
与开发人员工具的集成:Codestral 集成到各种工具中以提高开发者的工作效率,包括用于构建代理应用程序的 LlamaIndex 和 LangChain,以及用于 VSCode 和 JetBrains 环境的 Continue.dev 和 Tabnine。
局限性
虽然 Codestral 在各种代码生成任务中表现出色,但我们必须认识到它的局限性:
基准性能:尽管 Codestral 在某些基准测试中表现良好,但实际性能可能会因任务的复杂性和特定的编程语言而有所不同。建议在生产中完全依赖它之前,在我们自己的环境中进行彻底的测试。
有限的上下文窗口(在某些情况下):虽然 Codestral 拥有一个用于远程代码完成的 32k 令牌的上下文窗口,但某些用例可能需要更大的上下文才能完全掌握我们代码库的复杂性。
潜在偏见:与任何基于现有代码训练的 AI 模型一样,Codestral 可能会继承训练数据中存在的偏见。这可能会导致生成无意中延续不良模式或做法的代码。
不断发展的技术:Codestral 仍是一种相对较新的模型,随着进一步开发和完善,其功能和局限性可能会发生变化。我们必须及时了解最新的研究和发布,以便对其使用做出最明智的决定。
结语
Codestral 可以通过自动执行代码完成和测试生成等任务来让我们有更多的时间来解决更复杂的问题和设计工作。
虽然其影响还有待观察,但在我们探索人工智能在软件开发中的未来时,Codestral 是一个值得关注的发展方向。
作者:楚龙
下载地址:
https://nicolascoolman.eu/zh-TW/download/codestral-modele-dintelligence-artificielle/