模型简介
模型特点
模型能力
使用案例
🚀 Devstral Small 1.1
Devstral是一款专为软件工程任务打造的大语言模型(LLM),由Mistral AI和All Hands AI合作开发🙌。它擅长利用工具探索代码库、编辑多个文件,为软件工程智能体提供强大支持。该模型在SWE - bench基准测试中表现卓越,成为此基准测试排名第一的开源模型。
它基于[Mistral - Small - 3.1](https://huggingface.co/mistralai/Mistral - Small - 3.1 - 24B - Base - 2503)进行微调,因此拥有长达128k token的上下文窗口。作为一个纯文本的编码智能体,在从Mistral - Small - 3.1
微调之前,其视觉编码器已被移除。
对于需要特定功能(如增加上下文、特定领域知识等)的企业,我们将推出超越Mistral AI社区贡献版本的商业模型。
在我们的[博客文章](https://mistral.ai/news/devstral - 2507)中了解更多关于Devstral的信息。
与[Devstral Small 1.0
](https://huggingface.co/mistralai/Devstral - Small - 2505)相比的更新内容:
- 性能提升,请参考基准测试结果。
Devstral Small 1.1
与OpenHands搭配使用时依然出色。这个新版本在处理其他提示和编码环境时具有更好的泛化能力。- 支持[Mistral的函数调用格式](https://mistralai.github.io/mistral - common/usage/tools/)。
✨ 主要特性
- 智能编码:Devstral专为智能编码任务设计,是软件工程智能体的理想选择。
- 轻量级:模型仅含240亿参数,体积小巧,可在单个RTX 4090或配备32GB内存的Mac上运行,适合本地部署和设备端使用。
- Apache 2.0许可证:开放许可,允许商业和非商业用途的使用与修改。
- 上下文窗口:拥有128k token的上下文窗口。
- 分词器:使用词汇量为131k的Tekken分词器。
📚 详细文档
基准测试结果
SWE - Bench
Devstral Small 1.1在SWE - Bench Verified测试中获得了**53.6%**的分数,比Devstral Small 1.0高出6.8%,比第二好的现有模型高出11.4%。
模型 | 智能体支架 | SWE - Bench Verified (%) |
---|---|---|
Devstral Small 1.1 | OpenHands Scaffold | 53.6 |
Devstral Small 1.0 | OpenHands Scaffold | 46.8 |
GPT - 4.1 - mini | OpenAI Scaffold | 23.6 |
Claude 3.5 Haiku | Anthropic Scaffold | 40.6 |
SWE - smith - LM 32B | SWE - agent Scaffold | 40.2 |
Skywork SWE | OpenHands Scaffold | 38.0 |
DeepSWE | R2E - Gym Scaffold | 42.2 |
在相同的测试支架(OpenHands,由All Hands AI提供🙌)下进行评估时,Devstral远超Deepseek - V3 - 0324和Qwen3 232B - A22B等更大的模型。
📦 安装指南
使用建议
我们建议将Devstral与[OpenHands](https://github.com/All - Hands - AI/OpenHands/tree/main)支架结合使用。你可以通过我们的API或本地运行来使用它。
API
按照这些[说明](https://docs.mistral.ai/getting - started/quickstart/#account - setup)创建Mistral账户并获取API密钥。
然后运行以下命令启动OpenHands Docker容器:
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
本地推理
该模型也可以使用以下库进行部署:
- [
vllm (推荐)
](https://github.com/vllm - project/vllm):详见[此处](#vllm - recommended) - [
mistral - inference
](https://github.com/mistralai/mistral - inference):详见[此处](#mistral - inference) transformers
:详见此处LMStudio
:详见此处- [
llama.cpp
](https://github.com/ggml - org/llama.cpp):详见此处 ollama
:详见此处
vLLM(推荐)
展开
我们建议使用[vLLM库](https://github.com/vllm - project/vllm)来实现生产就绪的推理管道。
安装
确保安装了[vLLM >= 0.9.1
](https://github.com/vllm - project/vllm/releases/tag/v0.9.1):
pip install vllm --upgrade
同时确保安装了[mistral_common >= 1.7.0
](https://github.com/mistralai/mistral - common/releases/tag/v1.7.0):
pip install mistral - common --upgrade
检查版本:
python -c "import mistral_common; print(mistral_common.__version__)"
你也可以使用现成的[Docker镜像](https://github.com/vllm - project/vllm/blob/main/Dockerfile)或[Docker Hub](https://hub.docker.com/layers/vllm/vllm - openai/latest/images/sha256 - de9032a92ffea7b5c007dad80b38fd44aac11eddc31c435f8e52f3b7404bbf39)上的镜像。
启动服务器 我们建议在服务器/客户端环境中使用Devstral。
- 启动服务器:
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}
# Devstral Small 1.1支持工具调用。如果你想使用工具,请按以下方式操作:
# tools = [ # 为vLLM定义工具
# {
# "type": "function",
# "function": {
# "name": "git_clone",
# "description": "克隆一个git仓库",
# "parameters": {
# "type": "object",
# "properties": {
# "url": {
# "type": "string",
# "description": "git仓库的URL",
# },
# },
# "required": ["url"],
# },
# },
# }
# ]
# data = {"model": model, "messages": messages, "temperature": 0.15, "tools": tools} # 将工具传递给负载。
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])
Mistral - inference
展开
我们建议使用mistral - inference快速试用Devstral。
安装 确保安装了mistral_inference >= 1.6.0:
pip install mistral_inference --upgrade
下载
from huggingface_hub import snapshot_download
from pathlib import Path
mistral_models_path = Path.home().joinpath('mistral_models', 'Devstral')
mistral_models_path.mkdir(parents = True, exist_ok = True)
snapshot_download(repo_id = "mistralai/Devstral - Small - 2507", allow_patterns = ["params.json", "consolidated.safetensors", "tekken.json"], local_dir = mistral_models_path)
聊天 你可以使用以下命令运行模型:
mistral - chat $HOME/mistral_models/Devstral --instruct --max_tokens 300
然后你可以输入任何你想要的提示。
Transformers
展开
为了充分利用transformers使用我们的模型,请确保安装了[mistral - common >= 1.7.0
](https://github.com/mistralai/mistral - common)以使用我们的分词器:
pip install mistral - common --upgrade
然后加载我们的分词器和模型并生成结果:
import torch
from mistral_common.protocol.instruct.messages import (
SystemMessage, UserMessage
)
from mistral_common.protocol.instruct.request import ChatCompletionRequest
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from huggingface_hub import hf_hub_download
from transformers import AutoModelForCausalLM
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
model_id = "mistralai/Devstral - Small - 2507"
SYSTEM_PROMPT = load_system_prompt(model_id, "SYSTEM_PROMPT.txt")
tokenizer = MistralTokenizer.from_hf_hub(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
tokenized = tokenizer.encode_chat_completion(
ChatCompletionRequest(
messages=[
SystemMessage(content = SYSTEM_PROMPT),
UserMessage(content = "<your - command>"),
],
)
)
output = model.generate(
input_ids = torch.tensor([tokenized.tokens]),
max_new_tokens = 1000,
)[0]
decoded_output = tokenizer.decode(output[len(tokenized.tokens):])
print(decoded_output)
LM Studio
展开
从以下任意一处下载权重:
- LM Studio GGUF仓库(推荐):https://huggingface.co/lmstudio - community/Devstral - Small - 2507 - GGUF
- 我们的GGUF仓库:https://huggingface.co/mistralai/Devstral - Small - 2507_gguf
pip install -U "huggingface_hub[cli]"
huggingface - cli download \
"lmstudio - community/Devstral - Small - 2507 - GGUF" \ # 或 mistralai/Devstral - Small - 2507_gguf
--include "Devstral - Small - 2507 - Q4_K_M.gguf" \
--local - dir "Devstral - Small - 2507_gguf/"
你可以使用LMStudio在本地部署模型:
- 下载并安装LM Studio
- 安装
lms cli ~/.lmstudio/bin/lms bootstrap
- 在bash终端中,在下载模型检查点的目录(例如
Devstral - Small - 2507_gguf
)中运行lms import Devstral - Small - 2507 - Q4_K_M.gguf
- 打开LM Studio应用程序,点击终端图标进入开发者选项卡。点击“选择模型加载”并选择
Devstral Small 2507
。切换状态按钮启动模型,在设置中切换“在本地网络上服务”为开启状态。 - 在右侧选项卡中,你将看到一个API标识符(应为
devstral - small - 2507
)和一个API地址。请记录此地址,用于OpenHands或Cline。
llama.cpp
展开
从huggingface下载权重:
pip install -U "huggingface_hub[cli]"
huggingface - cli download \
"mistralai/Devstral - Small - 2507_gguf" \
--include "Devstral - Small - 2507 - Q4_K_M.gguf" \
--local - dir "mistralai/Devstral - Small - 2507_gguf/"
然后使用llama.cpp服务器运行Devstral:
./llama - server -m mistralai/Devstral - Small - 2507_gguf/Devstral - Small - 2507 - Q4_K_M.gguf -c 0 # -c配置上下文大小,0表示模型默认值,此处为128k。
OpenHands(推荐)
启动服务器部署Devstral Small 1.1
确保你已按照上述说明启动了一个兼容OpenAI的服务器,如vLLM或Ollama。然后,你可以使用OpenHands与Devstral Small 1.1
进行交互。
在本教程中,我们通过以下命令启动了一个vLLM服务器:
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
你可以按照[此处](https://docs.all - hands.dev/modules/usage/installation)的说明安装OpenHands。
启动OpenHands最简单的方法是使用Docker镜像:
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
启动服务器部署Devstral Small 1.1
确保你已按照上述说明启动了一个兼容OpenAI的服务器,如vLLM或Ollama。然后,你可以使用OpenHands与Devstral Small 1.1
进行交互。
在本教程中,我们通过以下命令启动了一个vLLM服务器:
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
你可以按照[此处](https://docs.cline.bot/getting - started/installing - cline)的说明安装Cline。然后在设置中配置服务器地址。
查看设置
💻 使用示例
OpenHands:了解Mistral Common的测试覆盖率
我们可以启动OpenHands支架并将其链接到一个仓库,以分析测试覆盖率并识别覆盖率较低的文件。这里我们从公共的mistral - common
仓库开始。
仓库挂载到工作区后,我们给出以下指令:
检查仓库的测试覆盖率,然后创建测试覆盖率的可视化图表。尝试绘制几种不同类型的图表并保存为png文件。
智能体将首先浏览代码库以检查测试配置和结构。
然后它会设置测试依赖项并启动覆盖率测试:
最后,智能体编写必要的代码来可视化覆盖率,导出结果并将图表保存为png文件。
运行结束时,会生成以下图表:
并且模型能够解释结果:
Cline:构建一个视频游戏
首先在VSCode中初始化Cline并将其连接到之前启动的服务器。
我们给出以下指令来构建视频游戏:
创建一个将《太空侵略者》和《乒乓》混合的网页视频游戏。
遵循以下说明:
- 有两名玩家,一名在顶部,一名在底部。玩家控制一个横杆来反弹球。
- 第一名玩家使用“a”和“d”键控制,第二名玩家使用左右箭头控制。
- 侵略者位于屏幕中央。它们看起来应与《太空侵略者》中的侵略者相同。它们的目标是随机向玩家射击。球穿过它们时不会摧毁它们,这意味着侵略者永远不会死亡。
- 玩家的目标是躲避太空侵略者的射击,并将球击向对方玩家的边缘。
- 球在左右边缘反弹。
- 一旦球触及玩家的边缘,该玩家失败。
- 一旦玩家被射击击中3次或更多次,该玩家失败。
- 最后存活的玩家获胜。
- 在用户界面上显示玩家击球的次数和剩余生命值。
智能体将首先创建游戏:
然后它会解释如何启动游戏:
最后,游戏即可开始玩:
不要犹豫对Devstral进行迭代或提供更多信息以改进游戏!
📄 许可证
本项目采用Apache - 2.0许可证。
实验性FP8 W8A8量化
由stelterlab使用llm - compressor(版本0.6.1.dev25 + g70f93d32.d20250709)完成的实验性FP8 W8A8量化。
⚠️ 重要提示
官方的v0.9.1/v0.9.2容器对我来说无法正常工作 - 我使用的是直接通过pip install安装的版本。
原始模型卡片如下:
--- cut ---



