模型简介
模型特点
模型能力
使用案例
语言:
- 英语
- 法语
- 德语
- 西班牙语
- 葡萄牙语
- 意大利语
- 日语
- 韩语
- 俄语
- 中文
- 阿拉伯语
- 波斯语
- 印尼语
- 马来语
- 尼泊尔语
- 波兰语
- 罗马尼亚语
- 塞尔维亚语
- 瑞典语
- 土耳其语
- 乌克兰语
- 越南语
- 印地语
- 孟加拉语
许可证: Apache-2.0 库名称: vllm 推理: false 基础模型:
- mistralai/Devstrall-Small-2505 额外授权说明: >- 若想了解我们如何处理您的个人数据,请阅读我们的隐私政策。 任务标签: 文本生成
Devstral-Small-2505
Devstral是由Mistral AI与All Hands AI合作开发的面向软件工程任务的智能大语言模型。该模型擅长利用工具探索代码库、编辑多文件以及驱动软件工程代理,在SWE-bench基准测试中表现卓越,成为该基准测试排名第一的开源模型。
该模型基于Mistral-Small-3.1微调,具备长达128k token的上下文窗口。作为编码代理,Devstral为纯文本模型,在从Mistral-Small-3.1
微调前已移除视觉编码器。
对于需要增强功能(如扩展上下文、领域特定知识等)的企业用户,我们将发布超越社区版的商业模型。
更多详情请参阅我们的博客文章。
核心特性:
- 智能编码: 专为代理式编码任务优化,是构建软件工程代理的理想选择
- 轻量化: 仅240亿参数的紧凑体型,可在RTX 4090或32GB内存的Mac设备上运行,适合本地部署
- Apache 2.0许可: 允许商业及非商业用途的开放许可
- 上下文窗口: 128k token容量
- 分词器: 采用131k词汇量的Tekken分词器
基准测试结果
SWE-Bench测试
Devstral在SWE-Bench Verified测试中获得46.8%的得分,较此前开源最佳模型提升6%。
模型 | 框架 | SWE-Bench Verified (%) |
---|---|---|
Devstral | 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 |
在相同测试框架(All Hands AI提供的OpenHands框架)下,Devstral表现远超Deepseek-V3-0324和Qwen3 232B-A22B等更大规模模型。
使用指南
推荐配合OpenHands框架使用,可通过API或本地运行两种方式。
API调用
- 按照指引创建Mistral账号获取API密钥
- 执行以下命令启动OpenHands容器:
export MISTRAL_API_KEY=<我的密钥>
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
mkdir -p ~/.openhands-state && echo '{"language":"en","agent":"CodeActAgent","max_iterations":null,"security_analyzer":null,"confirmation_mode":false,"llm_model":"mistral/devstral-small-2505","llm_api_key":"'$MISTRAL_API_KEY'","remote_runtime_resource_factor":null,"github_token":null,"enable_default_condenser":true}' > ~/.openhands-state/settings.json
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
本地推理
支持以下部署方式:
vLLM(推荐)
: 参见此处mistral-inference
: 参见此处transformers
: 参见此处LMStudio
: 参见此处llama.cpp
: 参见此处ollama
: 参见此处
OpenHands(推荐方案)
部署Devstral-Small-2505服务
确保已启动vLLM或Ollama等兼容OpenAI的服务器。以下以vLLM为例:
vllm serve mistralai/Devstral-Small-2505 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
服务地址格式应为:http://<服务器地址>:8000/v1
启动OpenHands
安装指南见此处,推荐使用Docker镜像:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.38
访问http://localhost:3000
进入OpenHands界面。
连接服务器
在高级设置中填写:
- 自定义模型:
openai/mistralai/Devstral-Small-2505
- 基础URL:
http://<服务器地址>:8000/v1
- API密钥:
token
(或实际使用的令牌)
使用Devstral构建待办应用
构建步骤
- 输入提示:
构建具有以下功能的待办应用:
- 使用FastAPI和React实现
- 单页应用功能:
- 添加任务
- 删除任务
- 标记完成状态
- 任务列表展示
- 数据存储于SQLite数据库
- 查看生成结果
代理将自动构建应用,可浏览生成的代码。如需部署可手动执行或指示代理完成。
- 迭代优化
例如为任务添加复选框改善用户体验,或增加编辑、筛选功能。
vLLM(推荐方案)
安装
确保安装vLLM ≥ 0.8.5
:
pip install vllm --upgrade
服务部署
- 启动服务:
vllm serve mistralai/Devstral-Small-2505 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
- 客户端调用示例:
import requests
import json
from huggingface_hub import hf_hub_download
url = "http://<服务器地址>:8000/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": "Bearer token"}
model = "mistralai/Devstral-Small-2505"
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": "<指令内容>",
},
],
},
]
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"])
Mistral推理
安装
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-2505", allow_patterns=["params.json", "consolidated.safetensors", "tekken.json"], local_dir=mistral_models_path)
交互测试
mistral-chat $HOME/mistral_models/Devstral --instruct --max_tokens 300
Transformers集成
确保安装mistral-common ≥ 1.5.5
:
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-2505"
tekken_file = hf_hub_download(repo_id=model_id, filename="tekken.json")
SYSTEM_PROMPT = load_system_prompt(model_id, "SYSTEM_PROMPT.txt")
tokenizer = MistralTokenizer.from_file(tekken_file)
model = AutoModelForCausalLM.from_pretrained(model_id)
tokenized = tokenizer.encode_chat_completion(
ChatCompletionRequest(
messages=[
SystemMessage(content=SYSTEM_PROMPT),
UserMessage(content="<指令内容>"),
],
)
)
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)
LMStudio部署
- 下载GGUF格式模型:
pip install -U "huggingface_hub[cli]"
huggingface-cli download \
"mistralai/Devstral-Small-2505_gguf" \
--include "devstralQ4_K_M.gguf" \
--local-dir "mistralai/Devstral-Small-2505_gguf/"
- 通过LMStudio加载模型并启用本地网络服务
- 记录API地址用于OpenHands连接
llama.cpp运行
下载模型后执行:
./llama-cli -m Devstral-Small-2505_gguf/devstralQ4_K_M.gguf -cnv
Ollama集成
ollama run devstral
应用示例:分析Mistral Common测试覆盖率
- 挂载代码库后输入指令:
检查仓库测试覆盖率并生成可视化图表。尝试多种图表类型并保存为PNG。
- 代理将依次执行:
- 代码库结构分析
- 测试依赖配置
- 覆盖率测试执行
- 可视化代码编写
最终生成覆盖率分析图表:


