ONNX 模型库
返回模型

说明文档

mistralai/Devstrall-Small-2505 模型卡片

Devstral 是由 Mistral AIAll Hands AI 🙌 合作开发的、面向软件工程任务的智能体 LLM。Devstral 擅长使用工具探索代码库、编辑多个文件,并为软件工程智能体提供强大支持。该模型在 SWE-bench 上取得了卓越的性能,使其成为该基准测试中排名第一的开源模型。

它是从 Mistral-Small-3.1 微调而来的,因此具有长达 128k tokens 的长上下文窗口。作为编程智能体,Devstral 仅支持文本,在从 Mistral-Small-3.1 微调之前,视觉编码器已被移除。

对于需要专业化能力(增加上下文、领域特定知识等)的企业,我们将发布超越 Mistral AI 为社区贡献的商业模型。

在我们的博客文章中了解更多关于 Devstral 的信息。

主要特性:

  • 智能体编程:Devstral 专为擅长智能体编程任务而设计,是软件工程智能体的绝佳选择。
  • 轻量级:仅有 240 亿参数的紧凑大小,Devstral 足够轻量,可在单个 RTX 4090 或配备 32GB RAM 的 Mac 上运行,是本地部署和设备端使用的合适模型。
  • Apache 2.0 许可证:开放许可证,允许用于商业和非商业用途的使用和修改。
  • 上下文窗口:128k 上下文窗口。
  • 分词器:使用 Tekken 分词器,词表大小为 131k。

基准测试结果

SWE-Bench

Devstral 在 SWE-Bench Verified 上取得 46.8% 的分数,比之前的开源 SoTA 高出 6%。

模型 脚手架 SWE-Bench Verified (%)
Devstral 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

在相同的测试脚手架(由 All Hands AI 🙌 提供的 OpenHands)下评估时,Devstral 超越了 Deepseek-V3-0324 和 Qwen3 232B-A22B 等更大的模型。

SWE Benchmark

使用方法

我们推荐将 Devstral 与 OpenHands 脚手架一起使用。 您可以通过我们的 API 或本地运行来使用它。

API

按照这些说明创建 Mistral 账户并获取 API 密钥。

然后运行以下命令启动 OpenHands docker 容器。

export MISTRAL_API_KEY=<MY_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

本地推理

您也可以在本地运行该模型。可以使用 LMStudio 或下面列出的其他提供商。

启动 Openhands 您现在可以通过 openhands 与从 LM Studio 服务的模型进行交互。使用 docker 启动 openhands 服务器

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://0.0.0.0:3000 启动。在浏览器中打开它,您将看到一个 AI Provider Configuration 标签页。 现在您可以通过点击左侧栏的加号与智能体开始新对话。

该模型也可以使用以下库进行部署:

OpenHands (推荐)

启动服务器部署 Devstral-Small-2505

确保您按照上述说明启动了 OpenAI 兼容的服务器,如 vLLM 或 Ollama。然后,您可以使用 OpenHands 与 Devstral-Small-2505 进行交互。

在本教程中,我们启动了一个运行以下命令的 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://<your-server-url>:8000/v1

启动 OpenHands

您可以按照这里的说明安装 OpenHands。

启动 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 UI。

连接到服务器

访问 OpenHands UI 时,系统会提示您连接到服务器。您可以使用高级模式连接到您之前启动的服务器。

填写以下字段:

  • Custom Modelopenai/mistralai/Devstral-Small-2505
  • Base URLhttp://<your-server-url>:8000/v1
  • API Keytoken(或您用于启动服务器的任何其他令牌,如果有的话)

使用由 Devstral 驱动的 OpenHands

现在您可以在 OpenHands 中通过开始新对话来使用 Devstral Small。让我们构建一个待办事项列表应用。

<details> <summary>待办事项列表应用</summary

  1. 让我们用以下提示词让 Devstral 生成应用:
Build a To-Do list app with the following requirements:
- Built using FastAPI and React.
- Make it a one page app that:
   - Allows to add a task.
   - Allows to delete a task.
   - Allows to mark a task as done.
   - Displays the list of tasks.
- Store the tasks in a SQLite database.

Agent prompting

  1. 让我们看看结果

您应该看到智能体构建应用并能够探索它生成的代码。

如果它没有自动完成,请让 Devstral 部署应用或手动部署,然后转到前端 URL 部署以查看应用。

Agent working App UI

  1. 迭代

现在您有了初步结果,可以通过让智能体改进它来进行迭代。例如,在生成的应用中,我们可以点击任务将其标记为已完成,但添加复选框会改善用户体验。您还可以要求它添加编辑任务的功能,或添加按状态过滤任务的功能。

享受使用 Devstral Small 和 OpenHands 构建应用吧!

</details>

LMStudio (推荐用于量化模型)

从 huggingface 下载权重:

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 在本地服务该模型。

  • 下载 LM Studio 并安装
  • 安装 lms cli ~/.lmstudio/bin/lms bootstrap
  • 在 bash 终端中,在下载模型检查点的目录(例如 mistralai/Devstral-Small-2505_gguf)中运行 lms import devstralQ4_K_M.ggu
  • 打开 LMStudio 应用程序,点击终端图标进入开发者标签页。点击选择要加载的模型并选择 Devstral Q4 K M。切换状态按钮以启动模型,在设置中将 Serve on Local Network 切换为开启。
  • 在右侧标签页中,您将看到一个 API 标识符,应该是 devstralq4_k_m,以及 API Usage 下的 api 地址。记下这个地址,我们将在下一步中使用它。

启动 Openhands 您现在可以通过 openhands 与从 LM Studio 服务的模型进行交互。使用 docker 启动 openhands 服务器

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

点击第二行的"see advanced setting"。 在新标签页中,将 advanced 切换为开启。将 custom model 设置为 mistral/devstralq4_k_m,Base URL 设置为上一步从 LM Studio 获取的 api 地址。将 API Key 设置为 dummy。点击 save changes。

vLLM (推荐)

我们推荐使用 vLLM 库来使用此模型,以实现生产就绪的推理管道。

安装

确保安装 vLLM >= 0.8.5

pip install vllm --upgrade

这样做应该会自动安装 mistral_common >= 1.5.5

检查:

python -c \"import mistral_common; print(mistral_common.__version__)\"

您也可以使用现成的 docker 镜像docker hub

服务器

我们建议在服务器/客户端设置中使用 Devstral。

  1. 启动服务器:
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
  1. 要 ping 客户端,您可以使用一个简单的 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-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\": \"<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\"])

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-2505\", allow_patterns=[\"params.json\", \"consolidated.safetensors\", \"tekken.json\"], local_dir=mistral_models_path)

Python

您可以使用以下命令运行模型:

mistral-chat $HOME/mistral_models/Devstral --instruct --max_tokens 300

然后您可以用任何内容提示它。

Ollama

您可以使用 Ollama CLI 运行 Devstral。

ollama run devstral

Transformers

要充分利用我们的模型与 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 mistral_common.tokens.tokenizers.tekken import SpecialTokenPolicy
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=\"<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)

onnx-community/Devstral-Small-2505

作者 onnx-community

text-generation onnxruntime-genai
↓ 0 ♥ 0

创建时间: 2025-07-23 05:51:19+00:00

更新时间: 2025-07-23 06:03:21+00:00

在 Hugging Face 上查看

文件 (9)

.gitattributes
README.md
chat_template.jinja
genai_config.json
model.onnx ONNX
model.onnx.data
special_tokens_map.json
tokenizer.json
tokenizer_config.json