Devstral Small 1.1:专为软件工程打造的智能助手
在软件开发的世界里,效率和质量是开发者们永恒追求的目标。为了帮助开发者更好地完成任务,Mistral AI 和 All Hands AI 联合推出了一款强大的工具——Devstral Small 1.1,这是一个专为软件工程任务设计的智能助手,旨在协助开发者更高效地处理编程工作。
Devstral Small 1.1 是什么?
Devstral Small 1.1 是一个大型语言模型(LLM),它经过特别训练,能够处理各种软件工程相关的任务,比如代码库的探索、多文件编辑以及各种编程任务等。它基于 Mistral-Small-3.1 模型进行微调,具有长达 128k 的上下文窗口,这意味着它可以处理更长的文本内容,这对于理解和修改大型代码库非常重要。
这个模型是纯文本的,并且在微调时移除了视觉编码器,专注于文本相关的任务。对于需要特定能力(如更长的上下文窗口或特定领域知识)的企业,Mistral AI 还计划提供商业版本的模型。
与 Devstral Small 1.0 的区别
相比于 Devstral Small 1.0,1.1 版本性能得到了显著提升。它在 SWE-bench 验证测试中取得了 53.6% 的成绩,比 1.0 版本提高了 6.8%,比排名第二的模型高出 11.4%。此外,1.1 版本与 OpenHands 的兼容性更好,并且在其他提示和编码环境中具有更好的泛化能力。
Devstral Small 1.1 的关键特性
1. 代理编码能力
Devstral Small 1.1 最突出的特点之一就是它的代理编码能力,这使得它在软件工程代理方面表现出色。它能够像一个有经验的开发者一样,理解任务需求并生成相应的代码,极大地提高了开发效率。
2. 轻量化设计
尽管具有强大的功能,但 Devstral Small 1.1 的参数量仅为 240 亿,这使得它可以在单个 RTX 4090 或配备 32GB 内存的 Mac 上轻松运行。这种轻量化设计使得它非常适合本地部署和设备端使用。
3. 开源许可
Devstral Small 1.1 采用 Apache 2.0 许可证,这意味着无论是商业用途还是非商业用途,都可以自由使用和修改这个模型,为开发者提供了极大的灵活性。
4. 超长上下文窗口
其 128k 的上下文窗口使得 Devstral Small 1.1 能够处理更长的文本序列,这对于理解大型代码库和复杂的编程任务至关重要。
5. 特殊的分词器
它使用了 Tekken 分词器,拥有 131k 的词汇量,这有助于更好地理解和生成代码相关的文本。
Devstral Small 1.1 的性能表现
在 SWE-bench 测试中,Devstral Small 1.1 展现出了卓越的性能。在相同的测试框架下,它甚至超过了比它大得多的模型,如 Deepseek-V3-0324 和 Qwen3 232B-A22B。
模型 | 测试框架 | SWE-bench 验证 (%) |
---|---|---|
Devstral Small 1.1 | OpenHands 框架 | 53.6 |
Devstral Small 1.0 | OpenHands 框架 | 46.8 |
GPT-4.1-mini | OpenAI 框架 | 23.6 |
Claude 3.5 Haiku | Anthropic 框架 | 40.6 |
SWE-smith-LM 32B | SWE-agent 框架 | 40.2 |
如何使用 Devstral Small 1.1
你可以通过 Mistral 的 API 或者本地部署的方式来使用 Devstral Small 1.1。以下是几种常见的使用方法:
使用 API
-
创建一个 Mistral 账户并获取 API 密钥,按照 账户设置指南 进行操作。
-
配置 OpenHands 容器:
export MISTRAL_API_KEY=<MY_KEY>
mkdir -p ~/.openhands && echo ‘{“language”:”en”,”agent”:”CodeActAgent”,”max_iterations”:null,”security_analyzer”:null,”confirmation_mode”:false,”llm_model”:”mistral/devstral-small-2507″,”llm_api_key”:”‘$MISTRAL_API_KEY'”,”remote_runtime_resource_factor”:null,”github_token”:null,”enable_default_condenser”:true}’ > ~/.openhands-state/settings.json
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.48-nikolaik
docker run -it –rm –pull=always
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.48-nikolaik
-e LOG_ALL_EVENTS=true
-v /var/run/docker.sock:/var/run/docker.sock
-v ~/.openhands:/.openhands
-p 3000:3000
–add-host host.docker.internal:host-gateway
–name openhands-app
docker.all-hands.dev/all-hands-ai/openhands:0.48
### 本地推理
Devstral Small 1.1 可以通过以下几种库进行本地部署:
- **vLLM(推荐)**
- **mistral-inference**
- **transformers**
- **LMStudio**
- **llama.cpp**
- **ollama**
以下是使用 vLLM 的详细步骤:
#### 安装
确保安装了 `vLLM >= 0.9.1` 和 `mistral_common >= 1.7.0`:
```bash
pip install vllm --upgrade
pip install mistral-common --upgrade
启动服务器
运行以下命令启动服务器:
vllm serve mistralai/Devstral-Small-2507 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
使用客户端
使用 Python 脚本发送请求:
import requests
import json
from huggingface_hub import hf_hub_download
url = "http://<your-server-url>:8000/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": "Bearer token"}
model = "mistralai/Devstral-Small-2507"
def load_system_prompt(repo_id: str, filename: str) -> str:
file_path = hf_hub_download(repo_id=repo_id, filename=filename)
with open(file_path, "r") as file:
system_prompt = file.read()
return system_prompt
SYSTEM_PROMPT = load_system_prompt(model, "SYSTEM_PROMPT.txt")
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": [
{
"type": "text",
"text": "<your-command>",
},
],
},
]
data = {"model": model, "messages": messages, "temperature": 0.15}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])
使用 OpenHands
OpenHands 是一个强大的工具,可以帮助你更好地利用 Devstral Small 1.1 的能力。以下是使用 OpenHands 的步骤:
启动服务器
确保你已经启动了一个兼容 OpenAI 的服务器,如 vLLM 或 Ollama:
vllm serve mistralai/Devstral-Small-2507 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
服务器地址通常为 http://<your-server-url>:8000/v1
。
启动 OpenHands
使用 Docker 启动 OpenHands:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.48-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.48-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/.openhands \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.48
然后,你可以在 http://localhost:3000
访问 OpenHands 的用户界面。
连接到服务器
在 OpenHands 的用户界面中,点击“连接到服务器”,并填写以下信息:
-
自定义模型: openai/mistralai/Devstral-Small-2507
-
基础 URL: http://<your-server-url>:8000/v1
-
API 密钥: token
(或你在启动服务器时使用的密钥)
使用 Cline
Cline 是另一个可以与 Devstral Small 1.1 一起使用的工具。以下是使用步骤:
启动服务器
类似于 OpenHands,启动一个兼容 OpenAI 的服务器:
vllm serve mistralai/Devstral-Small-2507 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
服务器地址通常为 http://<your-server-url>:8000/v1
。
启动 Cline
安装 Cline 并配置服务器地址:
# 安装 Cline
pip install cline
# 配置服务器地址
cline config set server http://<your-server-url>:8000/v1
cline config set api_key token
实际应用案例
使用 OpenHands 分析测试覆盖率
你可以使用 OpenHands 和 Devstral Small 1.1 来分析代码库的测试覆盖率。例如,分析公共代码库 mistral-common
的测试覆盖率:
-
将代码库挂载到工作区。
-
给出指令:
检查代码库的测试覆盖率,然后创建测试覆盖率的可视化图表。尝试绘制几种不同类型的图表并保存为 png。
-
Devstral Small 1.1 会首先浏览代码库,检查测试配置和结构。
-
它会设置测试依赖项并启动覆盖率测试。
-
最后,它会编写必要的代码来可视化覆盖率,导出结果并保存图表:
-
覆盖率分布图 -
覆盖率饼图 -
覆盖率总结图
-
-
模型还会解释结果,帮助你更好地理解测试覆盖率的情况。
使用 Cline 创建混合视频游戏
你可以使用 Cline 和 Devstral Small 1.1 来创建一个结合太空侵略者和乒乓球元素的网页视频游戏:
-
在 VSCode 中初始化 Cline 并连接到服务器。
-
给出创建游戏的指令:
创建一个结合太空侵略者和乒乓球元素的网页视频游戏。 游戏规则: - 两名玩家分别位于屏幕顶部和底部,使用控制条来反弹球。 - 第一名玩家使用 "a" 和 "d" 键,第二名玩家使用左右箭头键。 - 侵略者位于屏幕中央,外观类似于太空侵略者。它们的目标是随机向玩家射击。它们不会被球摧毁,球会穿过它们。 - 玩家的目标是躲避侵略者的射击,并将球发送到对方玩家的边缘。 - 球会在左右边缘反弹。 - 一旦球接触到玩家的边缘,该玩家就会输掉。 - 一旦玩家被射击三次或更多次,该玩家就会输掉。 - 最后一名存活的玩家获胜。 - 在用户界面显示玩家触球次数和剩余生命值。
-
Devstral Small 1.1 会首先创建游戏的基本结构。
-
它会解释如何启动游戏。
-
最后,游戏准备就绪,可以开始玩了。
通过这些实际应用案例,你可以看到 Devstral Small 1.1 在软件工程任务中的强大能力。它不仅可以帮助你分析代码库,还可以协助你创建复杂的软件项目。无论你是独立开发者还是大型团队的一员,Devstral Small 1.1 都是一个非常有价值的工具。